如何从 GeoPandas MultiPolygon Geometry 列中删除 SRID=4326

问题描述 投票:0回答:1

我正在使用 .shp 文件中的形状数据,并使用 geopandas 将这些数据转换为带有

geometry(multipolygon, 4326) NULL
类型列的 postgresql 表的多边形。我遇到的问题是我不知道如何删除数据的
SRID=4326
部分。

例如,

SRID=4326;MULTIPOLYGON(((-113.82162 31.50802........
,但我只需要
MULTIPOLYGON(((-113.82162 31.50802........
。我对 GeoPandas 相当陌生,任何帮助将不胜感激。这是必要的代码。


gdf = gpd.read_file(shapefile_path).to_crs(epsg=4326)
gdf['geometry'] = gdf['geometry'].apply(lambda x: MultiPolygon([x]) if isinstance(x, Polygon) else x)
gdf['geometry'] = gdf['geometry'].apply(lambda x: WKTElement(x.wkt, srid=4326))
gdf.to_sql(table_name, engine, schema='shapes', if_exists='append', index=False, method='multi', dtype={'geometry': Geometry('MULTIPOLYGON', srid=4326)})
python dataframe geopandas shapefile wkt
1个回答
0
投票

如果我理解正确的话,您的 shapefile 中有一个列,其中包含要转换为

geopandas.GeoDataFrame
丢失
SRID=4326
部分的 WKT 数据。

类似的东西可以做到这一点(添加虚拟数据来操作):

import geopandas as gpd
from shapely import wkt

points = [{'WKT': "SRID=4326;MULTIPOLYGON(((2.35 48.85, 2.36 48.85, 2.36 48.86, 2.35 48.86, 2.35 48.85)), ((2.37 48.87, 2.38 48.87, 2.38 48.88, 2.37 48.88, 2.37 48.87)))"}]
gdf = gpd.GeoDataFrame(points)
gdf['WKT'] = gdf['WKT'].apply(lambda x: x.replace('SRID=4326;', ''))
gdf['WKT'] = gdf['WKT'].apply(wkt.loads)
gdf = gdf.set_geometry('WKT').set_crs('epsg:4326')
© www.soinside.com 2019 - 2024. All rights reserved.