Я хотел бы выполнить блиновую интерполяцию с помощью python.
Пример GPS-точка, для которой я хочу интерполировать высоту:
Как выполнить билинейную интерполяцию в Python
B = 54.4786674627
L = 17.0470721369
с использованием четырех смежных точек с известными координатами и значениями высот:
n = [(54.5, 17.041667, 31.993), (54.5, 17.083333, 31.911), (54.458333, 17.041667, 31.945), (54.458333, 17.083333, 31.866)]
z01 z11
z
z00 z10
и вот моя примитивная попытка:
import math
z00 = n[0][2]
z01 = n[1][2]
z10 = n[2][2]
z11 = n[3][2]
c = 0.016667 #grid spacing
x0 = 56 #latitude of origin of grid
y0 = 13 #longitude of origin of grid
i = math.floor((L-y0)/c)
j = math.floor((B-x0)/c)
t = (B - x0)/c - j
z0 = (1-t)*z00 + t*z10
z1 = (1-t)*z01 + t*z11
s = (L-y0)/c - i
z = (1-s)*z0 + s*z1
где z0 и z1
z01 z0 z11
z
z00 z1 z10
я получаю 31,964, но от другого программного обеспечения, я получаю 31.961.
Правильно ли мой сценарий?
Можете ли вы предоставить другой подход?
У вас есть ошибки округления, и вы округляете ??? Что произойдет, если вы удалите «пол»? – Ben
Что такое L и B? Координаты точки, в которой вы хотите интерполировать? –
@machine тоска, что правильно – daikini