Tengo un archivo ráster de tipo flotante (un NDVI hecho con ERDAS IMAGINE) y me gustaría convertirlo en un archivo ráster de tipo interger para poder utilizar la función de Estadísticas Focales (Mayoría). ¿Hay alguna forma de hacerlo?
Respuestas
¿Demasiados anuncios?La respuesta de Menno funcionará pero siempre redondeará hacia abajo. Por ejemplo, 99,99999 se convierte en 99.
Esta función en la calculadora de trama o en la herramienta de álgebra de mapas hará el redondeo lógico.
Int(yourraster + 0.5)
De este modo, 99,99999 se convierte en 100 y y 99,49999 se convierte en 99.
Del hecho de que usted planea utilizar las estadísticas focales deduzco que debe ser capaz de utilizar la extensión del analista espacial.
En la caja de herramientas del analista espacial hay una herramienta Int en el conjunto de herramientas de Matemáticas, que convierte una trama de puntos flotantes en una trama de enteros.
Necesita estirar los valores de punto flotante NDVI (-1 a 1) a 8 bits sin signo (0 - 255). Si convierte los valores flotantes en enteros directamente, el raster resultante sólo tendrá un valor entero. Puede estirar los valores en el Calculadora Raster utilizando la siguiente ecuación:
(NDVI - -1) * 255 / (1 - -1) + 0
Utilizo la calculadora de trama todo el tiempo para cartografiar las llanuras de inundación fluviales.
Descubrí que cuando convertía un conjunto de tramas en un conjunto de tramas enteras utilizando Int () en la calculadora de tramas, perdía información.
Para evitar la probabilidad de que esto ocurra, yo aconsejaría utilizar Con () en su lugar para convertir todos los valores a un único valor entero de su elección y luego convertir ese producto a un polígono utilizando la conversión de trama a polígono.
Utilizando Int(yourraster + 0.5)
en la herramienta Calculadora de trama era lo que necesitaba.
Como acabo de descubrir, si los valores de la trama son negativos (por ejemplo, un MDE por debajo del nivel del mar), este método no redondeará los flotantes al entero más cercano.
Por ejemplo -6.47 + 0.5 = -5.97
y luego se truncará a -5
.
Por lo tanto, para los rásteres con valores negativos, utilice Int(yourraster - 0.5)
Puede parecer obvio, pero me costó más de lo que me gustaría admitir.