使用geotools api在线段和WGS84 crs中的点之间的最短距离

时间:2014-07-17 17:05:21

标签: gis geotools wgs84

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

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

请注意:我知道在没有使用geotools的情况下,可以在SO上找到答案。由于我们在项目中使用geotools并且代码可维护性非常重要,我想在geotools中进行。

2 个答案:

答案 0 :(得分:0)

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

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

PS LineString扩展了几何(检查你有哪种几何)。

答案 1 :(得分:0)

在我看来,你必须使用geotools point和linestring将WGS84 coords转换为TM coords。这是我的博客关于CRS类geotools的一些示例代码

  

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

...然后计算线串上点与点之间的距离。 最终可以通过将原始协调参考系统转换为TM(横向测量仪)的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