Come faccio a cambiare il colore “no data” di geotiff in bianco / trasparente anziché nero?


17

Sto preparando i dati per l'inclusione in un nodo geonetwork, in cui le mappe vengono visualizzate tramite geoserver.

Il problema è che le celle che non hanno "nessun dato" vengono visualizzate come nere nel geotiff e io vorrei che il colore fosse impostato su bianco o trasparente.

Sto usando ArcView e non ho accesso né all'analista spaziale né all'analista 3D.

Preferirei non dover assegnare un nuovo file sld e attualmente sto usando "Usa mappa colori" durante l'esportazione da ArcGIS Desktop.


Risposte:


7

In teoria, devi capire quali valori di pixel rappresentano le celle senza dati e quindi modificare la tabella dei colori per assegnare i valori ROSSO, VERDE, BLU (RGB) nella tabella dei colori a 255.255.255 per quel valore di cella.

Se non si dispone della licenza appropriata per eseguire questa operazione in Arc, è possibile utilizzare lo strumento gdal_translate (uno degli strumenti da riga di comando gdal / ogr)

  1. esporta la tabella dei colori per il tuo tif come file XML.
    gdal_translate -of VRT myImage.tif outColorTable.vrt

  2. apri il file .vrt in un editor di testo e trova la voce per il valore dei pixel senza dati. Non esiste un numero indice per i valori della cella, quindi è necessario eseguire il conto alla rovescia per la voce corretta.

  3. modificare questo valore per essere <Entry c1="255" c2="255" c3="255" c4="255"/>

  4. ora, crea un nuovo tif basato sulla nuova tabella dei colori
    gdal_translate outColorTable.vrt newCorrected.tif

(esempio aggiunto in base al commento qui sotto)

Quando eseguo il comando nell'articolo n. 2 sopra e apro il file .vrt in un editor di testo, vedo i contenuti XML.

Parte del file include linee simili a questa, ne ho ritagliate la maggior parte.


Ciao David. Grazie per la risposta che ho cercato di realizzare con FWTools (un po 'più facile da navigare per i principianti). Ma ho difficoltà a trovare il "valore" nel file vrt perché quando apro il file con il blocco note ora sono parole riconoscibili ed è composto principalmente da testo casuale (codice). Sto facendo qualcosa di sbagliato? - qualsiasi aiuto aggiuntivo molto apprezzato.
arrivo il

@ user1106 - Riprovare a eseguire i comandi precedenti, avevo lasciato fuori l'opzione di formato di output. Dovrebbe funzionare ora!
DavidF,

9

Ho scritto un piccolo script python gdal per questo, gdalsetnull.py , un semplice programma da riga di comando per impostare il valore raster NODATA specificato, senza creare un nuovo raster. Il percorso più semplice per installare GDAL su Windows è tramite OSGeo4W . Esempi:

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

Se non ti dispiace un po 'di elaborazione dell'overhead e della creazione di una nuova immagine piuttosto che della modifica in atto, c'è anche gdal_calc che consente di modificare effettivamente i valori della cella anziché semplicemente aggiornare i metadati.

Impostare i valori di zero e inferiori su null:

gdal_calc.py -A input.tif --outfile=result.tif --calc="A*(A>0)" --NoDataValue=0

Matt ben fatto!
DavidF,

Questo risponde davvero alla domanda? Il tuo (simpatico!) Script imposterà un colore su NULL, ma immagino che sia ancora specifico dell'implementazione WMS, in quale colore (diciamo anche trasparente è un colore) i valori NODATA sono resi.
alfonx,

@alfonx, sì, c'è una differenza tra una cella registrata come nodatae una cella che dice che lo sono0 e l'applicazione decide se ignorare questo o qualche altro valore. ArcGIS rispetta i risultati di gdalsetnull.py; Non ho esperienza con GeoServer.
matt wilkie,

1
Sembra che sia stato spostato di nuovo, ora su: github.com/maphew/maphew-gcode-archive/blob/…
Steve Bennett

link risolto, grazie per la nota! @SteveBennett ora dovremmo eliminare questi meta commenti.
matt wilkie,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.