Ich habe ein DEM-Raster mit Pixelwerten zwischen ca. 3000 und -0.0003. Ich muss alle Pixel mit einem Wert von 0 und kleiner (<= 0) auf "nodata" setzen (für spätere Raster-Berechnungen und um die Dateigröße zu reduzieren).
Es scheint für mich, dass dies eine Aufgabe für den Rasterrechner (eingestellter Wert von Pixeln <= 0 bis "nodata") oder eine Neuklassifizierung (eingestellter Wert von Pixeln <= 0 bis "nodata" und alle anderen Werte behalten) ist, aber ich weiß nicht Fachwissen.
Antworten:
Ich habe keine Ein-Werkzeug-Lösung gefunden, aber Sie können zuerst mit dem Raster-Rechner alle Werte unter einem bestimmten Schwellenwert auf Null setzen und dann mit gdal_translate mit -a_nodata 0 die 0 in Nodata umwandeln.
quelle
Hier sind die GRASS mapcalc-Ausdrücke, um einen Bereich auf NULL zu setzen:
quelle
Dies kann in QGIS in einem Schritt im Rasterrechner erfolgen.
Verwenden Sie in QGIS3 für eine Rasterebene mit dem Namen "x" den folgenden Ausdruck:
Dieser Trick ordnet Rasterwerte x> 0 dem Verhältnis x / 1 = x und Rasterwerte x <= 0 dem Verhältnis 0/0 = NaN zu. Diese NaN wird als FLOAT_MIN (aka -3.402832 ... e + 38) gerendert, wenn das Raster ein 4-Byte-Float ist.
Seltsamerweise scheint diese Frage eine Weile her zu sein, und die meisten Befragten sagten (soweit meine heutige schnelle Google-Suche zeigt), dass dies nicht in einem einzigen Schritt erledigt werden kann. Es sollte auf keinen Fall so gehackt werden müssen. Die QGIS-Dokumentation könnte auch besser sein.
quelle
Vielen Dank an Dominik. Meine erste Antwort ist für QGIS 2.8.3 nicht korrekt (der Ausdruck
"myraster@1" > 0
gibt 0 oder 1 für Nicht- Dateneingaben zurück , für Nodateneingaben gibt er Nodaten zurück ).Der folgende QGIS Raster Calculator- Ausdruck sollte ausreichen (Raster-Layer mit dem Namen "myraster"), da der QGIS Raster Calculator alle Pixel, die die Bedingung nicht erfüllen, auf Nodata setzt :Die folgende Lösung basiert auf https://docs.qgis.org/2.8/de/docs/training_manual/processing/no_data.html und funktioniert für QGIS 2.8.3 mit SAGA 2.1.2.
Verwenden Sie in der QGIS-Verarbeitung den SAGA- Raster-Rechner und geben Sie Folgendes in die Formel ein :
oder
Dadurch werden alle Werte kleiner oder gleich 0 in Knoten (0/0) umgewandelt.
quelle
Sie können den Layer auch speichern (Rechtsklick, Speichern unter ...) und einen Knotendatenbereich angeben. Dadurch werden die ursprünglichen Knoten beibehalten und neue Knoten für den angegebenen Wertebereich erstellt.
quelle
Ich hatte ein ähnliches Problem, aber BEIDE Werte, die ich in No-Data- UND vorhandene No-Data-Werte im Raster konvertieren wollte .
Ich bin auf diese Seite gekommen, um Hilfe zu erhalten, aber ich denke, dass die Ansätze hier eine Einschränkung enthalten. Die Methoden von @underdark und @Micha scheinen nur zu funktionieren, wenn im Raster keine Werte ohne Daten vorhanden sind.
Um dies zu umgehen, müssen Sie sowohl die No-Data-Werte als auch die Werte, die Sie in No-Data konvertieren möchten, in eine konsistente Zahl konvertieren. Es ist dann in Ordnung, den zweiten Schritt von @underdark zu verwenden.
Verwenden Sie dazu die Processing Toolbox> Reclassify Grid Values (SAGA), um die Werte und die Werte ohne Daten gleichzeitig in eine gemeinsame Zahl (z. B. -999) umzuwandeln. Verwenden Sie insbesondere die Methode "range" und geben Sie den Bereich an. Wählen Sie dann unter Keine Daten ersetzen denselben Wert aus (z. B. -999). Deaktivieren Sie die Option zum Ersetzen anderer Werte. Dies funktioniert für eine einzelne Wertänderung oder auch für komplexere Änderungen.
Folgen Sie dann der Methode von @underdark und speichern Sie das Raster mit Raster> Conversion> Translate, und kreuzen Sie no-data an, und geben Sie den von Ihnen verwendeten Wert ein (z. B. -999).
quelle
Klicken Sie mit der rechten Maustaste auf das Raster, gehen Sie zu den Rastereigenschaften, wählen Sie die dritte Option "Transparenz" aus, fügen Sie auf der Registerkarte "Kein Datenwert" den zusätzlichen Wert 0 hinzu und klicken Sie auf "Anwenden". Dies ist die ähnliche Option "Hintergrundwert anzeigen" in arcgis.
quelle