Wie ändere ich die Geotiff-Farbe "Keine Daten" in "Weiß / Transparent" anstatt in "Schwarz"?

17

Ich bereite Daten für die Aufnahme in einen Geonetzwerkknoten vor, wo die Karten über den Geoserver angezeigt werden.

Das Problem ist, dass Zellen, die "keine Daten" enthalten, im Geotiff als schwarz angezeigt werden und ich möchte, dass die Farbe auf weiß oder transparent eingestellt wird.

Ich verwende ArcView und habe weder Zugriff auf Spatial Analyst noch auf 3D-Analysten.

Ich würde es vorziehen, keine neue sld-Datei zuweisen zu müssen und verwende derzeit "Colormap verwenden" beim Exportieren von ArcGIS Desktop.

Abbildung
quelle

Antworten:

7

Im Konzept müssen Sie herausfinden, welche Pixelwerte Zellen ohne Daten darstellen, und dann Ihre Farbtabelle bearbeiten, um den Werten für ROT, GRÜN, BLAU (RGB) in der Farbtabelle 255.255.255 für diesen Zellenwert zuzuweisen.

Wenn Sie in Arc nicht über die entsprechende Lizenz verfügen, können Sie das Tool "gdal_translate" (eines der Befehlszeilen-Tools "gdal / ogr") verwenden.

  1. Exportieren Sie die Farbtabelle für Ihr TIF als XML-Datei.
    gdal_translate -of VRT myImage.tif outColorTable.vrt

  2. Öffnen Sie die .vrt-Datei in einem Texteditor und suchen Sie den Eintrag für den Wert Ihrer No-Data-Pixel. Es gibt keine Indexnummer für die Zellenwerte, daher müssen Sie bis zum richtigen Eintrag herunterzählen.

  3. Bearbeiten Sie diesen Wert, um zu sein <Entry c1="255" c2="255" c3="255" c4="255"/>

  4. Erstellen Sie nun ein neues TIF basierend auf der neuen Farbtabelle
    gdal_translate outColorTable.vrt newCorrected.tif

(Beispiel hinzugefügt aufgrund des Kommentars unten)

Wenn ich den Befehl in Punkt 2 oben ausführe und die .vrt-Datei in einem Texteditor öffne, sehe ich XML-Inhalte.

Ein Teil der Datei enthält Zeilen, die so aussehen, ich habe die meisten davon ausgeschnitten.

DavidF
quelle
Hallo DavidF. Vielen Dank für die Antwort, die ich mit FWTools versucht habe (ein bisschen einfacher für den Anfänger zu navigieren). Ich habe jedoch Probleme, den "Wert" in der vrt-Datei zu finden, da beim Öffnen der Datei mit dem Editor nun erkennbare Wörter angezeigt werden, die hauptsächlich aus zufälligem (Code-) Text bestehen. Mache ich etwas falsch? - jede zusätzliche Hilfe sehr geschätzt.
Aufnahme
@ user1106 - Versuchen Sie die obigen Befehle erneut, ich hatte die Ausgabeformatoption weggelassen. Es sollte jetzt funktionieren!
DavidF
9

Ich habe ein kleines gdal-Python-Skript dafür geschrieben, gdalsetnull.py , ein einfaches Befehlszeilenprogramm zum Festlegen des angegebenen Rasterwerts NODATA, ohne ein neues Raster zu erstellen. Der einfachste Weg, GDAL unter Windows zu installieren, führt über OSGeo4W . Beispiele:

python gdalsetnull.py foobar.tif 0            # pure black is transparent
python gdalsetnull.py foobar.tif 0 255 0      # pure green is
python gdalsetnull.py foobar.tif 50 23 77 100 # arbitrary value in 4 band image

Wenn Sie sich nicht um zusätzlichen Verarbeitungsaufwand und das Erstellen eines neuen Bildes kümmern , anstatt es direkt zu bearbeiten, gibt es auch gdal_calc, mit dem Sie die Zellenwerte ändern können, anstatt nur die Metadaten zu aktualisieren.

Setzen Sie die Werte von Null und darunter auf Null:

gdal_calc.py -A input.tif --outfile=result.tif --calc="A*(A>0)" --NoDataValue=0
Matt Wilkie
quelle
Schön gemacht Matt!
DavidF
Beantwortet dies wirklich die Frage? Ihr (nettes!) Skript setzt eine Farbe auf NULL, aber ich denke, es ist immer noch WMS-spezifisch, in welcher Farbe (sagen wir auch transparent ist eine Farbe) die NODATA-Werte gerendert werden.
Alfonx
@alfonx, ja, es gibt einen Unterschied zwischen einer Zelle, als die aufgezeichnet wurde, nodataund einer Zelle, die angibt, dass ich es bin,0 und der Anwendung, ob sie oder ein anderer Wert ignoriert werden soll. ArcGIS respektiert die Ergebnisse von gdalsetnull.py. Ich habe keine Erfahrung mit GeoServer.
Matt Wilkie
1
Sieht aus wie es wieder verschoben ist, jetzt auf: github.com/maphew/maphew-gcode-archive/blob/…
Steve Bennett
Link behoben, danke für den Hinweis! @SteveBennett wir sollten diese Metakommentare jetzt löschen.
Matt Wilkie