【问题标题】:How to get the edges of a polygon as LineStrings?如何将多边形的边缘作为 LineStrings?
【发布时间】:2021-08-31 17:45:20
【问题描述】:

我在一个列表中有几个正方形多边形,如何直接获取代表它们四个边的所有 LineStrings 的列表?例如,使用polygon.exterior.coords 进行列表理解。

import geopandas as gpd
frame = gpd.read_file("my_file.geojson")
liste = frame["geometry"].tolist()

【问题讨论】:

  • 显而易见的答案是在列表理解中使用exterior(或boundary),但你已经在问题中写了这个,这让我想知道你到底在问什么。
  • 如何用exterior给出的每个多边形的坐标生成4条边的LineStrings? boundary 为每个多边形提供了一个唯一的 LineString。

标签: python geopandas shapely


【解决方案1】:

这样的?

from shapely.geometry import Polygon, LineString

poly = Polygon([[0, 0], [1, 0], [1, 1], [0, 0]])
b = poly.boundary.coords
linestrings = [LineString(b[k:k+2]) for k in range(len(b) - 1)]
print([list(ls.coords) for ls in linestrings])

【讨论】:

    【解决方案2】:

    试试这个

    frame[0]['geometry']['type']  # expect 'Polygon', or other geometry type
    

    如果是'Polygon',你可以通过这个命令得到一长串几何坐标:-

    coord_list = frame[0]['geometry']['coordinates']
    

    但您可能会遇到错误。在这种情况下,您需要发布所有相关代码和错误消息。

    如果coord_list 适合创建LineString,那么,您可以继续下一步。

    【讨论】:

    • 感谢您的建议,但polygon.exterior.coords 直接给了我这个。我想创建多边形边缘的 LineString。
    • @Tim 请张贴其中一些作为示例。不需要真实数据。简化数据是可以的。
    猜你喜欢
    • 2019-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多