Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get Distance Between Two Points in GeoPandas

I have two points as below. I need to get the distance between them in meters.

POINT (80.99456 7.86795)
POINT (80.97454 7.872174)

How can this be done via GeoPandas?

like image 535
Dumindurr Avatar asked Sep 03 '20 10:09

Dumindurr


1 Answers

Your points are in a lon, lat coordinate system (EPSG:4326 or WGS 84). To calculate a distance in meters, you would need to either use the Great-circle distance or project them in a local coordinate system to approximate the distance with a good precision.

For Sri Lanka, you can use EPSG:5234 and in GeoPandas, you can use the distance function between two GeoDataFrames.

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)

The result should be 2261.92843 m

like image 187
J-B Avatar answered Oct 22 '22 00:10

J-B