将 Geopandas 多多边形转换为多边形

SCo*_*ool 14 python shapely geopandas

我有一个具有多边形几何形状的地理数据框:

在此输入图像描述

我想将它们转换为多边形,即填充多多边形的孔并使其成为单个多边形。

我已经尝试过这个类似问题的代码:


from shapely.geometry import MultiPolygon, Polygon
gdf['Polygon'] =  gdf['SHAPE'].apply( lambda x: MultiPolygon(Polygon(p.exterior) for p in x))

Run Code Online (Sandbox Code Playgroud)

但我收到错误:

TypeError: 'Polygon' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)

我尝试过堆栈溢出的其他解决方案,但没有成功。

有任何想法吗?

以下是数据类型:

FID                 int64
LHO                object
Shape__Area       float64
Shape__Length     float64
SHAPE            geometry
Run Code Online (Sandbox Code Playgroud)

这是获取 shapefile 的完整代码:


import pandas as pd
import geopandas as gpd
from arcgis import GIS
gis = GIS(verify_cert=False,api_key='your_api_key')

search_result = gis.content.search(query="title:National_LHO", item_type="Feature Layer")

# get layer
layer = search_result[0].layers[0]

# dataframe from layer
df= pd.DataFrame.spatial.from_layer(layer)

gdf = gpd.GeoDataFrame(df)

gdf = gdf.set_geometry('SHAPE')

gdf = gdf.set_crs(epsg='3857')

gdf = gdf.to_crs(epsg='4326')
Run Code Online (Sandbox Code Playgroud)

小智 18

.explode您可以在 GeoDataFrame 上使用名为的方法:

gdf_exploded=gdf.explode()
Run Code Online (Sandbox Code Playgroud)

你可以在这里找到文档