Comment trouver les valeurs lat / lon pour chaque pixel d'un fichier GeoTIFF?


9

Je souhaite stocker un fichier GeoTIFF pixel par pixel dans la base de données. J'ai besoin de stocker les valeurs des pixels avec le lat / lon de ce pixel sur l'image GeoTIFF. Est-il possible de faire ça?


1
Le but est-il de pouvoir interroger par Lat / Lon? Vous pouvez accomplir cela avec GDAL en utilisant l'attribut geotransform - je peux fournir un exemple python. La conversion pourrait être pré-rendue en un géotiff à 2 bandes (Band1 - LAT, Band2 - LON), mais je me demande s'il ne serait pas plus efficace de le faire à la volée. Je suppose qu'un cas d'utilisation aiderait.
Jay Laura

Réponses:


9

Dans un sens générique, utilisez les paramètres de transformation affine , qui devraient être disponibles avec n'importe quel format de fichier raster. Avec GDAL, cela est disponible avec GetGeoTransform () ou la fonction ST_GeoReference () de PostGIS . Après avoir trouvé ces six paramètres, il suffit de déterminer lesquels ils sont, puis une fonction peut être créée pour se transformer en espace linéaire.

Par exemple, avec 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)

Par exemple, s'il y a un pixel à col = 10, row = 22, alors les coordonnées réelles au centre du pixel sont:

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

Quelque chose de similaire peut être préparé pour PostGIS avec ST_Affine () .


1

Cela peut être un peu archaïque: convertissez les pixels en points, ajoutez des champs lat et long et remplissez avec des valeurs lat et long.


0

Le fichier mondial (.tfw) qui accompagne un GeoTIFF contient:

  • taille de pixel dans la direction x (et la direction y) en unités de carte / pixel et
  • Coordonnée x (et coordonnée y) du centre du pixel supérieur gauche. C'est tout ce dont vous avez besoin pour calculer la position en Lat / Lon de chaque pixel.

2
En plus de ce que vous décrivez, vous devez au minimum connaître le système de coordonnées! (Un fichier mondial ne contient pas de telles informations.)
whuber

1
De plus, tous les GeoTIFF ne contiennent pas de fichier mondial. Un vrai GeoTIFF a les informations de coordonnées stockées dans l'en-tête, pas dans un fichier séparé. Cependant, le terme "GeoTIFF" est souvent appliqué aux images TIFF avec un fichier mondial. Le fait est qu'il n'y aura pas toujours de TET.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.