【发布时间】:2021-08-20 11:04:15
【问题描述】:
我有一个带有多面几何的地理数据框:
我想将它们转换为多边形,即填充多边形的孔并使其成为单个多边形。
我试过this similar question的代码:
from shapely.geometry import MultiPolygon, Polygon
gdf['Polygon'] = gdf['SHAPE'].apply( lambda x: MultiPolygon(Polygon(p.exterior) for p in x))
但我得到了错误:
TypeError: 'Polygon' object is not subscriptable
我已经尝试过堆栈溢出的其他解决方案,但没有成功。
有什么想法吗?
这里是数据类型:
FID int64
LHO object
Shape__Area float64
Shape__Length float64
SHAPE geometry
以下是获取 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')
【问题讨论】:
-
你能删除 .exterior 吗?
-
你还能打印列的dtypes吗?
-
@anarchy 我已经编辑了我的帖子以添加数据类型和更多信息。
-
你能把数据框的副本粘贴几行吗?因为我似乎无法正确安装 arcgis 包,您也可以上传前几行的 csv 文件,这样会更容易