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.