Ich möchte ein Raster mit python
und georeferenzieren GDAL
. Mein aktueller Ansatz ist es, eine hässliche Liste von Bodenkontrollpunkten aufzurufen gdal_translate
und zu gdalwarp
verwenden os.system
. Ich würde wirklich gerne einen Weg finden, dies von Haus aus zu tun python
.
Dies ist der aktuelle Prozess, den ich verwende:
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"')
Es gibt eine frühere Frage und Antwort aus dem Jahr 2012, auf die gdal_translate
nach dem Import zugegriffen werden kann gdal
. Ich bin nicht sicher, ob es veraltet ist oder ob es falsch ist, aber wenn ich es ausführe, from osgeo import gdal
sehe ich es nicht gdal.gdal_translate
als Option.
Ich weiß nicht, ob es existiert, aber ich würde es lieben, wenn ich Raster auf pythonische Weise übersetzen und neu projizieren könnte. Zum Beispiel:
# 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*)
Ist ein solcher Ansatz möglich?
Antworten:
Hier ist ein Beispiel, das ungefähr das tut, wonach Sie fragen. Die Hauptparameter sind das
geotransform
Array, mit dem gdal eine Rasterposition (Position, Pixelskala und Versatz) und denepsg
Code der Projektion beschreibt. Damit sollte der folgende Code das Raster ordnungsgemäß georeferenzieren und seine Projektion angeben.Ich habe nicht so viel getestet, aber es schien für mich zu funktionieren. Sie müssten sicherstellen, dass die von mir eingegebenen Koordinaten korrekt sind, und wahrscheinlich die Projektion und die Pixelskala / -größe ändern. Ich hoffe es hilft.
quelle