使用 Shapely 将多边形顶点作为点进行迭代?

问题描述 投票:0回答:1

Shapely 的

Polygon
LinearRing
不可迭代(如果我没记错历史的话,不再可迭代)。我经常需要将它们的顶点作为
Point
对象(而不是元组)进行迭代,而我当前的解决方案似乎很麻烦。有没有比这更简单的方法,无需 NumPy 魔法?

poly = Polygon([Point(0, 0), Point(1, 0), Point(1, 1), Point(0, 1)])
vertices = MultiPoint(np.column_stack(poly.exterior.coords.xy))

for p in vertices.geoms:
  print(p)
python polygon shapely vertices
1个回答
1
投票

MultiPoint
构造函数可以采用可迭代的元组,因此您可以使用
Polygon.exterior.coords
(返回
CoordinateSequence
)来执行此操作并跳过所有 NumPy/coords.xy 魔法。

from shapely import Polygon, Point, MultiPoint

poly = Polygon([Point(0, 0), Point(1, 0), Point(1, 1), Point(0, 1)])
points = MultiPoint(poly.exterior.coords)

for point in points.geoms:
    print(point)

输出:

POINT (0 0)
POINT (1 0)
POINT (1 1)
POINT (0 1)
POINT (0 0)
© www.soinside.com 2019 - 2024. All rights reserved.