J'utilise le module gdal de python pour analyser des images satellite - RADARSAT-2 et TerraSAR-X - enregistrées en fichiers .tif. J'ai besoin d'aller chercher des valeurs de pixels aux coordonnées lues dans un fichier de formes. Bien que le code fonctionne bien pour les images RS2, j'ai des problèmes avec les images TSX.La géotransformation lue par gdal à partir d'un Tiff TerraSAR-X est incorrecte
La géotransformation lue par gdal est désactivée pour les produits TSX, ce qui donne des indices de pixels négatifs pour l'emplacement des entités de formes sur l'image. Le même code fonctionne bien pour les produits RS2.
Une idée de ce qui se passe et comment y remédier?
Exemple d'un géotransformation correct d'un produit RS2:
(-74.98992283355103, 7.186522272956171e-05, 0.0, 62.273587708987776, 0.0, -7.186522272956171e-05)
Exemple de geotransforms que je reçois des produits TSX:
(506998.75, 2.5, 0.0, 6919001.25, 0.0, -2.5)
extrait de code:
import gdal
gdal.UseExceptions()
# Read image, band, geotransform
dataset = gdal.Open(paths['TSXtiff'])
band = dataset.GetRasterBand(band_index)
gt = dataset.GetGeoTransform()
# Read shapefile
shapefile = ogr.Open(paths["Shapefile"])
layer = shapefile.GetLayer()
# Add pixel_value for each feature to associated list
pixels_at_shp = []
for feature in layer :
geometry = feature.GetGeometryRef()
# Coordinates in map units
# In GDAL, mx = px*gt[1] + gt[0], my = py*gt[5] + gt[3]
mx,my = geometry.GetX(), geometry.GetY()
# Convert to pixel coordinates
px = int((mx-gt[0])/gt[1])
py = int((my-gt[3])/gt[5])
band_values = band.ReadAsArray(px,py,1,1)
pixels_at_shp.append(band_values)
shapefile = None
return pixels_at_shp