python - 我可以在形状匀称的多边形中设置点的顺序吗?

标签 python gis shapely

我有一组 Polygon 对象,需要以可重复的方式遍历它们的每条边。我的首选方法是从距离边界框左下角最近的点逆时针旋转。

我可以通过以下方式确保多边形点是逆时针的:

polygon = shapely.geometry.polygon.orient(polygon)

我可以使用以下方法找到我想要的起点:

polygon = shapely.geometry.Polygon(...)
lower_left = shapely.geometry.Point(bbox[:2])
nearest_pt = min(self.polygon.exterior.coords, 
                  key=lambda x: shapely.geometry.Point(x).distance(lower_left))

我的问题是如何使 Polygon 对象的 LinearRing 从那个角开始?

最佳答案

这可行,但可能效率不高。

perimeter = polygon.exterior.coords
new_coords = []
first_vertex = nearest_pt  # as found in the question above
two_tours = itertools.chain(perimeter, perimeter)
for v in two_tours:
    if shapely.geometry.Point(v) == first_vertex:
        new_coords.append(v)
        while len(new_coords) < len(perimeter):
            new_coords.append(two_tours.next())
        break
polygon = shapely.geometry.Polygon(new_coords)

关于python - 我可以在形状匀称的多边形中设置点的顺序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36474168/

相关文章:

python - Geopandas - 在与多边形相交处分割线,在新链接属性中保留多边形 ID

Python MetaTrader5 指标

python - 如何在python中将double保存到文件?

python - 无法获取 Geohash 的边界框

mysql - 查找 'X' 公里(或英里)内的城市

python - 同一个列表的多次迭代

python - 以匀称的方式沿多线插值每个 X 距离

python - 在 OpenCV python 中将白色像素转换为黑色

python - GAE : ImportError while using google-auth

javascript - 如何使用leafletjs计算当前速度、平均速度和总距离?