geopandas df 中的形状点几何到 lat/lon 列

Shapely point geometry in geopandas df to lat/lon columns

我有一个 geopandas df,其中有一列形状优美的点对象。我想从形状点对象中提取坐标 (lat/lon) 以生成纬度和经度列。一定有一个简单的方法可以做到这一点,但我想不通。

我知道您可以像这样提取单个坐标:

lon = df.point_object[0].x
lat = df.point_object[0].y

我可以创建一个函数来为整个 df 执行此操作,但我认为还有更多 efficient/elegant 方法。

如果您拥有最新版本的 geopandas(撰写本文时为 0.3.0),并且如果 df 是 GeoDataFrame,则可以使用 xy 属性在几何列上:

df['lon'] = df.point_object.x
df['lat'] = df.point_object.y

一般来说,如果您有一列有形状的对象,您还可以使用 apply 对整列的各个坐标执行您可以执行的操作:

df['lon'] = df.point_object.apply(lambda p: p.x)
df['lat'] = df.point_object.apply(lambda p: p.y)

无需遍历 Dataframe,您可以执行以下操作:

df['lon'] = df['geometry'].x
df['lat'] = df['geometry'].y

多边形和多边形提取中心点(经纬度)的解决方法

import geopandas as gpd
df = gpd.read_file(path + 'df.geojson')
#Find the center point
df['Center_point'] = df['geometry'].centroid
#Extract lat and lon from the centerpoint
df["long"] = df.Center_point.map(lambda p: p.x)
df["lat"] = df.Center_point.map(lambda p: p.y)