lunes, 11 de noviembre de 2019

Gráficas de capas ráster con QGIS - Raster Data Plotting

https://bitbucket.org/janzandr/rasterdataplotting/src/master/doc/source/logo.png
Una de las principales características de los datos ráster en especial los provenientes de los sensores remotos, es la posibilidad de analizar y explorar un poco más la información que contienen. Dentro del QGIS se dispone de un plugin especializado en realizar gráficas a partir de los datos ráster, nos referimos a RasterDataPlotting.

A continuación vamos a probar su funcionamiento y las opciones que nos brinda, para ello emplearemos datos ráster provenientes del Landsat 8. Si desean probarlo, los datos del ejemplo lo pueden descargar desde aquí.

Como primer paso y asumiendo que tienen instalado el plugin, incorporamos los datos dentro de nuestro QGIS.



Luego de activar el plugin, nos aparecerá su propio panel, en donde debemos seleccionar el tipo de gráfico a realizar. En nuestro caso vamos a seleccionar la primera opción denominada Scatter/Density Plot.



Ahora debemos seleccionar dos bandas del Landsat 8, para asignarle a cada eje (x,y). Para el ejemplo emplearemos en el eje x la banda 4 (Red) y en el eje y la banda 5 (NIR). Ayuda que con nuestras bandas generemos una combinación de bandas en RGB, para lo cual recomiendo hacerlo de manera rápida empleando el plugin Virtual Raster Builder. En la siguiente figura se muestra a un costado, una combinación RGB: 5-4-3 (Color Infrarojo, para resaltar la vegetación), tener presente que nosotros no contamos con todas la bandas del Landsat 8, por lo tanto, para visualizar esta combinación debemos especificar en las propiedades de la capa la debida combinación (4-3-2), siempre y cuando se realizó el apilado (Stack) de bandas en orden ascendente.



En específico lo que apreciamos como gráfica en un Density Plot, considerando la coloración en función a la rampa de color indicado por defecto, el mismo puede cambiar si seleccionamos otra.



Lo interesante de esta herramienta es la posibilidad de generar gráficas de manera interactiva con nuestra capa ráster, es decir que dicha gráfica se ajusta a la vista de mapa presente, la imagen que se presenta considera toda la extensión de nuestra capa, pero si hacemos un zoom a una zona en particular, la misma cambia.



Empleando otra combinación de bandas (RGB: 7-5-3) que nos permite resaltar mejor la vegetación con el río presente, podemos apreciar que se presenta otro tipo de gráfica.


Región de Interés Espectral (ROI)


Ahora vamos a generar los denominados Spectral ROI, a través de los cuales vamos a poder comprobar cómo con las bandas que empleamos se puede diferenciar zonas de vegetación y zonas cubiertas con agua (ríos). Como se aprecia en las imágenes previas, se pudo diferenciar en el gráfico dos zonas en donde se concentran los valores de las bandas. Sobre dichas zonas vamos a generar un ROI, empleando para ello figuras geométricas (elipse, rectángulo y polígono), para nuestro caso estamos generando dos ROI con su coloración respectiva, es decir que al seleccionar un color rojo a nuestro ROI sobre la zona de vegetación, la misma se pintará sobre nuestro mapa, logrando con ello su identificación.



Región de Interés Espacial


Existe también la posibilidad de especificar zonas de interés (ROI), para lo cual podemos generar un polígono identificando dichas zonas, en este caso por ejemplo sobre la zona de los ríos y la vegetación. La simbología (coloración) generada para clasificar dichas zonas luego va ser reflejada en nuestra gráfica.



Otros tipos de gráficos:

El plugin tiene la opción de generar gráficos de tipo Perfil Espectral (Spectral Profile Plot), aunque se aprecia mejor si tenemos imágenes hiperespectrales. Del mismo modo, se puede generar gráficos de perfiles espectrales temporales, pero para ello será primero necesario apoyarnos del plugin Temporal/ Spectral Profile Tool, pero en general se requiere contar con imágenes apiladas de una misma zona en un periodo de tiempo establecido, lo interesando de esto es que podemos generar animaciones.


Referencias:





martes, 24 de septiembre de 2019

Detección de cambios de Modelos de Elevación con Three_D_Change_Detection











En esta oportunidad veremos las principales aplicaciones del plugin de QGIS Three_D_Change_Detection, el cual nos permite visualizar y analizar los cambios en el terreno que se producen sobre un mismo lugar, pero en tiempos distintos.

En general se trabaja con capas ráster que permiten conocer las características de elevación del terreno, hablamos de los DEM (Modelos Digitales de Elevación), las cuales agrupan a los DSM (Modelos Digitales de Superficie) y los DTM (Modelos Digitales de Terreno). Para conocer el detalle y la diferencias entre ellos, recomiendo consultar la referencias 1 y 2


The difference between Digital Surface Model (DSM) and Digital Terrain Models (DTM) when talking about Digital Elevation models (DEM)



Obteniendo los datos 


Con la finalidad de probar el plugin, en esta oportunidad vamos a emplear datos provenientes de la tecnología LIDAR (Light Detection and Ranging). Para descargar datos libres nos iremos al Vermont Open Geodata Portal (http://geodata.vermont.gov/), dentro de todos los datos disponibles seleccionamos el relacionado a Elevation (http://geodata.vermont.gov/pages/elevation), hasta llegar a la aplicación Vermont Lidar Finder .



Luego de entrar a la aplicación podemos seleccionar la zona o tiles que deseamos descargar. Para nuestro ejemplo se ha ubicado una zona en donde se puede extraer capas de tipo DSM y de los DEM. Para los que deseen practicar, lo puedes descargar desde aquí. Los archivos compartidos sufrieron algunos ajustes (recortes), con la finalidad de obtener una misma zona en donde se ha registrado valores en dos tiempos (2013 y 2017).

Trabajando con el Plugin


Ahora que ya tenemos los datos e instalado nuestro plugin, ya podemos empezar a trabajar. Como primer paso hay que mostrarlo en nuestro panel de capas, primero trabajaremos con los datos de tipo DEM.



Ahora activamos el plugin y seleccionamos las capas correspondientes y las opciones como se muestra en la siguiente figura.



Resultados Obtenidos con DEM


Cuando vemos los resultados que nos aparecen, podemos comprobar que se generan varias capas, si hemos activado el Error Probability Maps, nos aparecerá capas adicionales sobre la probabilidad de error por cada capa incorporada, además vemos que nos genera un Hillshade (mapa de sombras), con la finalidad de apreciar mejor los cambios detectados. La capa nueva con los cambios identificados, producto de la diferencia de valores entre ambos periodos, es presentado clasificándolos por categorías y colores en relación a la disminución o incremento de valores. Para comprobar esto, se recomienda emplear el plugin "Value Tool".



Resultados obtenidos con DSM


Ahora vamos a trabajar con las otras capas compartidas (dsm_2013 y dsm_2017), se recomienda abrirlos en otro proyecto del QGIS, también se recomienda superponer una imagen satelital desde las herramientas Web, en mi caso estoy usando las de Google. Finalmente también recomiendo que para cada capa ráster se active las propiedades de leyenda (deslizador de opacidad), para trabajar con transparencias.




Cuando hacemos funcionar al plugin y vemos los resultados, podemos comprobar que las diferencias existentes evidencian una disminución considerable de cobertura de bosque, si jugamos con las transparencias podemos apreciar que existe mayor superficie de bosque en el 2013. Con la ayuda del plugin podemos visualizarlo mejor esta disminución.



Luego si deseamos podemos activar herramientas que nos permiten verlo en 3D para un mejor análisis, asimismo emplear herramientas que nos permitan cuantificar estos cambios.



En resumen, el plugin nos permite identificar rápidamente los cambios que pueden existir en el tiempo sobre un terreno, en base a información recopilada de sensores de alta resolución, como por ejemplo los obtenidos desde drones, permitiendo que podamos tener una primera visión y luego poder analizar las causas.


Referencias:

  1. DEMs Overview: https://www.geoimage.com.au/DEMS/dems-overview
  2. Diferencias entre un DSM, DEM & DTM: https://acolita.com/diferencias-dsm-dem-dtm/
  3. Documentación del plugin: https://github.com/MonsterCrew/Three_D_Change_Detection/wiki



viernes, 20 de septiembre de 2019

Editando ráster temático con el plugin ThRasE


En esta oportunidad vamos a conocer el funcionamiento del plugin de QGIS llamado ThRasE, el cual considero puede ser de mucha utilidad para quienes trabajan con datos ráster muy a menudo. En resumen nos permite modificar una codificación realizada a los píxeles de nuestro ráster, logrando editar y corregir posibles errores identificados.

Preparando nuestra capa ráster


En esta oportunidad como datos de entrada vamos a emplear una capa ráster proveniente de un proceso de clasificación supervisada, teniendo como origen una imagen compuesta del Sentinel 2. Este ejercicio lo vimos en una publicación anterior, cuando usamos el plugin kNN. Se comparte también el estilo de colores en formato de texto, con la finalidad de identificar la codificación de los píxeles, considerando el resultado de la clasificación realizada.
También será necesario emplear una imagen de referencia, en este caso emplearemos una imagen satelital Bing, apoyándonos con el plugin QuickMapServices.


Es importante establecer que este plugin solo trabaja con archivos ráster de tipo byte, por lo tanto debemos verificar primero si cumplimos con esa condición. Para ello nos vamos a Propiedades de la capa y en la parte de información verificamos el tipo de archivo.



Tal como se aprecia en la figura, tenemos como tipo de datos a un float32, por lo tanto, es necesario realizar una conversión, en este caso de las herramientas de ráster, dentro del grupo de Conversión emplearemos Traducir (convertir formato). Cuando lo ejecutamos solo tenemos que elegir a Byte, como el tipo de datos de salida.


Al final con nuestro archivo convertido debemos tener el siguiente resultado al consultar las propiedades de la capa.


Luego debemos configurar la simbología usando el archivo compartido para nuestro ejemplo, aunque para los casos particulares que se presenten, deberán ser elaborados y guardados en un archivo de texto, con la finalidad de tener definido la codificación de los colores. Otra alternativa es guardar el estilo en un archivo de tipo .qml.



Primeros pasos con ThRasE


Asumiendo que lograron instalar el plugin sin problemas, lo vamos a visualizar en nuestra barra de herramientas, luego lo activamos y tendremos una pequeña ventana que nos indica el número de filas y columnas que vamos emplear, en nuestro caso vasta con indicar dos columnas y una fila.



Luego nos aparece la ventana principal del plugin, aquí vamos a seleccionar las dos capas que tenemos disponibles, primero activamos la capa ráster que vamos a editar y al costado colocamos nuestro ráster de apoyo. Verificar que al lado derecho debe seleccionarse nuestra capa ráster, para que se pueda visualizar la tabla con los valores codificados de los píxeles.



Editando nuestra capa ráster


Ya estamos listos para editar nuestra capa ráster, para ello vamos hacer clic en el botón que dice edition, al hacerlo veremos que en la parte inferior se activa las herramientas de edición, teniendo la posibilidad de hacerlo por píxeles, por línea y por polígonos. Pero si bien tenemos a la imagen al costado como referencia para la edición, también podemos incorporar otra capa sobre nuestro ráster, con la finalidad de trabajar transparencias.

Vamos a editar una parte que a simple vista debe corregirse. Si nos basamos en la codificación del ráster, debemos cambiar aquella zona identificada con el código 3 (Suelo desnudo), para pasarlo al código o valor 1 (Bosque). Para ello editamos la tabla de valores tal como se aprecia en la siguiente figura. Tengan mucho cuidado en identificar los valores.


Ahora activamos la edición por polígonos y cubrimos el área a modificar, luego hacemos un clic derecho para que complete el cambio, luego existe un botón para eliminar el polígono y poder apreciar mejor el resultado.


Podemos seguir realizando los cambios que consideramos necesario, hay que tener en cuenta que a veces quedan algunos píxeles libres que necesitan ser modificamos, para ello se recomienda usar la edición by pixels.


Si en caso quieren continuar editando en otro momento, es importante guardar lo que venimos trabajando, por lo tanto, debemos salvarlo haciendo clic en el botón Save, generando luego un archivo de extensión .yml. Este archivo se podrá emplear cuando activamos el plugin, es decir, en lugar de indicar las filas y columnas, vamos a indicarle con la pestaña Load este archivo para que vuelva a cargar nuestra edición.

Revisando nuestros resultados


Con la finalidad de garantizar que nuestros resultados son los más adecuados, existe la opción de poder revisarlos, en este caso el plugin tiene la posibilidad de generar "Tiles", para subdividir la imagen en cuadrículas que nos permitan revisarlo más detenidamente. El tamaño de los tiles lo definimos nosotros. En la imagen de abajo se aprecia que elegí que sea de 200 metros.


Lo interesante de esta herramienta que te permite desplazarte rápidamente por cada cuadrícula y sobre ella se realizará un zoom para su revisión.




Finalmente también existe la opción de revisarlo generando un archivo kml, el cual si tenemos abierto nuestro Google Earth, lo podemos revisar desde ahí. 


Bueno, esto sería todo, les recomiendo revisar los enlaces que se comparte como referencia, los cuales son de los creadores de este interesante plugin. Por mi parte pretendo hacer un pequeño vídeo demostrando cómo se utiliza la herramienta, cuando este listo actualizaré esta entrada para que lo puedan visualizar.


Referencias:



domingo, 5 de mayo de 2019

Visualización de datos en QGIS con Visualist










En esta oportunidad se presenta una herramienta disponible para las últimas versiones de QGIS, nos referimos al plugin "Visualist". Muchas veces contamos con datos que requerimos analizar y junto con ello la necesidad de mostrarlos o presentarlos de distintas maneras, en este caso, la herramienta se orienta no solo a mostrar datos, sino que a partir de ellos, podemos analizar la relación espacial existente. En general, esta herramienta de análisis nos permite generar mapas rápidos a partir de datos que representan ocurrencias o eventos (vectores de puntos y líneas).

Conociendo a Visualist


La ventaja del plugin es que, una vez instalado, se aloja en nuestra "Caja de herramientas de procesos", desde donde podemos ver las opciones disponibles. Intentaremos mostrar ejemplos con la mayoría de ellos.


Generación de mapas - Datos de ejemplo


Como primer paso vamos a seleccionar nuestros datos, para ello comparto un grupo de datos que pueden descargarlo desde aquí, los cuales contienen como puntos a un grupo de 155 centros poblados del Departamento de Apurímac en Perú, además de sus límites políticos (polígonos). Cuando desplegamos dichos datos tendremos una imagen similar al siguiente.




Chloropleth Map


Probaremos la primera opción, es decir la creación de un Chloropleth Map, a través del cual se logra representar una cantidad  (número de eventos o porcentajes) por colores en función a las áreas administrativas que se indican. 


El resultado por defecto sale en tonalidades de gris, pero con apoyo de las herramientas de simbología del QGIS podemos mejorar la presentación. Para este caso se usó una rampa de colores "Spectral" y el modo de clasificación Cuantil.






Como se pudo apreciar, es una manera de comparar los valores por regiones, pero además si nos vamos a los parámetros avanzadas, la información demográfica se pueda utilizar para ponderar las mediciones.




Si apreciaron los datos compartidos, podrán ver que no existe esa columna de datos llamada "SUM_TOT_POB". Para ello se hizo un ajuste de datos, es decir que nos apoyamos de otra herramienta, el cual se puede conseguirlo si lo buscamos como "Points statistics for polygons", con ella podemos generar un campo a partir de los datos de población existentes en los centros poblados, esto nos permitirá luego generar otro mapa en donde consideremos ese campo para realizar la distinción de colores. Si comparamos con el anterior mapa, existen dos provincias con el mismo número de puntos, por lo tanto tienen el mismo color, pero en este mapa, se distinguen los colores considerando la población existente.



Grid Map


En esta oportunidad se crea un mapa vectorial compuesto por cuadrículas de una misma dimensión, para ello nosotros definimos el tamaño de cada cuadrícula (metros). Es importante también definir la extensión, para ello se recomienda elegir la extensión de una capa de polígonos. 




El resultado nos muestra los eventos enumerados en cada cuadrícula, diferenciados por colores graduados. Les recomiendo a que prueben distintos tamaños para ver los resultados que se obtienen, porque nosotros debemos tener claro cual sería el área que se piensa analizar en función a los eventos presentes, a mayor dimensión veremos que agrupará a una mayor cantidad de eventos (puntos) y la concentración podría ubicarse en otro lugar.



Según el manual del plugin, la elección del tamaño de la cuadrícula, puede guiarse por la distancia promedio esperada si los puntos se distribuyen al azar.

d = 0.5 * raíz cuadrada A/n 
Donde A = área y n = número de eventos


Nearest Neighbours Clusters Map


El resultado de este mapa son polígonos que agrupan los puntos o eventos identificados de acuerdo a un análisis de vecinos más cercanos. El algoritmo trabaja sobre cada evento, utilizando un cuadrado centrado en la posición del evento y con un tamaño del doble de la distancia de búsqueda para seleccionar vecinos cercanos. Las distancias con estos vecinos se calculan y los eventos se consideran vecinos cercanos del evento si la distancia es menor o igual que la distancia de búsqueda. 
Se selecciona el evento con más vecinos. Forman el primer hot spot (punto caliente). Se eliminan de la distribución y se selecciona el siguiente evento con el mayor número de vecinos. Forman el segundo hot spot, etc. El algoritmo es recursivo hasta que no haya más eventos con un número de vecinos mayor o igual al tamaño de cluster definido.


En nuestro caso estamos definiendo una distancia de 15 kilómetros, además de 5 eventos como el tamaño mínimo de clusters. Esto significa que el algoritmo agrupará como mínimo a 5 eventos que cumplan la condición de la distancia ( 15 km) existente entre ellos. Se diferencian por colores y tamaños de los polígonos de agrupamiento generados.



Si lo superponemos con un Grid Map, podemos apreciar que en un Clusters Map, las áreas se definen directamente por la distribución de los eventos, mientras que en un Grid Map, la agregación se define por el tamaño de la cuadrícula y la posición del área total.



Les recomiendo generar un mapa de calor (heatmap), con las herramientas del QGIS y superponerlo, verán que también podemos sacar algunas conclusiones.


Spatial Autocorrelation Map


La generación de este tipo de mapa es muy interesante, porque nos permite trabajar con los llamados indicadores de asociación espacial (LISA - Local Indicators of Spatial Association), lo cual según (2), son estadísticos que evalúan la existencia de grupos en la distribución espacial para una variable dada. Por ejemplo, si estamos estudiando la prevalencia de cáncer en una población determinada y se encuentra que en ciertas zonas al interior se tienen tasas más altas o más bajas que las esperadas; es decir, los valores que se producen están por encima o por debajo de los de una distribución aleatoria en el espacio.

En resumen el plugin permite realizar un análisis de las estadísticas de autocorrelación espacial local. Para ello implementa los siguientes indicadores:
  • Local Moran's I: Análisis de agrupamientos (clusters) y valores atípicos (HH, HL, LH, LL) basado en covarianza.
  • Getis-Ord Gi*: Análisis de puntos calientes (Hot-Spot) basados ​​en el producto de intensidades.

Para entender el funcionamiento de éstos indicadores y sobre la autocorrelación espacial local, recomiendo revisar las referencias 3 y 4 y 5.

Cuando ejecutamos el plugin, lo haremos para cada indicador disponible, empleando los mismos datos de entrada. Se debe establecer también la matriz de pesos o ponderaciones espaciales (Spatial weight matrix), cuyos valores son una función de cierta medida de contigüidad en los datos originales. En la referencia 5, se aprecia una gráfica que diferencian las opciones del plugin (Queen - Reina, Rook-Torre y Bishop-Alfil), los cuales toman dichos nombres en referencia a los movimientos que realizan sobre un tablero de ajedrez.


El resultado obtenido al emplear ambos indicadores, nos permite apreciar la diferencia que existe entre ellos.



Aunque nos falto analizar todo el plugin, espero completarlo en otra oportunidad, pero también integrando herramientas similares, sobre todo para el caso de los análisis de clusters o agrupamientos.
Hasta otra oportunidad, líneas abajo les dejo las referencias que me permitieron preparar este post.

Referencias:

  1. Visualist: plugin for crime analysts
  2. Indicadores de asociación espacial
  3. Cómo funciona Análisis de cluster y de valor atípico (I Anselin local de Moran)
  4. Cómo funciona Análisis de puntos calientes (Gi* de Getis-Ord)
  5. Autocorrelación espacial e indicadores locales de asociación espacial. Importancia, estructura y aplicación.


sábado, 23 de febrero de 2019

Manipulando datos ráster en QGIS







Me animé hacer esta publicación a raíz de una consulta que me hicieron. A veces cuando trabajamos con datos de tipo ráster, requerimos modificar algunos de sus valores, si bien podemos realizar procesos como las reclasificaciones, a veces solo necesitamos cambiar el valor de un píxel en particular, o un grupo de píxeles cercanos o una zona específica. Para lo mencionado ahora contamos con el plugin de QGIS disponible para las últimas versiones denominado Serval.

Paso 1: Instalar el plugin


Identificamos al plugin y lo instalamos.


Paso 2: Cargar nuestras capas ráster


Es importante tener en cuenta que las modificaciones realizadas se van a guardar, por lo tanto, la primera recomendación es guardar una copia de nuestro ráster original. Ahora simplemente debemos  identificar al plugin en nuestra barra de herramientas. Para este ejemplo emplearemos un DEM de una cuenca en Perú.



Paso 3: Trabajando bajo el modo de "Probing"


La primera opción que tenemos es la edición de valores de píxeles individualmente, para ello debemos activar el modo "Probing", luego nos dirigimos dentro de nuestro ráster al píxel que deseamos modificar, los valores existentes de la celda aparecen en la barra, nosotros simplemente lo modificamos y le damos Enter para que se guarde.



Paso 4: Trabajando bajo el modo de "Drawing"


El modo "Drawing" nos permite elegir el valor de la celda o de sus valores (si es multibanda), con la finalidad de que se vayan modificando en cada punto que dibujemos, el valor seleccionado se repetirá por donde vamos recorriendo. Para el caso en donde exista tres bandas, aparecerán tres valores en las casillas, de ser el caso, tenemos también la posibilidad de seleccionar un color específico.



Paso 5: Trabajando bajo el modo "Erasing"


Al activar esta herramienta (con mucho cuidado), le estamos asignando un valor "NoData" a nuestras celdas que seleccionemos. Para comprobar que se asigna ese valor, podemos recurrir a un plugin adicional, en este caso yo siempre recomiendo al "Value Tool".




Consideraciones Finales:


Debemos darnos cuenta que esta herramienta trabaja con las propiedades de la capa, si nos vamos a la parte de "Transparencia", veremos que se tiene definido un valor para ser asignado como "Sin datos", con la opción de también definir un valor adicional para que se considere como "Sin datos".



La asignación lo podemos hacer desde las propiedades del ráster como también desde el panel del plugin. Para el caso de nuestro ejemplo, el DEM tenía fuera de sus bordes valores de -32768, por lo tanto, se le indicó que sea considero como valores para "Sin datos". Si lo deseamos comprobar, intenten usar el modo "Probing" sobre la zona que asignaron como "NoData", les aparecerá el valor considerado en una casilla del panel.


Finalmente les puedo mencionar que hay la opción de deshacer y rehacer (undo/redo), pero solo para la capa activa. También presenta un botón de ayuda que les dirige al repositorio del plugin (https://github.com/erpas/serval/wiki).