将一个由字符串组成的多边形列转换为GeoPandas几何图形。

28

我有一个保存为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.
1个回答

47

您的多边形格式为WKT,因此您需要将其转换为shapely多边形。按照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')

如果 .from_wkt 方法已经将字符串几何体转换为几何数据类型,那么第二行 (gpd.GeoDataFrame(...)) 是否必要? - Nicole Goebel
如果你想要一个GeoDataFrame,那么是的。如果想要一个GeoSeries,那么不是。 - martinfleis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接