如何在 python 中围绕坐标创建 5 英里的准确缓冲区?

新手上路,请多包涵

我想在一个坐标周围创建一个 5 英里的精确缓冲区,我当前的代码是:

 cpr_gdf['p_buffer']=cpr_gdf['coordinates'].buffer(5*(1/60))

坐标列是使用以下代码创建的:

 cpr_df['coordinates']=list(zip(cpr_df.sample_longitude_decimal,cpr_df.sample_latitude_decimal))
cpr_df['coordinates']=cpr_df['coordinates'].apply(Point)
cpr_gdf=gpd.GeoDataFrame(cpr_df,geometry='coordinates',crs={'init' :'epsg:4326'})

谢谢你的帮助!

原文由 lourew 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 419
1 个回答

您需要转换为最精确到缓冲区所在位置的等面积投影( https://epsg.io/ 上的良好资源)

例如,我正在密歇根制作地图,所以我使用的是 EPSG:3174(我相信它以米为单位,如果错误请纠正我)。鉴于您已经将数据框转换为 GeoPandas 数据框,您可以将当前投影转换为 3174,然后创建缓冲区(将英里转换为米)

 cpr_gdf= cpr_gdf.to_crs({'init': 'epsg:3174'})
buffer_length_in_meters = (5 * 1000) * 1.60934
cpr_gdf['geometry'] = cpr_gdf.geometry.buffer(buffer_length_in_meters)

原文由 Geoff Perrin 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进