Como usar o GDAL para converter dados Int16 em bytes

8

Eu tenho alguns dados com bandas Int16 no formato HDF.

Quero converter isso em bandas de bytes no formato GeoTIFF.

O intervalo de dados para o Int16 é de -2000 a 12000, então eu quero mapear isso para o intervalo de bytes de 0 a 255.

Como faço isso com as ferramentas GDAL? (se possível) Caso contrário, como posso escrever um script Python para fazer isso.

ljbade
fonte

Respostas:

8

Não tenho certeza se você conhece o recurso -scale da ferramenta gdaltranslate. pode ser exatamente o que você está procurando. O padrão é de 0 a 255 e o mínimo e o máximo de suas rasters. Você também deve definir os valores nulos antes de usar isso.

Você pode especificar a saída como tipo Byte apenas para ter certeza -ot "Byte"

espero que isto ajude, :)

Editar: Eu sempre gosto de incluir links úteis: http://www.gdal.org/gdal_translate.html

s_a
fonte
Você é muito bem-vindo.
s_a
6

O que você quer fazer é chamado Normalização e a fórmula geral é:

Fórmula de normalização

Onde:

  • In = Novo valor
  • I = Valor Presente
  • Min = O valor atual mínimo
  • Max = O valor atual máximo
  • newMin / newMax = o mínimo / homem desejado (no seu caso, 0 e 255)

Você pode usar uma combinação de gdal / python / numpy para abrir conjuntos de dados hdf e executar cálculos de células com base na fórmula acima (mas não é tão simples quanto em um exemplo: um arquivo geotiff; você pode encontrar um script inicial agora como carregar os subdatasets aqui )

nickves
fonte
Obrigado pela informação. Vou ver se consigo escrever um script para isso.
Ljbade 13/09/12