将一列多边形从字符串转换为 GeoPandas 几何

Converting a column of Polygons from string to GeoPandas geometry

我有一个存储为 csv 文件的数据框,其中一列是多边形对象。但是,此列存储为字符串而不是 GeoPandas 几何对象。如何将此列转换为 Geopandas 几何对象以便执行地理分析?

这是我的数据的样子

my_df['geometry'].head()
0    POLYGON ((-122.419942 37.809021, -122.419938 3...
1    POLYGON ((-122.419942 37.809021, -122.419938 3...
2    POLYGON ((-122.419942 37.809021, -122.419938 3...
3    POLYGON ((-122.419942 37.809021, -122.419938 3...
4    POLYGON ((-122.405659 37.806674, -122.405974 3...
Name: geometry, dtype: object

我想将此 Pandas DataFrame 转换为 Geopandas GeoDataFrame,使用列 'geometry' 作为 Geopandas 几何列。

my_geo_df = gpd.GeoDataFrame(my_df, geometry=my_df['geometry'])

但是,由于该列存储为字符串,Geopandas.DataFrame() 无法识别它,因此实际上无法创建 GeoDataFrame。

TypeError: Input geometry column must contain valid geometry objects.

您的多边形格式为 WKT,因此您必须将其转换为形状优美的多边形。按照 Geopandas 文档 (https://geopandas.readthedocs.io/en/latest/gallery/create_geopandas_from_pandas.html) 执行以下操作

使用 GeoPandas 0.9+:

df['geometry'] = gpd.GeoSeries.from_wkt(df['geometry'])
my_geo_df = gpd.GeoDataFrame(my_df, geometry='geometry')

使用旧版本:

from shapely import wkt

df['geometry'] = df['geometry'].apply(wkt.loads)
my_geo_df = gpd.GeoDataFrame(my_df, geometry='geometry')