【问题标题】:Create a list of rectangles from a flat list of coordinates in Shapely从 Shapely 中的平面坐标列表创建矩形列表
【发布时间】:2021-06-06 00:38:29
【问题描述】:

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)]

我想用示例中所示的坐标在 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,以便我以后可以将它们绘制成图形并单独识别它们?我是新来的。

【问题讨论】:

  • 有人回答然后删除了?
  • @Georgy 我也想知道如何以 Python 的方式将每个矩形的这些坐标作为形状对象传递。
  • 我认为 poly = geometry.Polygon(pointList) 其中 pointList 是您的子列表之一,应该只适用于 1.7a2 以上。从来没有使用过匀称的你..试一试。参考文献stackoverflow.com/questions/30457089/…
  • 谢谢。我试过了,但在这种情况下,当我做 poly.area 时,我只得到 49.0 的面积。所以只取最后一个矩形。

标签: python polygon rectangles shapely


【解决方案1】:

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

这会给:

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-09-02
  • 2020-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多