获取GeoPandas中两点之间的距离

问题描述

我有以下两点。我需要得到它们之间的距离,以米为单位。

POINT (80.99456 7.86795)
POINT (80.97454 7.872174)

这如何通过GeoPandas完成?

解决方法

您的点位于 lat,lat 坐标系中(EPSG:4326或WGS 84)。要计算以米为单位的距离,您可能需要使用Great-circle distance或将其投影在局部坐标系中以高精度地估算距离。

对于斯里兰卡,您可以使用EPSG:5234,在GeoPandas中,可以使用两个GeoDataFrame之间的距离函数。

from shapely.geometry import Point
import geopandas as gpd
pnt1 = Point(80.99456,7.86795)
pnt2 = Point(80.97454,7.872174)
points_df = gpd.GeoDataFrame({'geometry': [pnt1,pnt2]},crs='EPSG:4326')
points_df = points_df.to_crs('EPSG:5234')
points_df2 = points_df.shift() #We shift the dataframe by 1 to align pnt1 with pnt2
points_df.distance(points_df2)

结果应该是2261.92843 m