Je souhaite géoréférencer un raster à l'aide de python
et GDAL
. Mon approche actuelle est d'appeler gdal_translate
et d' gdalwarp
utiliser os.system
et une vilaine liste de points de contrôle au sol. J'aimerais vraiment un moyen de le faire nativement à l'intérieur python
.
Voici le processus que j'utilise actuellement:
import os
os.system('gdal_translate -of GTiff -gcp 1251.92 414.538 -7.9164e+06 5.21094e+06 -gcp 865.827 107.699 -7.91651e+06 5.21104e+06 "inraster.tif" "outraster1.tif"')
os.system('gdalwarp -r bilinear -tps -co COMPRESS=NONE "outraster2.tif" "outraster3.tif"')
Il y a une précédente question et réponse de 2012 qui indique que l' gdal_translate
on peut y accéder après l'importation gdal
. Je ne sais pas si est obsolète, ou si c'est faux, mais quand je cours, from osgeo import gdal
je ne vois pas gdal.gdal_translate
d'option.
Je ne sais pas si elle existe mais j'aimerais beaucoup pouvoir traduire et reprojeter des rasters de manière pythonique. Par exemple:
# translate
gcp_points = [(1251.92, 414.538), (-7.9164e+06, 5.21094e+06)]
gdal.gdal_translate(in_raster, gcp_points, out_raster1)
# warp
gdal.gdalwarp(out_raster1, out_raster2, 'bilinear', args*)
Une telle approche est-elle possible?
Réponses:
Voici un exemple qui fait à peu près ce que vous demandez. Les principaux paramètres sont le
geotransform
tableau que gdal utilise pour décrire un emplacement de trame (position, échelle de pixels et asymétrie) et leepsg
code de la projection. Avec cela, le code suivant doit géoréférencer correctement le raster et spécifier sa projection.Je n'ai pas beaucoup testé, mais cela a semblé fonctionner pour moi. Vous devez vous assurer que les coordonnées que j'ai saisies sont correctes et probablement changer la projection et l'échelle / taille des pixels. J'espère que cela aide.
la source