Python坐标线性插值应用实现坐标线性插值应用实现
主要介绍了Python坐标线性插值应用实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
一、背景一、背景
在野外布设700米的测线,点距为10米,用GPS每隔50米测量一个坐标,再把测线的头和为测量一个坐标。现在需使用线性插值的方法求取每两个坐标之间的其他4个点的值。
二、插值原理二、插值原理
使用等比插值的方法
起始值为 a
终止值为 b
步长值为 (a-b)/5
后面的数分别为 a+n, a+2n, a+3n, a+4n
三、代码实习对三、代码实习对 x 插值插值
interx.py
import numpy as np
f = np.loadtxt('datax.txt')
a = f[:, 0]
b = f[:, 1]
for j in np.arange(len(a)):
aa = a[j]*1000 # np.arrange()会自动去掉小数
bb = b[j]*1000
n = (bb-aa) / 5
x = np.arange(6)
x[0] = aa
print(x[0]/1000)
for i in range(1, 5, 1):
x[i] = x[i-1]+n
print(x[i]/1000)
i = i+1
# print(bb/1000)
# print("")
datax.txt
514873.536 514883.939
514883.939 514894.358
514894.358 514903.837
514903.837 514903.807
514903.807 514907.179
514907.179 514911.356
514911.356 514913.448
514913.448 514913.315
514913.315 514917.344
514917.344 514923.684
514923.684 514924.801
514924.801 514929.697
514929.697 514916.274
对 y 插值
intery.py
import numpy as np
f = np.loadtxt('datay.txt')
a = f[:, 0]
b = f[:, 1]
for j in np.arange(len(a)):
aa = (a[j] - 2820000)*1000 # 数据太长会溢出
bb = (b[j]-2820000)*1000
n = (bb-aa) / 5
x = np.arange(6)
x[0] = aa
print(x[0]/1000+2820000)
for i in range(1, 5, 1):
x[i] = x[i-1]+n
print(x[i]/1000+2820000)
i = i+1
# print(bb/1000)
# print("")
datay.txt
2820617.820 2820660.225
2820660.225 2820693.988
2820693.988 2820819.199
2820819.199 2820831.510
2820831.510 2820858.666
2820858.666 2820973.487
2820973.487 2821017.243
2821017.243 2821019.518
2821019.518 2821058.223
2821058.223 2821097.575
2821097.575 2821144.436
2821144.436 2821173.356
2821173.356 2821218.889
四、最终成果四、最终成果
手动把两次插值结果复制到dataxy中
dataxy.txt