Quero georreferenciar uma varredura usando python
e GDAL
. Minha abordagem atual é chamar gdal_translate
e gdalwarp
usar os.system
uma lista feia de pontos de controle de solo. Eu realmente gostaria de uma maneira de fazer isso nativamente por dentro python
.
Este é o processo atual que estou 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"')
Há uma pergunta e resposta anteriores de 2012 que afirmam que gdal_translate
podem ser acessadas após a importação gdal
. Não tenho certeza se está obsoleto ou se está errado, mas quando corro from osgeo import gdal
não vejo gdal.gdal_translate
como uma opção.
Não sei se existe, mas adoraria poder traduzir e reprojetar rasters de maneira pitônica. Por exemplo:
# 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*)
Essa abordagem é possível?
Respostas:
Aqui está um exemplo que faz aproximadamente o que você pede. Os principais parâmetros são a
geotransform
matriz que o gdal usa para descrever uma localização de varredura (posição, escala de pixels e inclinação) e oepsg
código da projeção. Com isso, o código a seguir deve georreferenciar adequadamente a varredura e especificar sua projeção.Não testei muito, mas parecia funcionar para mim. Você precisaria ter certeza de que as coordenadas inseridas estão corretas e provavelmente mudam a projeção e a escala / tamanho de pixels. Espero que ajude.
fonte