Was tun mit -3.4e + 38 Knotenwerten?


17

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+38gemäß 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?

NODATA-Werte aus der Datei übernommen Das Einstellen der Transparenz hat keine Auswirkung


Angeblich hat qgis in der neuen Version VIEL bessere Nodata-Unterstützung. Ich hatte viele "Nodata" -Probleme mit 1.8 (insbesondere, wenn ich versuchte, das Histogramm oder den Mittelwert innerhalb eines Bereichs zu berechnen).
nickves

Antworten:


4

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.


Danke für deine Antwort, Sylvester. Ich konnte gdal_translate nicht zum Laufen bringen, gdal_translate -a_nodata -9999 input.tif output.tifobwohl ich es getan gdalwarp -dstnodata -9999 input.tif output.tifhabe. 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.
Rudivonstaden

Haben Sie geprüft, ob es dafür ein offenes Ticket im QGIS-Bug-Tracker gibt?
underdark

1
Das Aufblähen der Daten kann entweder auf die Verwendung einer größeren Pixeltiefe zurückzuführen sein (z. B. 63 Bit gegenüber 16 Bit) oder einfach darauf, dass das Original ein JPEG und Ihr neues Ergebnis ein TIFF ist. @underdark - Entschuldigung! Nein, ich habe nicht geprüft, ob ein Ticket offen ist.
MappaGnosis

@underdark Ich konnte kein passendes Ticket finden und habe einen Fehlerbericht hinzugefügt ( hub.qgis.org/issues/6786 ).
Rudivonstaden

1
Für kleinere Dateien müssen Sie nur hinzufügen -co COMPRESS=LZW.
j08lue

11

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:

gdal_translate -ot Int16 -a_nodata -32768 input.tif output.tif

Es gibt wahrscheinlich eine bessere Lösung, aber das löst zumindest mein unmittelbares Problem.

Die Daten wurden korrekt aufgenommen



0

Sie könnten versuchen, gdal_calc.py input.tif --outfile = output.tif --calc = "A * (A> 0)" --NoDataValue = 0

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.