sábado, 12 de abril de 2014

Elaboración de Heatmaps usando Quantum GIS

En esta oportunidad quisiera mostrarles a través de un ejemplo práctico la herramienta de análisis del Quantum Gis denominada heatmap. 

¿Qué son los Heatmaps?
En primer lugar podemos decir que los Heatmaps (Mapas de calor) son una de las mejores herramientas de visualización y cálculo de la densidad de datos de puntos, en otras palabras los mapas de calor muestran las ubicaciones de las densidades más altas de las entidades geográficas, esta metodología permite generar su agrupación geográfica (clusters) de un fenómeno que deseamos analizar.

Aplicaciones
El uso de los heatmaps son variados, debido a que permite visualizar geográficamente lugares en donde se presenta los patrones de ocurrencia más alta que la media de cosas como por ejemplo la actividad de delicuencia, los accidentes de tráfico o la ubicación de nuevas tiendas que pueden surgir.

Ejemplo Práctico

Datos: 
En esta oportunidad vamos a emplear un grupo de datos vectoriales 
  • Una cobertura de puntos, los cuales se tratan de pasivos ambientales de mineria, información disponible aquí: Pasivos Ambientales.
  • Una cobertura de polígonos, que representan el límite departamental, disponibles en el siguiente enlace: Limite Departamental

Software: Se va a emplear la última versión el Quantum Gis 2.2 "Valmiera" lanzada en  febrero de este año.

Procedimiento:

1. Como primer paso hay que descomprimir el archivo descargado, como se podrá ver es un ESRI Shapefile de puntos, el cual deberá ser adicionado a nuestro área de trabajo del Qgis, para ello podemos hacerlo directamente con el icono resaltado en la imagen o en su defecto ir a Capa >>Añadir capa vectorial y ubicar dentro de nuestras carpetas el archivo vectorial.

 Figura 1: Adicionando los datos de puntos del ejemplo

2.  Se puede apreciar si abrimos la tabla de atributos de la capa vectorial la existencia de 2,133 puntos, en esta oportunidad para efectos prácticos vamos a trabajar sobre una zona en donde existe mayor cantidad de puntos y sobre ellos vamos a generar el heatmap, por lo tanto vamos a cargar el otro archivo descargado (Límite Departamental).

 
Figura 2: Adicionando los datos de polígonos del ejemplo

3. Apoyados con la cobertura de polígonos, vamos a determinar cúal sería el departamento que contiene la mayor cantidad de puntos, para ello vamos a emplear las herramientas de análisis disponibles en la barra de menú Vectorial >>Herramientas de análisis>>Puntos en polígonos. En la siguiente ventana se indicará las respectivas coberturas para generar un nuevo polígono (Figura 4), el cual se adicionará un campo, para este ejemplo por defecto lo dejaremos en CTAPTO, en dicho campo se mostrará el número de puntos existentes por cada Departamento, se graba el nuevo polígono (points_polygonos.shp).

Figura 3: Empleando la herramienta Contar Puntos en Polígonos

 
Figura 4: Configurando la herramienta Contar puntos en Polígonos


4.  Paso siguiente hay que verificar la tabla de atributos del nuevo polígono generado, con la finalidad de ver los valores dentro del campo CTAPTO, como nuestro objetivo es identificar la zona en donde existen mayores cantidades de puntos, realizando un ordenamiento de los datos se comprobó que es el departamento de Cajamarca el que posee la mayor cantidad de puntos.


Figura 5:Visualizando el polígono con mayor cantidad de puntos


5. Una vez con esa información realizamos una selección de la cobertura de puntos ubicados dentro del departamento de Cajamarca, luego se exporta como una nueva cobertura, con dichos puntos mostrados en la Figura 7se va a realizar el heatmap.

 

 Figura 6: Selección de los puntos y exportación de nueva cobertura


  Figura 7: Cobertura final de la Selección de los puntos

6. Ahora que tenemos los puntos seleccionados (select_pasivos.shp) vamos a emplear la herramienta heatmap del Qgis que se ubica dentro del menú Ráster >> Mapa de calor>>Heatmap (Figura 7). Luego en la siguiente ventana se tiene que indicar el nombre del ráster de salida además de los valores del radio (m), este valor especifica la distancia alrededor de un punto en el que se hará sentir la influencia del punto, al establecer un valor de radio demasido pequeño, los patrones de densidad se limitarán a la zona alrededor del punto, mientras que si establecemos un radio de búsqueda con patrones demasiados grandes, la densidad será demasiado generalizada. Posteriormente se puede modificar el número de filas y columnas con el cual se establece el tamaño de las celdas, es decir que al aumentar el número de files o columnas disminuirá el tamaño de las celdas lo que origina un aumento del tamaño del archivo de salida. Con todo ello se logra obtener el ráster resultante (heatmap_pasivos_mineria.tif).

Figura 7: Complemento heatmap

Figura 8: Configurando el complemento heatmap

Figura 9: Resultado aplicando el complemento heatmap

7. El resultado final es una imagen ráster que va desde negro (significa la existencia de pocos puntos alrededor) a blanco (gran número de puntos alrededor de la ubicación dada). Para una mejor visualización se va a modificar los colores, por lo tanto nos vamos a propiedades de la capa dentro de la pestaña de estilo, cambiamos el tipo de renderizador, para este caso usaremos unibanda pseudocolor y para generar el mapa de color se empleará la opción YlOrRd, después de esto hacer click en Clasificar y finalmente en Aceptar.
 
 Figura 10: Configurando el heatmap


 Figura 11: Heatmap generado aplicando mejoras de visualización



8. Una vez obtenido el mapa de calor, si bien es útil para la interpretación visual, no lo es tanto si deseamos utilizar estos resultados para el análisis, como por ejemplo si deseamos identificar los llamados hotspots, lo que permite agrupar las zonas en donde existe la más alta concentración de puntos. Para ello vamos ahora a identificar esos puntos a partir del heatmap generado. Ir a Ráster >>Calculadora ráster, luego se tendrá que decidir sobre el umbral primero, en nuestro caso vamos a considerar el valor de 0.02, por lo tanto todos los valores por encima de este umbral se considera que están en un clúster, una vez definido esto, pasamos a nombrar la capa de salida (hotspot_pasivos.tif), mientras que en la banda de raster identificada heatmap_pasivos_mineria@1, hacer doble Click, con ello se añadirá a la zona de la calculadora de campos, aquí debemos completar la expresión como: heatmap_pasivos_mineria@1>0.02, finalmente verifique que este marcado la casilla de "Añadir resultados al proyecto" luego Aceptar.

 
Figura 12: Empleo de la calculadora ráster para generar hotspots

9. La nueva capa añadida (hotspot_pasivos.tif), contine valores de 0 ó 1, todos los pixeles de la capa de entrada, donde el valor del pixel es mayor que 0.02 ahora tiene un valor de 1 y los demás son 0. Posteriormente vamos a convertir el ráster en una capa vectorial de polígonos, para ello nos vamos a Ráster>>Conversión>>Poligonizar (Ráster a vectorial), aquí debemos nombrar a la capa vectorial de salida (hotspot_pasivos_poly.shp) y también activar la casilla del nombre del campo (DN), finalmente Aceptar.

Figura 13: Conversión de ráster a vector


10. Una vez generada la nueva capa vectorial, la misma es la representación vectorial de las agrupaciones (clúster) creados en el paso anterior, por lo tanto contienen valores 0 y 1, como paso siguiente vamos a filtrar o seleccionar solamente los valores de 1, para ello solamente tenemos que estar dentro de la capa vectorial (hotspot_pasivos_poly.shp) haciendo un Click derecho ubicar Filtrar, en dicha ventana simplemente hacer doble Click sobre DN y dentro de la zona de "Expresión del filtrado específica del proveedor", terminar la expresión "DN"=1 luego Aceptar (Figura 15); como paso final el resultado obtenido hay que exportarlo como una nueva capa vectorial (hotspot_pasivos_final.shp).

 Figura 14: Resultado de generar una capa vectorial con valores de 0 y 1


Figura 15: Filtrado de los valores para generar las agrupaciones (clústers)


Figura 16: Resultado final con los clúster identificados


Con ello se termina este ejemplo, en caso desean profundizar este tema a continuación les voy a recomendar un grupo de enlaces, los mismos que sirvieron como referencia para lograr desarrollar este ejercicio.
  • http://www.qgistutorials.com/en/docs/creating_heatmaps.htm
  • http://www.digital-geography .com/create-point-density-raster-in-qgis/
  • http://www.gislounge.com/heat-maps-in-gis/
  • http://qgis.org/en/docs/user_manual/plugins/plugins_heatmap.html
  • http://idvux.wordpress.com/2009/08/21/heat-maps/