Ich versuche, einige bioklimatische Rasterdateien zu verarbeiten, die unter http://www.worldclim.org/current (bioclim set) heruntergeladen werden können . Sie scheinen Nodata-Werte zu haben, die -3.4e+38
gemäß QGIS festgelegt wurden (wenn man die Ausgabe von gdalinfo betrachtet, ist es -3.39999999999999996e+38
).
Es scheint, dass GDAL-Tools nicht in der Lage sind, mit diesem NODATA-Wert umzugehen, und QGIS scheint auch nicht in der Lage zu sein, ihn zu erkennen. Im Ebenenstil gibt es einen Eintrag für -3,4e + 38, der auf 100% transparent eingestellt ist, aber dennoch solche Werte anzeigt, obwohl die Auswahl "Features identifizieren" anzeigt, dass sie den Wert -3,4e + 38 haben.
Ich habe versucht, eine vrt zu erstellen, um die Nodata-Werte stattdessen in -9999 zu konvertieren, aber das hat auch nicht funktioniert.
Wie kann ich solche Dateien verarbeiten, um verwendbare Nodata-Werte zu erhalten?
Antworten:
GDAL kann diese Werte verarbeiten. Tatsächlich ist der Standardwert für NoData in GDAL fast derselbe wie bei Ihnen. Ich denke, dass das Problem ein Gleitkommafehler in QGIS ist. Ich habe das gleiche Problem mit Fließkomma-NoData-Werten.
Wenn Sie den NoData-Wert mit GDAL ändern möchten, können Sie gdalwarp oder vielleicht gdal_translate verwenden und den nodata-Wert von dort auf eine Ganzzahl setzen (-dstnodata bzw. -a_nodata). In der Vergangenheit konnte ich meinen NoData-Wert in einem 64-Bit-Float-Raster erfolgreich auf -999 setzen. Da wir jedoch festgestellt haben, dass diesbezüglich ein Fließkomma-Problem besteht, möchte ich nicht garantieren, dass dies in allen Fällen funktioniert.
quelle
gdal_translate -a_nodata -9999 input.tif output.tif
obwohl ich es getangdalwarp -dstnodata -9999 input.tif output.tif
habe. Aus einer 9-MB-Eingabedatei resultierte mein Ansatz in einer 26-MB-Datei, während aus gdalwarp eine 52-MB-Ausgabedatei resultierte. Wenn das Raster jedoch Float-Werte enthält, funktioniert mein Ansatz nicht dort, wo dies der Fall ist.-co COMPRESS=LZW
.Es ist mir gelungen, eine Problemumgehung für dieses Problem zu finden, indem ich das Datenformat von Float32 in Int16 konvertiert habe. Der Minimalwert ist dann -32768 und kann als Knotendatenwert verarbeitet werden. Der folgende Befehl hat den Trick ausgeführt:
Es gibt wahrscheinlich eine bessere Lösung, aber das löst zumindest mein unmittelbares Problem.
quelle
Die Antwort auf diese Frage würde wahrscheinlich auch dieses Problem lösen: Ändern der Knotenpixel von -3.40282347e + 38 auf eine andere Zahl in QGIS
Zusammenfassend können Sie r.null aus der Verarbeitungs-Toolbox verwenden, um die Werte zu ändern.
quelle
Sie könnten versuchen, gdal_calc.py input.tif --outfile = output.tif --calc = "A * (A> 0)" --NoDataValue = 0
quelle