2012-06-29 9 views
5

Tengo una imagen de 3712x3712 píxeles de un satélite eumetsat geoestacionario. Hay un poco de negro alrededor de la tierra, de modo que la imagen se ve así:¿Cómo obtener latitud y longitud para un píxel de una imagen eumetsat usando python?

Para cada píxel de la tierra, me gustaría llegar a su Latitute y longitud. Yo sé que hay pyproj y pude crear una instancia de una proyección de este modo:

sat = pyproj.Proj('+proj=geos +lon_0 +h=035785831.0 +x_0=0 +y_0=0') 

pero que consigue LatLon del píxel (utilizando sat(x,y,inverse=True) donde x y y son las coordenadas del píxel en la imagen) no es obviamente posible, ya que la proyección no conoce la dimensión (3712x3712) de mi imagen.

¿Qué me estoy perdiendo?

+0

No estoy familiarizado con pyproj, pero, ¿no sería necesario "cronometrar" la tierra en función de algunas ubicaciones conocidas, es decir, darse cuenta de la posición de Australia en relación con la imagen? hace pyproj hacer esto ya? ¿O solo te refieres a una latitud relativa de una forma circular? –

+0

Lo siento, no entiendo lo que estás preguntando. Quiero ser capaz de hacer esto: para píxel en la imagen: imprimir latón (píxel) – AME

+1

¿Qué precisión necesita tener? Si puedes salirte con unos pocos kilómetros de error, podrías aproximar la Tierra como una esfera, hacer una geometría simple y olvidarte por completo de pyproj (no sé nada de pyproj, pero podría ayudarte con la geometría). –

Respuesta

1

Creo que está utilizando la biblioteca de proyección correcta y la configuración.

La resolución de píxel típica (km por píxel) se informa en el sitio web de eumetsat here Informa aproximadamente 3 km por píxel.

Puede verificarlo haciendo una conversión lon/lat a x, y en el meridiano y depecificándolo por el número de píxeles (-81 grados, 81 grados es el rango máximo, consulte el sitio eumetsat para referencias, http://www.eumetsat.int/) :

import pyproj 
sat = pyproj.Proj('+proj=geos +lon_0 +h=035785831.0 +x_0=0 +y_0=0') 
x,y = sat(81.299, 0, radians = False, errcheck = True) 
print (x * 2.0/3712.0)/1000.0 

Le dará un valor de 2.927 que se ajusta a la información proporcionada por el eumetsat.

Luego puede calibrar más definiendo un conjunto de puntos conocidos de su mapa (por ejemplo, características costeras), determinando su posición x/y y buscando sus coordenadas lat/lon en línea. Puede probar con un rango de resoluciones de píxeles y verificar cuál se ajusta mejor o utilizar una rutina más elaborada.

La resolución puede depender de qué tan cerca esté del ecuador, consulte here). Entonces puede necesitar usar la rutina anterior en varias latitudes.

+0

¡Muchas gracias! :) – AME

Cuestiones relacionadas