Python插值时间,纬度和经度

时间:2015-01-16 20:51:39

标签: python interpolation

我无法弄清楚python是否是插入我拥有的数据集的最佳选择



**lat   lon    time**
   x1    y1    3:02(t1)
            
       
   x2    y2    3:05(t2)




   x3    y3    3:10(t3)

 
   x4    y4    3:13(t4)




我留下空间来强调我正在寻找的东西。我希望以1秒的间隔填补缺失的时间。所以我认为我需要做的是t4-t1以获得11个相等的空格,将时间转换为秒以使计算更容易。那么图表应如下所示:



**lat   lon    time**

   x1    y1    3:02(t1)
   a      b    3:03
   c      d    3:04
   x2    y2    3:05(t2)
               3:06
               3:07
               3:08
               3:09
   x3    y3    3:10(t3)
               3:11
               3:12
   x4    y4    3:13(t4)




在此之后,我正在寻找我新创建的每一秒的纬度和经度。所以在x2,y2和x1之间,y1我想找到a,b,c,d的值,它们将是一个插值的lat和lon。

有没有办法做到这一点,每组之间没有一致的值?

1 个答案:

答案 0 :(得分:2)

python的numpy库具有内置插值功能。请注意,在此示例中,我使用整数表示时间。您应该将时间转换为数字数组(例如秒),以使numpy.interp起作用。

import numpy as np

times = [2, 5, 10, 13]
lat = [1.5, 2, 4, 7]
lon = [3, 2, 1, -2]
t = np.arange(2, 14)

latint = np.interp(t, times, lat)
lonint = np.interp(t, times, lon)
for pos in zip(latint, lonint, t):
    print(pos)

应打印:

(1.5, 3.0, 2)
(1.6666666666666667, 2.6666666666666665, 3)
(1.8333333333333333, 2.3333333333333335, 4)
(2.0, 2.0, 5)
(2.3999999999999999, 1.8, 6)
(2.7999999999999998, 1.6000000000000001, 7)
(3.2000000000000002, 1.3999999999999999, 8)
(3.6000000000000001, 1.2, 9)
(4.0, 1.0, 10)
(5.0, 0.0, 11)
(6.0, -1.0, 12)
(7.0, -2.0, 13)