【发布时间】:2019-12-07 23:35:26
【问题描述】:
我有一个Shapely 多边形列表和一个点,如下所示:
from shapely.geometry import Point, Polygon
polygons = [Polygon(...), Polygon(...), ...]
point = Point(2.5, 5.7)
我想在列表中找到离该点最近的多边形。我已经知道 object.distance(other) 函数返回两个几何形状之间的最小距离,我考虑计算循环中的所有距离以找到最近的多边形:
polygons = [Polygon(...), Polygon(...), ...]
point = Point(2.5, 5.7)
min_dist = 10000
closest_polygon = None
for polygon in polygons:
dist = polygon.distance(point)
if dist < min_dist:
min_dist = dist
closest_polygon = polygon
我的问题是:有没有更有效的方法?
【问题讨论】:
-
多边形是固定的还是可以动态变化的?
-
@ma3oun 他们是固定的。
-
它们是否都有相同数量的顶点?
-
这有什么帮助吗:Looking for a fast way to find the polygon a point belongs to using Shapely?我从未使用过建议的 R-tree,所以我不知道它是否对您的情况有所帮助。
-
顺便说一句,您可以将当前代码更简洁地编写为
closest_polygon = min(polygons, key=point.distance)。