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

2024-04-26 17:42:02 发布

您现在位置:Python中文网/ 问答频道 /正文

This没有回答我的问题

我有一个坐标列表,其中每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)]

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

编辑:

在这一点上,我有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是个新手


Tags: 图形编辑示例列表定义绘制this矩形
1条回答
网友
1楼 · 发布于 2024-04-26 17:42:02

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

这将使:

enter image description here

相关问题 更多 >