【问题标题】:Shortest distance between a line segment and a point in WGS84 crs using geotools api使用geotools api在WGS84 crs中线段和点之间的最短距离
【发布时间】:2014-09-08 16:17:11
【问题描述】:

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

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

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

【问题讨论】:

  • 在我看来,您必须将 WGS84 坐标转换为 TM

标签: gis geotools wgs84


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    在我看来,您必须使用地理工具点和线串将 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-25
      • 1970-01-01
      • 2011-02-18
      • 2010-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多