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

xin*_*liu 19 python polygon geopandas

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

这是我的数据的样子

my_df['geometry'].head()
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)

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

my_geo_df = gpd.GeoDataFrame(my_df, geometry=my_df['geometry'])
Run Code Online (Sandbox Code Playgroud)

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

TypeError: Input geometry column must contain valid geometry objects.
Run Code Online (Sandbox Code Playgroud)

mar*_*eis 25

您的多边形的格式是 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')
Run Code Online (Sandbox Code Playgroud)

使用旧版本:

from shapely import wkt

df['geometry'] = df['geometry'].apply(wkt.loads)
my_geo_df = gpd.GeoDataFrame(my_df, geometry='geometry')
Run Code Online (Sandbox Code Playgroud)