4

在 geotools 中,您可以使用 Geometry 类中的距离函数找到两个几何之间的距离。Geometry 有 Point 子类,但 Geometry 没有线段子类。然而,有一个 LineSegment 类派生自 LineString,它不是 Geometry 类的子类。我尝试使用 JTS,但似乎 JTS 仅适用于笛卡尔坐标系。

问题:如何在 WGS84 crs 中找到 LineSegment 和 Point 之间的最短距离(以米为单位)。

请注意:我知道在不使用地理工具的情况下可以在 SO 上找到答案。由于我们在项目中使用 geotools 并且代码可维护性非常重要,因此我想在 geotools 中执行此操作。

4

2 回答 2

0

简单的解决方案(假设您的点靠近线是使用 JTS 找到最近的点(暂时忽略地球的曲率),然后使用GeodeticCalculator找到两点之间的距离。对于短距离,这应该是美好的。

如果您需要更高的精度,则需要重新投影线并指向平面投影,并直接使用 JTS 在该投影中进行所有计算。

PS LineString 扩展几何(检查您拥有哪种几何)。

于 2014-07-18T11:46:36.770 回答
0

在我看来,您必须使用地理工具点和线串将 WGS84 坐标转换为 TM 坐标。这是我博客中关于 CRS 类地理工具的一些示例代码

http://blog.naver.com/tommybee/50154157186

...然后计算线串上点和点之间的距离。您最终可以通过将原始坐标参考系统从 TM(Transverse Meractor) 转换为 WGS84 来获得结果

https://github.com/geotools/geotools/blob/master/docs/src/main/java/org/geotools/jts/SnapToLine.java

关于距离的更多讨论,您可以查看下面的 geotools 用户站点。它就是其中之一

http://osgeo-org.1560.x6.nabble.com/position-on-LineString-that-is-closest-to-Point-td4322083.html

于 2017-05-03T01:44:28.437 回答