python从带有坐标的列中创建一个带有多边形的列 示例输出

问题描述

我需要在我的 df (df['poly']) 中添加一列,它采用 df['coords'] 中的坐标(纬度和经度)并将它们转换为不同大小的多边形。有的key_id只有2分,有的有将近20分

我尝试了匀称但我不知道如何继续。我能做什么?

我的 df 具有类似的结构:


df = pd.DataFrame ({'key_id': ['151,'244','245'],'coords': [[[-8.37793,37.42726],[-8.29726,37.42958],[-8.1975,37.35019],[-8.07657,37.3241],[-7.98004,37.40123],[-7.73969,37.49087],[-7.51269,37.52626]],[[28.44261,38.10466],[28.61609,38.08959]],[[-5.7376,40.29416],[-5.78421,40.292],[-5.81097,40.34586],[-5.92499,40.28829],[-5.97971,40.29835],[-6.22156,40.48251],[-6.53513,40.34072],[-6.59286,40.27262],[-6.77174,40.24218],[-6.86514,40.27069]]]

                   })

解决方法

import json
import geopandas as gpd
from pathlib import Path
# NUTS_BN_60M_2021_3035.geojson
p = Path.home().joinpath("Downloads/ref-nuts-2021-60m").joinpath("NUTS_BN_60M_2021_3035.geojson")
with open(p) as f: js = json.load(f)
gpd.GeoDataFrame.from_features(js)

示例输出

几何 EU_FLAG EFTA_FLAG CC_FLAG LEVL_CODE NUTS_BN_ID COAS_FLAG OTHR_FLAG FID
0 LINESTRING (4710072.1544 1558882.7113,4682530.865 1568851.5189) T F F 0 155 T F 155
1 LINESTRING (4750146.4639 1575613.1831,4719326.4198 1565032.5462) T F F 3 156 F F 156
2 LINESTRING (4750146.4639 1575613.1831,4771337.8016 1529624.4864) T F F 3 157 F F 157
3 LINESTRING(5708788.4877 1703805.8981,5716323.6218 1677819.7608,5699205.566099999 1671425.5691,5689132.9338 1687843.7667,5674013.6588 1672224.311,5660024.3965 1679252.6566,5666955.0392 1699891.5505,5708788.4877 1703805.8981) T F F 0 158 T F 158
4 LINESTRING (2862160.935 1681571.7459,2817387.2651 1732249.228499999,2777974.267 1743031.794) T F F 0 159 T F 159