Sal*_*aFG 5 python polygon shapely
我有一个Shapely多边形列表和一个像这样的点:
from shapely.geometry import Point, Polygon
polygons = [Polygon(...), Polygon(...), ...]
point = Point(2.5, 5.7)
Run Code Online (Sandbox Code Playgroud)
我想在列表中找到最接近该点的多边形。我已经知道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
Run Code Online (Sandbox Code Playgroud)
我的问题是:有没有更有效的方法来做到这一点?
有一个更短的方法,例如
from shapely.geometry import Point, Polygon
import random
from operator import itemgetter
def random_coords(n):
return [(random.randint(0, 100), random.randint(0, 100)) for _ in range(n)]
polys = [Polygon(random_coords(3)) for _ in range(4)]
point = Point(random_coords(1))
min_distance, min_poly = min(((poly.distance(point), poly) for poly in polys), key=itemgetter(0))
Run Code Online (Sandbox Code Playgroud)
正如乔治提到的(++太棒了!)甚至更简洁:
min_poly = min(polys, key=point.distance)
Run Code Online (Sandbox Code Playgroud)
但距离计算通常是计算密集型的
| 归档时间: |
|
| 查看次数: |
2884 次 |
| 最近记录: |