Cómo usar GDAL para convertir datos Int16 a Byte

8

Tengo algunos datos con bandas Int16 en formato HDF.

Quiero convertir esto a bandas de bytes en formato GeoTIFF.

El rango de datos para Int16 es de -2000 a 12000, por lo que quiero asignar esto al rango de bytes de 0 a 255.

¿Cómo hago esto con las herramientas GDAL? (si es posible) De lo contrario, ¿cómo puedo escribir un script de Python para hacer esto?

ljbade
fuente

Respuestas:

8

No estoy seguro si conoce la función de escala de la herramienta gdaltranslate. puede ser justo lo que estás buscando. El valor predeterminado es 0-255 y el mínimo y máximo de sus rásteres. También debe establecer los valores nulos antes de usar esto.

Es posible que desee especificar la salida como tipo Byte solo para asegurarse -ot "Byte"

espero que esto ayude, :)

Editar: siempre me gusta incluir enlaces útiles: http://www.gdal.org/gdal_translate.html

s_a
fuente
Eres muy bienvenido.
s_a
6

Lo que quieres hacer se llama Normalización y la fórmula general es:

Fórmula de normalización

dónde:

  • En = nuevo valor
  • I = valor presente
  • Min = El valor presente mínimo
  • Max = El valor presente máximo
  • newMin / newMax = el Min / Man deseado (en su caso 0 y 255)

Puede usar una combinación de gdal / python / numpy para abrir conjuntos de datos hdf y realizar cálculos de celdas basados ​​en la fórmula anterior (pero no es tan sencillo como con, por ejemplo, un archivo geotiff; puede encontrar un script inicial ahora cómo cargar los subdatasets aquí )

nickves
fuente
Gracias por la info. Veré si puedo escribir un guión para esto.
ljbade