Quiero georreferenciar un ráster usando pythony GDAL. Mi enfoque actual es llamar gdal_translatey gdalwarpusar os.systemy una lista fea de puntos de control en tierra. Realmente me gustaría una forma de hacer esto de forma nativa python.
Este es el proceso actual que estoy usando:
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"')
Hay una pregunta y respuesta anterior de 2012 que establece que gdal_translatese puede acceder después de la importación gdal. No estoy seguro de si está obsoleto o si está mal, pero cuando lo ejecuto from osgeo import gdalno lo veo gdal.gdal_translatecomo una opción.
No sé si existe, pero me encantaría poder traducir y reproyectar rásteres de manera pitónica. Por ejemplo:
# 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*)
¿Es posible este enfoque?

Respuestas:
Aquí hay un ejemplo que hace aproximadamente lo que pides. Los parámetros principales son la
geotransformmatriz que usa gdal para describir una ubicación ráster (posición, escala de píxeles y sesgo) y elepsgcódigo de la proyección. Con eso, el siguiente código debería georreferenciar correctamente el ráster y especificar su proyección.No probé tanto, pero parecía funcionar para mí. Tendría que asegurarse de que las coordenadas que puse sean correctas y probablemente cambien la proyección y la escala / tamaño de píxeles. Espero eso ayude.
fuente