从 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)
这会给出:
我有一个坐标列表,其中每 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)
这会给出: