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,则可以使用 x
和 y
属性在几何列上:
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)
我有一个 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,则可以使用 x
和 y
属性在几何列上:
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)