Shapely中的distance
方法返回两个几何对象之间的最小距离。没有方法可以返回最大距离。但是有一个hausdorff_distance
方法可以返回...很好:
将Hausdorff distance( float )返回到 other 几何对象。两个几何之间的Hausdorff距离是任一几何上的一个点可以从最近点到另一个几何上的最远距离。
单个点和LineString之间的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
但这是较慢。
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中还有另一个我可以用来更快地计算它的库吗?还是我可以自己实现的算法?