Ich habe ein Bild, das ich mit einem AOI-Polygon geschnitten habe. Der Konturbereich wurde auf Pixelwert = 0 gesetzt und ich habe einen Knotenwert von -32768. Ich möchte den Nodata-Wert in Null neu definieren. Früher habe ich dies mit ArcMap einfach im Rasterrechner gemacht, aber in QGIS sehe ich nicht, wie ich es machen könnte. Irgendwelche Ideen?
7
Antworten:
In QGIS können Sie den Rasterrechner mit der folgenden Berechnung verwenden:
Wenn bei dieser Berechnung der Zellenwert -32768 ist, erhalten Sie in dieser Zelle eine 0, und wenn er sich von -32768 unterscheidet, behält die Zelle den Wert bei, den sie hatte.
quelle
Die einfachste einstufige und IMO beständigste und zuverlässigste Lösung für die Neuklassifizierung von NoData auf Null ist die Verwendung des SAGA-Tools (Reclassify Grid Values) in der Verarbeitungs-Toolbox.
Scrollen Sie nach Auswahl des zu klassifizierenden Rasters einfach zum Ende des Dialogfelds und stellen Sie sicher, dass das
replace no data values
Kontrollkästchen aktiviert ist. Der Standardwert ist Null (aber Sie können natürlich auch etwas anderes ersetzen). Deaktivieren Sie dann das Kontrollkästchenreplace other values
und lassen Sie alle anderen Felder in Ruhe (Sie müssen also nur sicherstellen, dass ein Kontrollkästchen aktiviert ist, und ein anderes deaktivieren - es sind keine weiteren Einstellungen erforderlich).quelle
Ich habe eine Lösung dafür gefunden. Zuerst konvertiere ich das Bild in eine vrt-Ebene (gdalbuildvrt) mit -srcnodata 0, dann übersetze ich es zurück in eine tif-Datei mit gdal_translate -a_nodata. Hat gut funktioniert! :) :)
quelle
Ich denke, Sie können das mit dem Rasterrechner tun .
Wenn nicht mit Hilfe von GRASS Plugin und r.null werden Sie es einfach tun. Diese Option bedeutet, dass Sie zuerst ein GRASS-Mapset erstellen müssen, um Ihr Raster zu importieren.
quelle
r.null
habe es für mich getan.Da ich das gleiche Problem hatte, habe ich am Ende Python direkt verwendet - möglicherweise müssen Sie numpy.where für Ihren speziellen Zweck anpassen. Im folgenden Fall bleiben die Pixelwerte unverändert, wenn sie> = 0 sind. Alle anderen Pixel - in diesem Fall nur diejenigen mit dem Wert ohne Daten - werden auf "0" gesetzt.
quelle
Ich habe versucht, sowohl das Rastercalc-Plugin als auch den Raster-Rechner zu verwenden, und keiner hat funktioniert - Syntaxfehler. Was funktionierte, war das Warp-Tool und die Angabe der Quell- und Ziel-Nodata-Werte (siehe Antwort von underdark auf eine ähnliche Frage Wie kann man fehlende Werte von der Rasterebene ausschließen? )
quelle
Was für mich funktioniert hat, war, das Raster als .asc-Datei zu exportieren, dann in einem Texteditor zu öffnen und mithilfe von Suchen und Ersetzen den alten NoData-Wert durch den gewünschten Wert zu ersetzen.
quelle
In meinem Fall war es ein Satellitenbild, das ich in 8 Bit konvertieren musste, und es gab keine Datenwerte aus, wenn -scale in gdal_translate verwendet wurde.
Ich konnte das Problem lösen, indem ich das Raster (Ebene mit der rechten Maustaste -> Exportieren -> Ebene speichern unter ...) als gerenderte Daten in eine neue Datei exportierte (Kontrollkästchen oben im Dialogfenster).
quelle
Für Python-Skripte können Sie die folgende Zeile vor WriteArray verwenden.
quelle