Come trovare i valori lat / lon per ogni pixel in un file GeoTIFF?


9

Voglio archiviare un file GeoTIFF pixel per pixel nel database. Devo memorizzare i valori dei pixel insieme al lat / lon di quel pixel sull'immagine GeoTIFF. è possibile farlo?


1
L'obiettivo è essere in grado di eseguire query da Lat / Lon? Puoi farlo con GDAL usando l'attributo geotrasformato: posso fornire un esempio di Python. La conversione potrebbe essere pre-renderizzata in un geotiff a 2 bande (Band1 - LAT, Band2 - LON), ma mi chiedo se non sarebbe più efficiente farlo al volo. Immagino che un caso d'uso sarebbe di aiuto.
Jay Laura

Risposte:


9

In senso generico, utilizzare i parametri di trasformazione affine , che dovrebbero essere disponibili con qualsiasi formato di file raster. Con GDAL, è disponibile con GetGeoTransform () , o PostGIS' () ST_GeoReference funzione. Dopo aver trovato questi sei parametri, bisogna solo determinare quali sono, quindi una funzione può essere trasformata in spazio lineare.

Ad esempio, con Python:

from osgeo import gdal
ds = gdal.Open('myfile.tif')

# unravel GDAL affine transform parameters
c, a, b, f, d, e = ds.GetGeoTransform()

def pixel2coord(col, row):
    """Returns global coordinates to pixel center using base-0 raster index"""
    xp = a * col + b * row + a * 0.5 + b * 0.5 + c
    yp = d * col + e * row + d * 0.5 + e * 0.5 + f
    return(xp, yp)

Ad esempio, se c'è un pixel in col = 10, riga = 22, le coordinate del mondo reale al centro del pixel sono:

>>> pixel2coord(10, 22)
(2780000.0, 6162300.0)

Qualcosa di simile può essere elaborato per PostGIS con ST_Affine () .


1

Potrebbe essere un po 'arcaico: converti i pixel in punti, aggiungi campi lat e long e popola con valori lat e long.


0

Il file mondiale (.tfw) che accompagna un GeoTIFF contiene:

  • dimensione dei pixel nella direzione x (e direzione y) in unità della mappa / pixel e
  • coordinata x (e coordinata y) del centro del pixel in alto a sinistra. Questo è tutto ciò che serve per calcolare la posizione in Lat / Lon di ogni pixel.

2
Oltre a quello che descrivi, come minimo devi conoscere il sistema di coordinate! (Un file mondiale non include tali informazioni.)
whuber

1
Inoltre, non tutti i GeoTIFF contengono un file mondiale. Un vero GeoTIFF ha le informazioni sulle coordinate memorizzate nell'intestazione, non in un file separato. Tuttavia, il termine "GeoTIFF" viene spesso applicato alle immagini TIFF con un file mondiale. Il punto è che non ci sarà sempre un TFW.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.