[Python-es] Interpolacion varios Puntos.

Kiko kikocorreoso en gmail.com
Mar Sep 13 18:15:29 CEST 2011


El 13 de septiembre de 2011 16:27, Juan Camilo Hernandez D <
camilo.hernandez en gmail.com> escribió:

> Hola.
>
> Les voy a aclarar un poco el tipó de información que contiene mis datos.
> La información de latitud y longitud esta espaciada de forma regular, es
> decir que en el caso del array de longitud los valores de cada columna son
> iguales entre ellos; en el caso del array de latitud sucede algo similar
> pero en las filas.
>
> Ahora he considerado utilizar el método de interpolacion bilineal y
> el método de crosman (correcion por distancias); mi dificultad radica en dos
> puntos:
>
> 1. Como identificar los cuatro puntos que rodean mi punto de interés.
> 2. Como obtener los indices de estos cuatro puntos para realizar la
> interpolacion, es decir ubicar mis puntos de entrada a los algoritmos de
> interpolacion en el array de temperaturas.
>
> Algunos me han manifestado la trivialidad del problema, realmente les pido
> excusas, he buscado la forma y no veo como hacerlo. Si me pueden colaborar
> con un ejemplo se los agradecería enormemente.
>
>
Viendo tus datos, te puedes ahorrar una dimension para la lat y otra para la
lon, así consumirás menos memoria.

Supón que la distancia entre dos latitudes o longitudes consecutivas es 0.1º
(paso de la malla) y que tus latitudes varían entre -90º y 90º y tus
longitudes entre -180º y 180º (un caso que abarque todo el planeta):
*
import numpy as np
lat = np.arange(-90,90,0.1)
lon = np.arange(-180,180,0.1)
step = 0.1*

Tu latitud de interés y tu longitud de interés son:
*
mi_lat = 27.47
mi_lon = -2.14
*
Los índices dentro del vector/matriz latitud los podrás obtener como:
*
j1 = np.int((lat[0] + mi_lat)/step)
j2 = j1 + 1
*
Para la longitud lo mismo.
*
i1 = np.int((lon[0] + mi_lon)/step)
i2 = i1 + 1
*
T[i1,j1], T[i1,j2], T[i2,j1], T[i2,j2] Serán los valores de temperatura
alrededor de tu punto (la i y la j pueden cambiar de orden dependiendo de
como definas filas o columnas en tus datos).

Podría ser que tu punto coincida con un punto del grid, deberías de poner
algo en el programa para comprobarlo previamente. y no hacer el cálculo de
los 4 puntos alrededor de tu punto.

No se si se entenderá pero lo he intentado poner paso a paso. En esencia, es
lo mismo que te ha puesto Daπid pero en versión larga.

Saludos.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20110913/328ac190/attachment.html>


Más información sobre la lista de distribución Python-es