繁体   English   中英

从 geopandas dataframe 用点创建多边形

[英]Creating a polygon from a geopandas dataframe with points

我有一个 geopandas dataframe 存储有 X、Y 坐标、它们的纬度和经度等价物以及它们的几何点。 数据片段:

             long     lat    X    Y      geometry
55898  -45.520195 -18.571566  151  179    POINT (-45.52019 -18.57157)
55902  -45.520227 -18.582375  151  183    POINT (-45.52023 -18.58238)
55910  -45.520293 -18.603994  151  191    POINT (-45.52029 -18.60399)
56267  -45.517361 -18.571574  152  179    POINT (-45.51736 -18.57157)

我想做的是依次联合4个点,即按照dataframe中的顺序,这样我就可以得到一个正方形的坐标。 所需的 output 并不真正需要包含其他列,只需要包含多边形的几何形状,它类似于:

1    POLYGON ((977855.4451904297 188082.3223876953,...
2    POLYGON ((1017949.977600098 225426.8845825195,...
3    POLYGON ((988872.8212280273 146772.0317993164,...
4    POLYGON ((1000721.531799316 136681.776184082, ...
5    POLYGON ((915517.6877458114 120121.8812543372,...

应该将 lat 和 lon 坐标作为嵌套列表提供给 Shapely Polygon object。 https://stackoverflow.com/a/30461816/12987768

gdf是 GeoDataFrame:

    from shapely.geometry import Polygon

    rows_numbers= [i for i in range(0, len(gdf), 4)]
    polygons = []

    for idx, _ in enumerate(rows_numbers):
        if idx == len(rows_numbers)-1:
            print("end of gdf")
            break
        polygon_coords = []
        for point in gdf.geometry.values[rows_numbers[idx]: rows_numbers[idx+1]]:
            polygon_coords.append([point.x, point.y])
        polygons.append(Polygon(polygon_coords))

生成的polygons列表包含 4 点多边形

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM