2012-06-29 6 views
5

Ho un'immagine di 3712x3712 pixel di un satellite eumetsat geostazionario. V'è una certa nera intorno alla terra, in modo tale che l'immagine assomiglia a questo:Come ottenere latitudine e longitute per un pixel di un'immagine eumetsat usando python?

Per ogni pixel della terra, mi piacerebbe ottenere la sua latitute e longitudine. So che c'è pyproj e ho potuto istanziare una sporgenza in questo modo:

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

ma geting LatLon del pixel (usando sat(x,y,inverse=True) dove x e y sono le coordinate del pixel nell'immagine) non è ovviamente possibile poiché la sporgenza non conosce la dimensione (3712x3712) della mia immagine.

Cosa mi manca?

+0

Non ho dimestichezza con pyproj, ma questo non richiederebbe il "clocking" della terra basato su alcune posizioni note, cioè la realizzazione della posizione dell'Australia rispetto all'immagine? Pyproj lo fa già? O intendevi solo una latitudine relativa di una forma circolare? –

+0

Scusa, non capisco cosa stai chiedendo. Voglio essere in grado di farlo: per i pixel nell'immagine: print latlon (pixel) – AME

+1

Quanto preciso è necessario essere? Se riesci a farla franca con pochi chilometri di errore, potresti approssimare la terra come una sfera, fare una geometria semplice e dimenticare completamente Pyproj (non so nulla di pyproj, ma potrei aiutare con la geometria). –

risposta

1

Penso che si stia utilizzando la libreria di proiezione e le impostazioni corrette.

La risoluzione tipica dei pixel (km per pixel) viene riportata sul sito Web eumetsat here Segnala circa 3 km per pixel.

È possibile controllarlo eseguendo una conversione lon/lat su x, y sul meridiano e dividendolo per il numero di pixel (-81 gradi, 81 gradi è l'intervallo massimo, vedere il sito eumetsat per i riferimenti, 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 

Fornirà un valore di 2.927 che si adatta alle informazioni fornite dall'eumetsat.

Successivamente è possibile calibrare ulteriormente definendo un insieme di punti ben noti della mappa (ad esempio caratteristiche costiere), determinando la loro posizione x/y e cercando le loro coordinate lat/lon in linea. Puoi provare con una gamma di risoluzioni in pixel e verificare quale si adatta meglio o utilizzare una routine più elaborata.

La risoluzione può dipendere dalla vicinanza all'equatore, vedere here. Quindi potresti aver bisogno di usare la suddetta routine a diverse latitudini.

+0

Grazie mille! :) – AME

Problemi correlati