Ich habe große Probleme mit GDAL. Abgesehen von der zeitweise fehlenden Dokumentation scheint Python wenig Unterstützung zu bieten. Auf jeden Fall ist dies nur ein Batch-Reprojekt-Skript, das folgendermaßen abläuft:
source_file = gdal.Open(filepath.encode("ascii"))
source_wkt = source_file.GetProjectionRef()
source_srs = osr.SpatialReference()
source_srs.ImportFromWkt(source_wkt)
reproj_file = gdal.AutoCreateWarpedVRT(source_file, source_wkt, dest_wkt)
gdal.ReprojectImage(source_file, reproj_file, source_wkt, dest_wkt)
reproj_attributes = reproj_file.GetGeoTransform()
driver = gdal.GetDriverByName("GTiff")
dest_file = driver.CreateCopy(outputpath.encode("ascii"), reproj_file, 0)
Der Teil dest_srs und des_wkt ist in diesem Codeabschnitt nicht definiert, befindet sich jedoch außerhalb der Schleife (da er nur einmal definiert werden muss). Es scheint einmal zu funktionieren, ich kann ein gut aussehendes Tif daraus machen, mir dann einen 'ERROR 6 WriteBlock () nicht unterstützt' geben und Python stürzt ab. Dies sind alles GeoTIFFs, die auf dieselbe Weise mit denselben Basisdaten (nur zu unterschiedlichen Zeiten) erstellt wurden.
Aufgrund der Art der Neuprojektion (von GCS zu PCS) erzeugt AutoCreateWarpedVRT in der Regel viel Leerzeichen, gibt ihm jedoch den Wert 0, was ein Problem darstellt, da dies ein realer Datenwert sein kann. Gibt es eine Möglichkeit, den Nodata-Wert stattdessen auf -99 zu setzen?
quelle
gdalwarp -t_srs '+proj=utm +zone=11 +datum=WGS84' raw_spot.tif utm11.tif
. Es gibt es schon lange, es ist reich an Funktionen, gut getestet und wahrscheinlich schneller als ein reiner Python-Ansatz.Antworten:
In Bezug auf
AutoCreateWarpedVRT
Leerzeichen.Werfen Sie einen Blick auf dieses gdal Fehlerticket .
Insbesondere heißt es dort:
quelle
Option
Lösung, aber die Umstellung auf Aufrufgdalwarp
durchsubprocess
löste das Problem mit nicht maskierter NoData.