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?
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?
Risposte:
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 () .
Il file mondiale (.tfw) che accompagna un GeoTIFF contiene: