【问题标题】:Calculating distance between gps coordinates in columns计算列中gps坐标之间的距离
【发布时间】:2020-09-29 02:52:37
【问题描述】:

我正在使用 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)

【问题讨论】:

    标签: python geopy


    【解决方案1】:

    代码是高效的。一种选择是在获得距离后删除新列。

    GPS_df = GPS_df.drop(columns=['lat_shift', 'lon_shift'])
    

    【讨论】:

    • 谢谢。我开始遍历数据框。那很慢。然后我尝试在函数定义中使用 shift() 并很快了解到它不能以这种方式工作,然后我找到了这个解决方案。
    猜你喜欢
    • 2010-09-26
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    相关资源
    最近更新 更多