Python 点和线串之间的最大距离

Python 点和线串之间的最大距离,python,performance,distance,shapely,Python,Performance,Distance,Shapely,Shapely中的方法返回两个几何对象之间的最小距离。没有返回最大距离的方法。但是有一个方法返回。。。嗯: 将(浮点数)返回给另一个几何对象。两个几何图形之间的Hausdorff距离是任一几何图形上的点与另一几何图形上的最近点之间的最远距离 单点和线串之间的Hausdorff距离实际上是两者之间的最大距离 from shapely.geometry import Point, LineString ls = LineString(pt for pt in zip(range(1000), [0

Shapely中的方法返回两个几何对象之间的最小距离。没有返回最大距离的方法。但是有一个方法返回。。。嗯:

将(浮点数)返回给另一个几何对象。两个几何图形之间的Hausdorff距离是任一几何图形上的点与另一几何图形上的最近点之间的最远距离

单点和线串之间的Hausdorff距离实际上是两者之间的最大距离

from shapely.geometry import Point, LineString

ls = LineString(pt for pt in zip(range(1000), [0]*1000))  # [(0, 0), (1, 0), ..., (999, 0)]
pt = Point((-1, 0))

pt.hausdorff_distance(ls)  # 1000.0
但这是缓慢的(er)。

for i in range(10000):
    pt.hausdorff_distance(ls)
# 3.76 s

for i in range(10000):
    pt.distance(ls)
# 0.550 s

为什么计算点与线串之间的最大距离比计算最小距离慢7倍?我有一个强烈的直觉,两种计算的最佳实现将在大约相等的时间内运行。有没有Python中的另一个库可以用来更快地计算?或者是一个我可以自己实现的算法

您是否尝试过查看每个计算是如何在shapely中实现的?这将证实或否定您对其相对性能的看法。性能上的差异可能是因为计算了
距离
,而
hausdorff_距离
计算了输入几何体的距离。作为替代方案,我打算为
线串中的每个点计算
距离
,并取最大值,但是在本地测试后,我发现对于数千个点的字符串来说速度太慢。查看
线段
计算@Georgy提供的距离计算,以及文件中较低的距离计算,最大距离的计算实际上应该比最小距离的计算快得多,因为最大距离总是在
行字符串的顶点处。