Cálculo de NDVI con QGIS (Guía rápida)

1. Cargar raster multibanda (mínimo las 4 primeras).

2. En Propiedades, pestaña Estilo, establecer secuencia de bandas 321 y Mejora de contraste “Estirar a MinMax” -> Aplicar (esto es para ver si no hay problemas con el despliegue del color verdadero en la imagen).

3. En Raster -> Calculadora Raster, expresar la fórmula:

    (banda4-banda3)/(banda3+banda4)

sin olvidar los paréntesis ni el nombre del archivo de salida. Aceptar.

4. En el archivo resultante, Propiedades -> pestaña Estilo, escoger “Mapa de Color” en Mapa de Color.

5. En pestaña “Mapa de Color”, establecer, por ejemplo, 9 entradas en “Generar nuevo mapa de color” y luego “Clasificar”-> Aplicar.

6. Los dos o tres últimos colores corresponden a los de la vegetación. Cambiar a verde (doble click) de más a menos intenso; de abajo hacia arriba. Anote el código de color para que le sirva de guía para el cambio del sucesivo. Guardar el estilo (*.qml)

7. Cuando la imagen se cargue en otro proyecto, en la pestaña Estilo, en Mejora de contraste “Estirar a MinMax” y escoger “Mapa de Color” en Mapa de Color, Aplicar. Cargar el estilo de mapa de color guardado en el paso 6 (pestaña Mapa de Color).

Esto fue lo que obtuve:

Parece que 9 clases es demasiado. Las primeras (tonos azules) servirían, por ejemplo, para la profundidad de los cuerpos de agua.

Esta entrada fue publicada en SIG, Software Libre, Teledetección. Guarda el enlace permanente.

24 respuestas a Cálculo de NDVI con QGIS (Guía rápida)

  1. jorgearevalo dijo:

    Hola, muy interesante la miniguía. Precisamente, estoy tratando de mostrar una cobertura NDVI en Mapserver y tengo problemas en la visualización y leyenda. Me he puesto a jugar con QGIS y he dado con la misma opción que mencionas por casualidad, toqueteando.

    Una cosa que intenté antes fue usar la opción de “Valores mínimo/máximo personalizados” y “Usar desviación estándar”, sacando estos valores con gdalinfo, pero no pude ver nada hasta que no elegí la opción de “Estirar a MinMax”.

    Mi pregunta es, ¿cuál es la base teórica que subyace bajo esa opción?, ¿por qué he podido ver correctamente clasificado mi NDVI y diferenciar visualmente los distintos valores al aplicar esa opción?

    Creo que esto está relacionado con https://joseguerreroa.wordpress.com/2011/09/17/como-cargar-y-desplegar-una-imagen-multiespectral-en-qgis/, ¿cierto?

    Saludos, y muchas gracias

    • Gracias por tu comentario. Las bases teóricas están relacionadas con la equalización del histograma con ensanchamiento de contraste. Si buscas por esas palabras clave te encontrarás con las expresiones matemáticas en las cuales se basa dicha equalización.

      Saludos

  2. jorgearevalo dijo:

    Sí, ya estoy buscando ese término, muchas gracias por la referencia🙂.

    Por otro lado, he conseguido generar una leyenda en base a los valores de la banda del NDVI usando GRASS, que es una de las cosas que quería conseguir. No sé si es la manera “ortodoxa” de hacerlo, pero me ha funcionado🙂

  3. También he hecho lo del NDVI con MultiSpec (Free Ware de la Universidad de Purdue):

    https://joseguerreroa.wordpress.com/2011/09/01/indice-de-vegetacion-de-diferencias-normalizadas-ndvi-con-multispecwin32/

    Por cierto, he visto tu Blog en Inglés (muy bueno) pero me parece que ahora estás en España. Cualquier pregunta que haga por allá, te importaría si la hago es español? Se me hace menos expedito redactarlas en Inglés. Estuve ayer hablando precisamente de cómo instalar GDAL en Windows con un colega y tu tienes un artículo al respecto (yo trabajo principalmente en Debian testing y ni idea de como compilar en Windows pero como está esa opción que tu expones).

    Saludos

    • jorgearevalo dijo:

      Gracias. Por supuesto, puedes hacer las preguntas en español. Colaboro en el desarrollo de GDAL y PostGIS, así que todo lo que pueda resolverte relacionado con estos temas, estaré encantado.

      Yo no trabajo bajo Windows, pero bastante gente quería usar PostGIS Raster en Windows, y por eso hice la guía.

      • Gracias. Me gustaría pasar de formato GeoTiff a ASCII con GDAL. Lo pregunto para no tener que hacerlo con ArcToolBox de ArcGis ya que todavía no he encontrado la manera de lograrlo con GDAL. Con gdalinfo –formats|grep -i ascii me salen estas opciones:

          AAIGrid (rwv): Arc/Info ASCII Grid
          GSAG (rw): Golden Software ASCII Grid (.grd)
          USGSDEM (rw): USGS Optional ASCII DEM (and CDED)
        

        Cuál sería la manera adecuada de hacerlo de forma que genere un *.txt al estilo de raster to ascci de ArcGis?

  4. jorgearevalo dijo:

    Prueba con gdal_translate -of “AAIGrid” fichero_origen.tif fichero_destino.asc

    Luego gdal_translate tiene más opciones: http://www.gdal.org/gdal_translate.html

  5. Pingback: Tabla de color para ráster, definida por usuario, usando GRASS en QGIS |

  6. Luis dijo:

    Esto, es excelente mi querido desconocido. Muy breve, muy conciso, muy claro. Mis felicitaciones por compartir conocimiento.

  7. Esteban Souza dijo:

    Hola José,
    Antes que nada, muchas gracias por compartir esto, es una enorme ayuda para principiantes como yo!
    Seguí el proceso como indicaste, pero el raster resultantes tiene todos los valores iguales a 1. Alguna idea de donde estuvo mi error?
    No es un problema de la imagen porque con otro programa me dio resultados.
    Gracias!

  8. mari dijo:

    hola..! estoy comenzando a usar QGIS, lo que estoy haciendo es un mapa y representando la ubicacion de estaciones metereologicas oficiales y no oficiales de mi pais. pero la cuestion es que no se como y/o donde puedo colocarle la leyenda al mapa ya que una vez que coloque la leyenda debo guardar esa imagen para colocarla en mi tesis.

    gracias

  9. Nicolás García dijo:

    hola. ¿como uso el Raster calculator de Qgis para generar una imagen a partir de otra de Worldview2-8 bandas para “quitar” la capa de agua y poder ver el fondo de la costa?
    Gracias.

    • Mira, yo no sé si con el ráster calculator se podrá hacer ese split (lo contrario, el apilamiento, está en la opción de miscelaneos del menú ráster) pero si esa imagen es del “tipo Modis” al abrirla con QGIS debería aparecer una ventana con la posibilidad de seleccionar las que desees. Por otra parte, si no es así, es decir, si es una imagen multi banda, entonces el cargarla al ambiente de GRASS-QGIS debería producir un split de todas ellas lo cual permitiría seleccionar luego las que nos interesan para combinarlas en una sola fuera de GRASS (con la herramienta de apilamiento de QGIS). Una manera más fácil de hacer eso sería con rgdal de lenguaje R. Otra, un poco más complicada, con GDAL/OGR de Python.

  10. Ana A dijo:

    Hola Jose, no encuentro la forma de calcular ndvi con imagenes Modis? y cual seria el producto que hay que descargar del modis? Gracias
    Saludos

  11. Ana A dijo:

    Jose gracias por la respuesta. Preguntaba por la imagenes diarias con las bandas multiespectral.
    Saludos

  12. Mara Illanes dijo:

    Muchas gracias por compartir procesos en Q GIS y de una forma tan explicada. Un favor, estoy trabajando con el r.mapcalculator en Q GIS (herramienta de GRASS integrada) y quiero calcular el NDVI a través de la misma, para lo cual ingreso en la parte de Raster Layer A un Combinado de 4 bandas (un sólo archivo ráster) y en Expression coloco la fórmula: float(A-B)/(A+B) y le doy a Run y me sale el siguiente mensaje:
    The following layers were not correctly generated.
    Calculated
    You can check the log messages to find more information about the execution of the algorithm
    Aclarar que anteriormente hice este procedimiento y me funcionó a la perfección y de pronto se me “deshabilitó”.

    • Yo tengo un buen tiempo que no trabajo regularmente con GRASS pero si puedo decirte que no puedes trabajar con rásteres apilados como multibanda. Necesariamente tienes que pasarle las bandas individuales. Ese es el problema.

      • Mara Illanes dijo:

        Muchas gracias por la pronta respuesta, pero insisto en que anteriormente me había ejecutado la función sin ningún problema, con un archivo ráster generado a partir de la combinación de cuatro bandas (imagen Landsat 8). De todas formas, trataré con banda individuales. Gracias por el blog que es de mucha ayuda para nosotros.

      • Entonces “check the log messages to find more information about the execution of the algorithm”. Allí puede estar la respuesta. Fue lo que te faltó añadir en tu primer mensaje.

        Saludos

  13. Hola! estoy trabajando con NDVI en Qgis, y querría saber si hay forma de generar automaticamente poligonos según los rangos de NDVI. Por ejemplo, marque un polígono de 100 hectareas y a eso le calculé el NDVI. hay alguna función que cree polígonos según el rango de NDVI, por ejemplo rango 0.2-0.4 de NDVI de dicha imagen, de manera de no tener que dibujar el polígono manualmente? Muchas gracias! Saludos

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s