8 votos

Creación de un compuesto de valor máximo con QGIS?

Quiero crear un ráster de valor máximo compuesto en QGIS

Tengo tres imágenes rasterizadas: Oct 2012 Nov 2012 Dic 2012 Todas están en formato TIFF, Float32, EPSG:4326 - WGS 84

Quiero apilar estas imágenes y, a continuación, examinar cada valor, píxel por píxel, y retener sólo el valor más alto para esa ubicación de píxel para crear un compuesto de valor máximo (consulte http://en.wikipedia.org/wiki/Maximum-value_composite_procedure )

p. ej. (son números inventados con fines ilustrativos):

El píxel en la fila 205 y la columna 106 tendrá tres valores: 90 75 100

Quiero elegir 100, luego pasar al siguiente píxel y hacer lo mismo. Al final debería tener una trama final con valores máximos solamente, ¡un compuesto de valores máximos!

Dispongo de QGIS 1.8.0 y 2.0.1, GRASS 6.4.3RC2 y SAGA 2.0.8.

0 votos

de acuerdo, realmente debería haber funciones agregadas simples como MAX, MIN.

5voto

sashkello Puntos 325

Creo que puedes usar la calculadora de raster de QGIS para esto (Raster > Raster calculator...).

Teniendo las capas rasterA, rasterB y rasterC, y asumiendo que sólo tienes una banda en cada una de ellas, puedes usar una expresión como esta

("rasterA@1" >= "rasterB@1" AND "rasterA@1" >= "rasterC@1") * "rasterA@1" +
("rasterB@1" > "rasterA@1" AND "rasterB@1" >= "rasterC@1") * "rasterB@1" +
("rasterC@1" > "rasterA@1" AND "rasterC@1" > "rasterB@1") * "rasterC@1"

Las partes ("rasterA@1" >= "rasterB@1" AND "rasterB@1" >= "rasterC@1"), comprueban si el valor de una capa determinada es mayor que el de las demás y dan como resultado 0 o 1, tanto si se cumple la condición como si no. Después de la multiplicación el resultado tendrá 0 o el valor del raster. La suma de todos los resultados del árbol le dará el valor más alto.

Probablemente haya una forma más elegante de hacerlo, pero creo que funcionará.

0voto

speakman Puntos 186

Desde Sintaxis del calculador de rasterización de QGIS , cortesía de @underdark:

(a>b AND a>c) * a + (b>a AND b>c) * b + (c>a AND c>b) * c

Esta respuesta me funcionó en QGIS 2.0.1, creo que el método gt() al que también se hace referencia puede que sólo funcione para la versión 1.8, no vi que el plugin RasterCalc estuviera disponible en la 2.0.1.

0 votos

Creo que en esto te faltan los casos a=b o a=c o b=c. Y en cualquiera de esos casos el resultado será 0 en lugar del valor máximo. Imagina el siguiente caso a=2, b=2, c=1.

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