Quiero georreferenciar un ráster usando python
y GDAL
. Mi enfoque actual es llamar gdal_translate
y gdalwarp
usar os.system
y 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_translate
se 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 gdal
no lo veo gdal.gdal_translate
como 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
geotransform
matriz que usa gdal para describir una ubicación ráster (posición, escala de píxeles y sesgo) y elepsg
có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