【发布时间】:2015-01-04 18:16:37
【问题描述】:
我正在从事我的大学项目,我使用 GeoTools 库。我的任务是实现考虑空间数据的 AGNES(凝聚嵌套)算法。为此,我需要计算空间对象之间的距离,例如点、曲线、多边形。
可以转换为Curve的LineString是一个GeoTools类,它继承了包括distance()在内的Geometry方法。我的问题是如何计算两个 LineString 对象之间的距离?它是连接两条曲线的最短线段吗?另外,我很好奇多边形的相似之处。
【问题讨论】:
-
两个多边形之间的最短距离很容易,因为最短距离必须是从顶点到顶点。您所需要的只是两个顶点集上的 2 个嵌套循环。两条曲线之间的最短距离是连接它们的最短线段的距离。这要复杂得多,因为它取决于曲线的类型。我怀疑他们会使用贝塞尔曲线来近似曲线,然后用数值求解得到的方程。您必须查看源代码。
-
太棒了!谢谢你的回答。这正是我想知道的。
-
不要忘记 GeoTools 是开源的,因此您可以查看代码以确定如何计算某些内容。除非您使用投影坐标系 distance() 可能不是正确的答案。
-
恐怕@PaulBoddington 错了。两个多边形之间的最小距离可以在多边形边缘之一内实现。例如三角形A:(-1,0),(1,0)(-1,-1)与三角形B的距离:(0,1),(-1,-2),(1 ,2) 分别在 A 和 B 的点 (0,0) 和 (0,1) 中实现。点 (0,0) 在 (-1,0),(1,0) 定义的边内。