Comment effectuer l'interpolation bilinéaire en Python

Je voudrais effectuer blinear interpolation à l'aide de python.
Exemple gps point pour lequel je tiens à interpoler la hauteur est de:

B = 54.4786674627
L = 17.0470721369

à l'aide de quatre points adjacents avec des coordonnées connues et les valeurs de hauteur:

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

et voici mon essai primitif:

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

où z0 et z1

z01  z0  z11

     z
z00  z1   z10

Je reçois 31.964 mais d'autres logiciels, je reçois 31.961.
Est mon script correct?
Pouvez-Vous fournir une autre approche?

Vous avez des erreurs d'arrondi et vous êtes arrondi??? Qu'advient-il si vous supprimez floor?
Ce sont L et B? Les coordonnées du point à partir duquel vous souhaitez interpoler?
la nostalgie c'est vrai
Une note de latitude et de longitude ne sont pas coordonnées planaires, de sorte que ce résultat ne sera pas vous obtenir ce que vous voulez si vous avez affaire à de grandes distances.

OriginalL'auteur daikini | 2011-12-28