Python 如何插值熊猫的GPS坐标?

Python 如何插值熊猫的GPS坐标?,python,pandas,scipy,gps,latitude-longitude,Python,Pandas,Scipy,Gps,Latitude Longitude,我有一个数据集,其中包含150K个GPS坐标条目,如下所示: log_time latitude longitude 0 1.555840e+09 45.429597 11.974981 1 1.555869e+09 45.429597 11.974981 3 1.555869e+09 45.429596 11.974984 4 1.555869e+09 45.429490 11.975089 5 1.555869e

我有一个数据集,其中包含150K个GPS坐标条目,如下所示:

    log_time    latitude    longitude
0   1.555840e+09    45.429597   11.974981
1   1.555869e+09    45.429597   11.974981
3   1.555869e+09    45.429596   11.974984
4   1.555869e+09    45.429490   11.975089
5   1.555869e+09    45.429092   11.975478
我预计这种数据帧在不久的将来将扩展到数百万条记录,因此可伸缩性是一个优先事项

我想对运动进行插值,这样对于更大的间隙,至少每60秒有一个GPS记录

标准方法是:

dff=dff.set\u索引(dff.pop('log\u time'))
dff=dff.reindex(np.arange(dff.index.min(),dff.index.max()+1))
产生:

latitude    longitude
log_time        
1.555840e+09    45.429597   11.974981
1.555840e+09    NaN NaN
1.555840e+09    NaN NaN
1.555840e+09    NaN NaN
1.555840e+09    NaN NaN
这将使用类似于
dff.interpolate().reset_index()
的东西进行插值

然而,我有一个大问题:scipy(以及pandas)提供的插值函数都不适用于圆弧而非直线的GPS距离。但是,从这个角度来看,没有简单的方法来扩展插值函数

我已经有了我想要使用的距离函数,但是我认为如果不使用嵌套for循环,就无法轻松地部署它

来自geographicalib.geodesic导入geodesic
测地线=测地线。WGS84
def自定义_插值(起始_值、结束_值、缺失_值的数量):
填充的数组=[起始值]
# 1. 在起始值和结束值之间创建一条线
#通过求解测地反问题
直线=大地坐标反直线(起始值.lat,起始值.lon,结束值.lat,结束值.long)
# 2. 确定填充所需步骤的长度
#两个极端之间的缺失值;
#s13是直线的总弧长
步骤长度=第13行/缺失值的数量
# 3. 在两个数组之间添加中间值
对于范围(1,n+1)内的i:
距离=最小值(步长长度*i,第13行)
g=直线位置(距离,测地线标准|测地线长_展开)
填充数组。追加(g['lat2'],g['lon2'])
填充数组。追加(结束值)
返回填充数组

所以像
[(LAT1,LON1),None,None,None,(LAT2,LON2)]
这样的东西可以变成
[(LAT1,LON1),(LAT,LON),(LAT,LON),(LAT2,LON2)]

如果你解释一下插值的逻辑,我想你的问题会更容易回答,现在,人们必须检查您的代码,并尝试自己提取逻辑。@Erfan好的观点:完成!在什么情况下,您链接的问题的公认答案中的slerp插值对您来说不是一个好的解决方案?
latitude    longitude
log_time        
1.555840e+09    45.429597   11.974981
1.555840e+09    NaN NaN
1.555840e+09    NaN NaN
1.555840e+09    NaN NaN
1.555840e+09    NaN NaN