将正确的投影crs设置到geodataframe以米为单位进行计算

时间:2019-08-06 14:54:23

标签: geopandas proj

即使我的问题How to create an accurate buffer of 5 miles around a coordinate in python?有一个答案,但我无法代表它。

我有一系列经纬度,经度浮动的格式的位置,并且需要以米为单位计算buffer

这些地点来自葡萄牙,所以我在这里拿到了“ {right}” crshttps://epsg.io/3763,即epsg:3763

gdf = gpd.GeoDataFrame(df, geometry=gpd.points_from_xy(df['latitude'], df['longitude']),
                                 crs={'init' :'epsg:3763'})

gdf['radius'] = gdf.geometry.buffer(50)

根据上面的答案,应该给我指定半径(以米为单位)周围的多边形,但实际上返回的半径为度。

我知道,这应该很简单,但是我仍然很困惑。谢谢!

1 个答案:

答案 0 :(得分:1)

您在数据框中的点是经/纬度。您需要使用lat / lon crs初始化数据帧,然后重新投影。

gdf = gpd.GeoDataFrame(df, geometry=gpd.points_from_xy(df['latitude'], df['longitude']),
                                     crs={'init' :'epsg:4326'})
gdf = gdf.to_crs(epsg=3763)
gdf['radius'] = gdf.geometry.buffer(50)