计算列中gps坐标之间的距离

2024-03-28 12:41:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用geopy distance.distance函数计算gpx文件中每个纬度和经度点之间的距离,如下所示:

lat lon alt time
0   44.565335   -123.312517 85.314  2020-09-07 14:00:01
1   44.565336   -123.312528 85.311  2020-09-07 14:00:02
2   44.565335   -123.312551 85.302  2020-09-07 14:00:03
3   44.565332   -123.312591 85.287  2020-09-07 14:00:04
4   44.565331   -123.312637 85.270  2020-09-07 14:00:05

我使用这段代码为lat和lon创建新的列,其中行向下移动,然后我可以使用apply计算每个列的距离。这是可行的,但我想知道是否有一种方法可以做到这一点,而不必为移位的数据创建额外的列

def calcDistance(row):
    return distance.distance((row.lat_shift,row.lon_shift),(row.lat,row.lon)).miles

GPS_df['lat_shift']=GPS_df['lat'].shift()
GPS_df['lon_shift']=GPS_df['lon'].shift()
GPS_df['lat_shift'][0]=GPS_df['lat'][0]
GPS_df['lon_shift'][0]=GPS_df['lon'][0]
GPS_df['dist']= GPS_df.apply(calcDistance,axis=1)

Tags: 文件函数距离dfshiftgpxgpsrow