Ich verwende gdalwarp, um SRTM-Kacheln in der Nähe der Datenlinie zu manipulieren (dh 180 °, auch bekannt als Antimeridian). SRTM-Kacheln haben eine sehr geringe Überlappung (1/2 Pixel) mit dem Meridian. Sie können dies mit gdalinfo sehen:
gdalinfo S16W180.hgt
Driver: SRTMHGT/SRTMHGT File Format
Files: S16W180.hgt
Size is 1201, 1201
[...]
Lower Left (-180.0004167, -16.0004167) (180d 0' 1.50"W, 16d 0' 1.50"S)
Upper Right (-178.9995833, -14.9995833) (178d59'58.50"W, 14d59'58.50"S)
[...]
Die Quelle überspannt also die Datenlinie um einen winzigen Betrag.
Dies führt zu Problemen mit gdalwarp, was zu riesigen, weltumspannenden Ausgaben führt.
gdalwarp -t_srs "epsg:900913" S16W180.hgt test.tif
gdalinfo test.tif
Driver: GTiff/GeoTIFF
Files: test.tif
Size is 1703, 5
[...]
Lower Left (-20037508.330,-1806798.473) (180d 0' 0.00"W, 16d 7'13.00"S)
Upper Right (20032839.451,-1689152.120) (179d57'29.01"E, 15d 5'45.84"S)
Beachten Sie, dass sich die Längengrade (fast) über den gesamten Globus erstrecken und auch die Anzahl der Linien unerwartet gering ist (5).
Ist das ein Fehler in Gdalwarp? Wenn nicht, welche Optionen müssen an gdalwarp übergeben werden, um eine sinnvolle Ausgabe zu erhalten?
Antworten:
Eine einfache Problemumgehung wäre, das Koordinatensystem "manuell" als PROJ-Zeichenfolge anzugeben. Auf diese Weise können Sie den
+over
Schalter verwenden, der das Umschließen des Antimeridians deaktiviert:Wenn ich das mache und dann
gdalinfo
das Ergebnis mache , bekomme ich folgendes:Ich habe die PROJ-Zeichenfolge (ohne
+over
) erhalten, indem ich mir die ursprüngliche Ausgabe von angesehen habegdalinfo
. Es wurde in einenEXTENSION[...]
Block des Koordinatensystems aufgenommen.quelle
Es funktioniert in zwei Schritten:
Der erste Befehl startet das zusätzliche halbe Pixel auf der falschen Seite des 180 ° -Meridians. Sie erhalten eine Ausgabedatei mit der Größe 1178P x 1222L.
Alternativ mit gdal_translate:
Erstellen einer Ausgabedatei mit der Größe 1179P x 1223L.
quelle
Da ich vor dem gleichen Problem stand, schrieb ich ein kleines Shell-Skript, das herausfindet, ob die Rasterdatei die Datenlinie überschreitet. Wenn true, wird die folgende Option zu gdalwarp hinzugefügt:
So funktioniert das Skript Schritt für Schritt:
UPDATE Bessere Version des Skripts, erfordert GDAL 2.0+ und Python: Alte Version unten.
quelle
Dies ist ein Problem in der GDAL-Bibliothek. Es scheint, dass GDALSuggestedWarpOutput () eine seltsame Ausgabe für die Breite und Höhe der Ausgabedatei liefert.
Ich habe noch keinen Weg gefunden, dies zu umgehen.
quelle