¿Cómo cambio el color geotiff "sin datos" a blanco / transparente en lugar de negro?

17

Estoy preparando datos para incluirlos en un nodo de geonetwork, donde los mapas se muestran a través de geoserver.

El problema es que las celdas que no tienen "datos" se muestran en negro en el geotiff y me gustaría que el color se establezca en blanco o transparente.

Estoy usando ArcView y no tengo acceso ni a Spatial Analyst ni a 3D analyst.

Preferiría no tener que asignar un nuevo archivo sld y actualmente estoy usando "Usar mapa de colores" al exportar desde ArcGIS Desktop.

mapeo
fuente

Respuestas:

7

En concepto, debe averiguar qué valores de píxeles representan celdas sin datos y luego editar su tabla de colores para asignar los valores ROJO, VERDE, AZUL (RGB) en la tabla de colores para que sean 255,255,255 para ese valor de celda.

Si no tiene la licencia adecuada para hacer esto en Arc, puede usar la herramienta gdal_translate (una de las herramientas de línea de comandos gdal / ogr)

  1. exporta la tabla de colores para tu tif como un archivo XML.
    gdal_translate -of VRT myImage.tif outColorTable.vrt

  2. abra el archivo .vrt en un editor de texto y encuentre la entrada para el valor de sus píxeles sin datos. No hay un número de índice para los valores de las celdas, por lo que debe realizar una cuenta regresiva hasta la entrada correcta.

  3. edite este valor para ser <Entry c1="255" c2="255" c3="255" c4="255"/>

  4. ahora, cree un nuevo tif basado en la nueva tabla de colores
    gdal_translate outColorTable.vrt newCorrected.tif

(ejemplo agregado basado en el comentario a continuación)

Cuando ejecuto el comando en el elemento # 2 anterior y abro el archivo .vrt en un editor de texto, veo contenido XML.

Parte del archivo incluye líneas que se ven así, he cortado la mayoría de ellas.

DavidF
fuente
Hola david Gracias por la respuesta que he estado tratando de llevar a cabo con FWTools (un poco más fácil de navegar para los novatos). Pero tengo problemas para encontrar el "valor" en el archivo vrt porque cuando abro el archivo con el bloc de notas, ahora son palabras discernibles y se compone principalmente de texto aleatorio (código). ¿Estoy haciendo algo mal? - Cualquier ayuda adicional muy apreciada.
mapeo
@ user1106 - Intente con los comandos anteriores nuevamente, me había salido la opción de formato de salida. ¡Debería funcionar ahora!
DavidF
9

Escribí un pequeño script gdal python para esto, gdalsetnull.py , un simple programa de línea de comando para establecer el valor de ráster especificado NODATA, sin crear un nuevo ráster. La ruta más fácil para instalar GDAL en Windows es a través de OSGeo4W . Ejemplos:

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

Si no le importa algo de procesamiento y crear una nueva imagen en lugar de editar en su lugar, también hay gdal_calc que permite cambiar los valores de las celdas en lugar de simplemente actualizar los metadatos.

Establezca valores de cero e inferiores en nulo:

gdal_calc.py -A input.tif --outfile=result.tif --calc="A*(A>0)" --NoDataValue=0
wilkie mate
fuente
Bien hecho Matt!
DavidF
¿Esto realmente responde la pregunta? Su script (¡agradable!) Establecerá un color en NULL, pero supongo que todavía es específico de la implementación de WMS, en el que el color (digamos que transparente también es un color) se representan los valores NODATA.
alfonx
@alfonx, sí, hay una diferencia entre una celda que está registrada como una nodatacelda que dice que soy0 y la aplicación decide si se debe ignorar o algún otro valor. ArcGIS respeta los resultados de gdalsetnull.py; No tengo experiencia con GeoServer.
Matt Wilkie
1
Parece que se movió de nuevo, ahora en: github.com/maphew/maphew-gcode-archive/blob/…
Steve Bennett
enlace fijo, gracias por la nota! @SteveBennett deberíamos eliminar estos meta comentarios ahora.
matt wilkie