首页 > 解决方案 > 从 Shapely 中的平面坐标列表创建矩形列表

问题描述

不能回答我的问题。

我有一个坐标列表,其中每 5 个连续坐标定义一个矩形的坐标,例如,

mylist=[(0, 7),(4, 7),(4, 12),(0, 12),(0, 7),(7, 1),(10, 1),(10, 8),(7, 8),(7, 1),(4, 8),(10, 8),(10, 12), (4, 12),(4, 8),(0, 0),(7, 0),(7, 7),(0, 7),(0, 0)]

我想用示例中显示的这些坐标在 Shapely 中创建四个矩形。这四个矩形也应该是唯一可识别的。此外,列表大小可以是可变的,因为可以多于或少于当前坐标数。

编辑:

此时,我有 4 个列表:

[[(0, 7), (4, 7), (4, 12), (0, 12), (0, 7)],
 [(7, 1), (10, 1), (10, 8), (7, 8), (7, 1)],
 [(4, 8), (10, 8), (10, 12), (4, 12), (4, 8)],
 [(0, 0), (7, 0), (7, 7), (0, 7), (0, 0)]] 

现在我的问题是如何将这 4 组坐标传递给 shapely,以便以后可以将它们绘制成图形并单独识别它们?我是新来的。

标签: pythonpolygonrectanglesshapely

解决方案


您可以将 Shapely 对象存储在字典中,然后在需要时随时使用它们,如下所示:

from shapely.geometry import Polygon

your_list = [[(0, 7), (4, 7), (4, 12), (0, 12), (0, 7)],
            [(7, 1), (10, 1), (10, 8), (7, 8), (7, 1)],
            [(4, 8), (10, 8), (10, 12), (4, 12), (4, 8)],
            [(0, 0), (7, 0), (7, 7), (0, 7), (0, 0)]] 

your_dict = {}

for i,sublist in enumerate(your_list):
    
    your_dict[i] = Polygon(sublist)

然后绘制它们,您可以通过your_dict这种方式使用它们:

plt.figure()

for key,your_polygon in your_dict.items():
    
    plt.plot(*your_polygon.exterior.xy)

这将给出:

在此处输入图像描述


推荐阅读