我有一个包含线性环的GeoDataFrame,我想(有条件地)将它转换成多边形。听起来很简单:
from shapely.geometry import Polygon
def update_geom(row):
if (row.aoi_type=='blocks') or (row.aoi_type=='locale'):
return Polygon(row.geometry)
else:
return row.geometry
gdf['geometry']=gdf.apply(update_geom,axis=1)这看起来很好--如果我检查一下GeoDataFrame,我可以看到LINESTRING(...) => POLYGON(...),gdf.sample().iloc[0].geometry在笔记本中正确地把这个形状绘制成一个多边形。
但这就是奇怪的地方。我这么做的时候..。
gdf.to_file('filename',index=False)
updated_gdf=gpd.read_file('filename')updated_gdf又回到了LINESTRING()的时代。
有什么想法?修复?
谢谢!
发布于 2020-07-01 13:16:53
如果您要保存到shapefile (从您的代码来看),您将面临文件格式的限制。SHP只支持一种几何类型。因此,虽然GeoDataFrame可以在一个几何列中使用混合的LineStrings和多边形,但是shapefile不是,而且允许您只保留一个。
您可以尝试另一种格式(如GeoJSON),或者根据几何类型将GeoDataFrame拆分为两种,然后再保存到(2) shapefiles。
https://stackoverflow.com/questions/62677144
复制相似问题