5 votos

¿Escribir el nombre de la banda, en la cabecera (tipo de archivo ENVI), usando GDAL?

Estoy escribiendo arrays de numpy como MEDIO de imágenes con gdal en python. Hasta el día de hoy, siempre he accedido a la cabecera de la manera difícil por la lectura en todas las líneas, cambiar la información y escribirla de nuevo. Esto no es sólo la codificación intensivo, sino también los rendimientos de múltiples fuentes de error.

Una solución mejor sería mediante el uso de SetMetadata. He intentado:

myArray = np.full(shape=(4,3), fill_value=10)

driver = gdal.GetDriverByName('ENVI')
destination = driver.Create("test.bsq", ncols, nrows, 1, gdal.GDT_Float32)
destination.GetRasterBand(1).WriteArray(myArray)
destination.SetMetadataItem('band names', 'band hello world', 'ENVI')

pero en el archivo de salida, la banda se llama "banda de 1". Mi información es sobrescrito por la función integrada para el encabezado de la creación?

O tal vez tengo que poner el nombre de cada banda de forma individual como

b = destination.GetRasterBand(1)
b.SetBandName("band hello world")
b.WriteArray(myArray)

Pero "SetBandName" no existe y no puedo encontrar ¿de qué otra manera se supone que debe ser llamado.

¿Cómo puedo suministro de los nombres de la banda para LA imágenes de entonces?

4voto

Lucas Puntos 128

Usted necesita utilizar el método SetDescription del objeto de banda de trama.

rb = destination.GetRasterBand(1)
rb.SetDescription('band hello world')
rb.WriteArray(myArray)

$ cat /tmp/test.hdr 
ENVI
description = {
/tmp/test.bsq}
samples = 3
lines   = 4
bands   = 1
header offset = 0
file type = ENVI Standard
data type = 4
interleave = bsq
byte order = 0
band names = {
band hello world}

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X