计算大坐标列表中的距离

Calculate distance in large list of coordinates

我需要一些帮助来完成一项任务。我是 Python 初学者,我正在尝试计算连续项目之间的距离。对于前。 item1 到 item2 然后 item2 到 item3 等等。

只有一个问题,在我的数据框中,我必须将这些计算划分到字段 ZCGUNLEIT,因为它指示一条路线。所以任何一个 ZCGUNLEIT 都会有大约 300 个坐标,我必须知道这 300 个坐标之间的距离,然后再移动到下一个 ZCGUNLEIT。

我尝试了 haversine 库,但无法理解如何将其集成到我的数据框中。

如果有人能在这里阐明一些问题,我们将不胜感激。

OBS:此数据框有数百万行。

来自这个问题的答案:Getting distance between two points based on latitude/longitude

假设地球是球体的Haversine公式,导致误差高达0.5%左右(根据help(geopy.distance))。 Vincenty距离使用WGS-84等更精确的椭球模型,在geopy中实现。例如,

import geopy.distance

coords_1 = (52.2296756, 21.0122287)
coords_2 = (52.406374, 16.9251681)

print geopy.distance.vincenty(coords_1, coords_2).km

将使用默认椭球 WGS-84 打印 279.352901604 公里的距离。 (您也可以选择 .miles 或其他几个距离单位之一)。

所以对于你的问题,如果你的数据定义为pandas dataFrame,例如:

import geopy.distance
import pandas as pd
df=pd.DataFrame(data=[[53.2296756,21.0122287],[52.406374,16.9241681],[52.2296756,21.0112287],[55.406374,16.9231681]],columns=['LATITUDE','LANGTITUDE'])

dist=[0]
for i in range(1,len(df)):
  dist.append(geopy.distance.vincenty((df.LATITUDE.iloc[i],df.LANGTITUDE.iloc[i]),(df.LATITUDE.iloc[i-1],df.LANGTITUDE.iloc[i-1])).km)

df['distance']=dist
df