Tengo 3 archivos GeoTIFF de 1 banda separados. La interpretación del color para la banda es gris. Quiero un archivo RGB de 3 bandas. He usado gdal_merge.py
gdal_merge.py -separate file1.tif file2.tif file3.tif -o output_file.tif
Pero la interpretación del color para las 3 bandas del archivo resultante output_tif es gris, indefinido, indefinido. Aparte de eso, todos los píxeles son 0 .
Si ejecuto pct2rgb.py, obtengo un archivo RGB:
pct2rgb.py output_file.tif output_file_rgb.tif
Pero, por supuesto, los píxeles también son 0. Entonces, tengo 3 preguntas:
- ¿Es gdal_merge.py la herramienta adecuada para combinar 3 archivos de 1 banda en un archivo RGB de 3 bandas?
- ¿Por qué obtengo una interpretación de color indefinida para las bandas?
- ¿Es pct2rgb la herramienta adecuada para transformar archivos de 3 bandas con esta interpretación de color en archivos RGB?
ACTUALIZACIÓN : Los rásteres no tienen una tabla de colores. Solo interpretación del color: gris.
Por otro lado, los valores de píxeles van de 0 a 1023 (esto es deliberado)
Más datos: son rásteres rotados (sin norte hacia arriba), pero todos tienen la misma geotransformación.
ACTUALIZACIÓN 2 : puedo deformar las imágenes para hacerlas hacia el norte, construir un VRT y agregar ColorInterp para cada banda, pero aún obtengo la interpretación del color como gris, indefinido, indefinido en el resultado de salida.
El problema es que necesito crear una tabla de colores en, al menos, la primera banda. Sé cómo crearlos , pero no sé cuántas entradas debe tener mi tabla. ¿Por qué hay 13 entradas en el ejemplo de preguntas frecuentes de Raster de GDAL? Todos los píxeles tienen valores entre 0 y 1023, si ayuda.
ACTUALIZACIÓN 3 : Aparentemente, no hay forma en el formato TIFF de especificar realmente la interpretación del color de cada banda. La forma en que GDAL crea la interpretación del color al leer un archivo TIFF es una combinación del valor de la etiqueta PHOTOMETRIC y EXTRASAMPLES .
Lectura sobre estas etiquetas:
PHOTOMETRIC representa el espacio de color de los datos de la imagen. Un valor de 2 significa que los componentes de un valor de píxel son RGB, pero asume Byte píxeles, y tengo UInt16 píxeles (lo intenté
-co "PHOTOMETRIC=rgb"
y obtuve un error). Por lo tanto, no puedo especificar la etiqueta PHOTOMETRIC para el archivo de salida.EXTRASAMPLES especifica que cada píxel tiene N componentes adicionales. No estoy seguro de cómo usar esta etiqueta para crear mi archivo combinado. O si lo necesito.
Entonces, en la actualización 2 sugiero la creación de una ColorTable, pero ¿cómo? En mis 3 archivos de entrada, los valores de píxeles van de 0 a 1023. ¿Tengo que hacerlos coincidir con los colores? ¿Tengo que crear una ColorTable con 1024 entradas? ¿Cómo?
En la actualización 3, parece que podría usar algunas etiquetas GeoTIFF al crear el archivo combinado, pero no estoy seguro de si realmente puedo usarlas, o cómo.
fuente
Respuestas:
gdal_merge.py es la herramienta correcta para 'apilar' sus imágenes de entrada.
Suponiendo que su primera banda tiene una tabla de colores válida, puede usar:
gdal_merge.py -separate -pct -o output_file.tif file1.tif file2.tif file3.tif
Nota: El comando se ha formateado
-o output_file.tif
antes de la lista de entradas.De los documentos:
Probaría su salida
gdalinfo -stats
para asegurarme de que se apila correctamente.Actualizado para OP
De la lista de osgeo , parece que podría probar un formato diferente para verificar los resultados:
-Evan (el afiche) conoce a GDAL por dentro y por fuera.
fuente
La primera forma en que puedo pensar es construir un vrt, editar y traducir:
agregue la etiqueta de color interp donde sea necesario:
y entonces:
fuente
Su banda de escala de grises de entrada tiene valores de 0 a 1024, pero RGB solo permite valores de 0 a 255 para cada banda.
Puede usar
gdal_translate -scale [src_min src_max [dst_min dst_max]]
para reescalar su archivo fuente.En una segunda ejecución, puede apilar sus tres bandas con gdal_merge.py y aplicar
-co "PHOTOMETRIC=rgb"
.fuente