从 Shapely 中的平面坐标列表创建矩形列表

Create a list of rectangles from a flat list of coordinates in 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 以便我以后可以将它们绘制成图形并分别识别它们?我是新手。

您可以将 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)

这会给出: