martes, 21 de julio de 2015

Estadísticas para datos espaciales con QGIS 2.10 Pisa: Parte 3



En esta oportunidad vamos a completar este grupo de entradas, las cuales tienen como objetivo mostrar las herramientas existentes en QGIS para mostrar estadísticas de nuestros datos espaciales.

Cuarto Ejercicio:

Para este ejercicio vamos a necesitar descargar otro grupo de datos, denominado "SEAS_data_comp.zip", disponible en el enlace compartido en la primera parte de este grupo de entradas. Se refiere a datos de tipo vector, correspondiendo a los valores de una encuesta realizada para nuestro ámbito de estudio (en total son 7,803 registros), cada punto representa geográficamente el centroide de cada polígono SEA, por lo tanto, para un mismo punto se van a registrar varios valores, pero nosotros necesitamos generar una tabla de datos con la suma de los valores agrupados por cada SEA, para ello existe una columna representa el valor único de cada SEA (ID_UBISEA).

Paso 1: Instalar el plugin "Dissolve with stats" tal como ya lo sabemos hacer desde el administrador de complementos, para que luego lo podemos ver dentro de la barra de menú "Vectorial" (Fig. 1).

Fig. 1: Instalando el plugin Dissolve with stats

Paso 2: Descargar los datos requeridos y ponerlo como uno de las capas en nuestro QGIS, revisando la tabla de atributos para comprobar la cantidad de registros existentes. Una opción digamos más profesional podría ser empleando otro plugin interesante, nos referimos al "Live Statistics" (Fig. 2), en resumen permite visualizar estadísticas sencillas sobre datos vectoriales en una pequeña barra de herramienta proporcionando información en tiempo real.

Fig. 2: Instalando el plugin Live Statistics


Paso 3: Una vez activado el plugin Live Statistics, vamos a configurar para poder consultar información en tiempo real, para ello primero debemos asegurarnos tener activo la capa que vamos a consultar, siendo nuestro objetivo mostrar cuantos datos por punto existen, como ejemplo podemos seleccionar un punto y veremos que en un misma coordenada existen 77 valores, del mismo modo podemos consultar otras estadísticas (Fig. 3).


Fig. 3: Obteniendo estadísticas en tiempo real con el plugin


Paso 4: Ahora ya podemos realizar el ejercicio, para lo cual ejecutaremos el plugin Dissolve with stats, para luego configurar en su ventana los datos requeridos, hay que tener cuidado de establecer que tipo de estadística queremos calcular para todas los campos (Fig. 4).

Fig.4: Configuración del plugin Dissolve with stats

Paso 5: Finalmente tendremos como resultado 390 registros que corresponde a cada SEA (ID_UBISEA), con sus valores totales, puesto que se realizó una suma de todos los que compartían una misma coordenada (Fig. 5).


Fig. 5: Resultado de disolver un campo sumando sus valores numéricos



Quinto Ejercicio:

Vamos a realizar nuestro último ejercicio, en la cual vamos a enfocarnos a trabajar con nuestros datos de tipo raster, en específico el que corresponde a nuestro DEM (dem_ambito_utm.tif), además se requiere tener instalado dos plugins o complementos, el primero Slicer y también el denominado Raster Pixel Count by ClassBreak.

Paso 1: Primero vamos a realizar un recorte de nuestro raster, para ello empleamos "Clipper", el cual es una de las herramientas de extracción ubicado dentro del menú Ráster. El objetivo es que nuestro raster solo cubra el ámbito de las provincias, por lo tanto este último va ser la capa de máscara (Fig. 6).

Fig. 6: Ejecutando Clipper para nuestro DEM


Paso 2: Ahora vamos a emplear el plugin Slicer; en resumen nos permite realizar una reclasificación de valores de datos raster, considerando el rango de valores, realizando cortes homogéneos o variables. Una vez activo, nos permite mostrar el rango de nuestros valores de entrada, en este caso de altitud en metros, luego de indicar nuestra archivo de salida, debemos elegir el método para determinar los pasos (Step), para nuestro caso se van a considerar "variable" para no extender el número de reclasificación (Fig. 7).

Fig. 7: Configuración del plugin Slicer

Paso 3: Una vez ejecutado el botón Slice, vamos a obtener como resultado una capa raster (dem_ambito_provincias_clasifica.tif) con valores que van desde el 1 al 9, los que representan diversos niveles de altitud en metros (Fig. 8).

Fig. 8: Reclasificación realizada empleando Slicer.

Paso 4: Ahora nos plantearemos un problema a resolver, como por ejemplo, deseo saber los porcentajes de área que ocupan cada rango de altitud en nuestro ámbito de estudio. Un caso muy típico de resolver cuando no contamos con datos vectoriales en donde por geometría es sencillo realizarlo. Nuestro opción que tenemos es emplear el plugin Raster Pixel Count by ClassBreak, el cual nos permite determinar estadísticas en función a un valor de quiebre que le asignemos, por lo tanto en nuestro caso serán los valores del 1 al 9 y del cual conocemos cuales son su rango de valores en altitud. Luego de instalar el plugin procedemos a indicarle nuestra capa raster de entrada y los valores de quiebre (Fig. 9).

Fig. 9: Ejecutando el plugin para obtener estadísticas 
de un raster por valores de quiebre


Paso 5: Finalmente los resultados lo podemos llevar a cualquier hoja de cálculo y ordenarlos para que podamos obtener los porcentajes requeridos en nuestro problema. Hay que tener en cuenta que para comprobar si realizamos bien nuestro trabajo, podemos comparar el valor total del área obtenido desde nuestro polígono frente al calculado con los valores raster, si bien nunca serán los mismos por tratarse de dos tipos de datos, éstos deben aproximarse. Lo importante de esta herramienta es la posibilidad que conocer el número de píxeles diferenciados por valores clasificados (en este caso de altitud), y al conocer las dimensiones de cada píxel, podemos calcular un área multiplicándolo por este último valor (Fig. 10).

Fig. 10: Resultado del cálculo de porcentajes de áreas 
por rango de altitud.


Muy bien, espero que haya podido despertar el interés en el uso de herramientas estadísticas presentes en el QGIS, mi objetivo era demostrar que podemos resolver algunos problemas comunes al momento de trabajar con estadísticas; todo ello en base a mi experiencia personal en donde tuve que buscar alternativas y los pude encontrar explorando estas herramientas y lo quise compartir con todos aquellos interesados en estos temas.
Si tienen alguna duda o experiencia en el manejo de las herramientas mostradas no duden en comentar. Hasta otra oportunidad.

Referencias:


  1. https://github.com/olivierdalang/liveStats
  2. https://github.com/juliepierson/DissolveWithStats
  3. https://github.com/miguel-reginaldo/Slicer


6 comentarios:

mari dijo...

Hola, quisiera consultar por que tengo un polígono para el cual quiero calcular su area. como se hace esto en qgis. Ademas, tengo una capa raster para la cual quiero calcular el area pero solo de algunos pixeles (por ejemplo los que contengan valores por arriba de cierto limite), cómo se puede realizar eso. Desde ya le agradezco la atención y me disculpo por la molestia!

Carlos Carbajal dijo...

Estimada Mari, en relación a tus consultas, sobre el cálculo de área de un polígono en QGIS, la misma se puede realizar de varias formas, pero te recomiendo que uses las herramientas que están en la barra de menús llamada "Vectorial", ahí encontraras uno que dice "herramientas de geometría", seleccionas la que dice "exportar/añadir columnas de geometría", luego te mostrara una ventana en donde puedes guardar tu capa con otro nombre, luego verás en la tabla de atributos que se añadió los valores de área.
Con respecto a tu otra consulta, recomiendo que sigas el procedimiento que se indica la entrada que seguro revisaste, solo tendrías que usar el Slicer indicando tus límites de valores de tu capa raster, luego empleas el plugin Raster Pixel Count By ClassBreak, para que puedas tener las áreas en los límites requeridos.
Espero que te haya servido de ayuda, saludos.

mari dijo...

Estimado Carlos,Muchas gracias por responder!fue muy util la entrada y la respuesta...me animé y probé la herramienta rasterpixelcount! lo hice con un archivo con formato ascii que previamente converti a tif). Primero probe con la aplicacion de slicer y luego solo con el archivo ascii sin convertir y sin aplicarle slicer..los resultados fueron muy distintos. En caso que habia aplicado el slicer al traducido, quedo un archivo recortado como queria (supuestamente a partir de los valores 0.6 que es el valor minimo limite que estableci como criterio,para el cual quiero saber cantidad de pixeles y area) pero al aplicar el rasterpixelcount, el resultado de break count muestra para cada categoria, cero pixeles y tambien cero area. Mientras que cuando utilizo la herramienta rasterpixelcount con el archivo ascii sin convertir y le indico en break values separate by commas a partir del valor 0.6 (que es el rango criterio), el break count asigna valores de contabilizacion de pixeles y area para cada categoria... mi consulta cuál es el camino apropiado?por que da cero en la contabilizacion de pixeles y area?..El resultado de area esta expresado en metros cuadrados? de antemano muchas gracias y disculpas por tantas preguntas

Carlos Carbajal dijo...

Hola Mari, al parecer de lo que me comentas, el archivo original en formato ascii te ha permitido obtener las áreas de los pixeles, es posible que al convertirlo a Tiff existió alguna alteración. Tengo entendido que los valores de áreas están expresados en metros cuadrados, pero revisa que sistema de referencia estás empleando.

Anónimo dijo...

Estimado Carlos
Tengo una pregunta hice un análisis de proximidad de 5 y 10 km a un raster1 y sobre este puse otro raster2, quisiera saber cuanta area del raster2 esta dentro de los 5 km y de los 10km, hay alguna herramienta que realice este calculo? o algún procedimiento para realizar este calculo de área de un raster?, espero que se entienda la pregunta y le agradezco de antemano su respuesta.
Saludos Sand

Carlos Carbajal dijo...

Mi estimado, para serte sincero creo que entendí a medias tu consulta, pero no creo que exista mucho inconveniente porque todo manejo de datos raster es muy manejable con la calculadora raster, pero para determinar áreas la herramienta "raster pixel count by classBreak" te debe ayudar, si deseas me puedas pasar tus raster y lo podré analizar mejor.

saludos,