viernes, 23 de octubre de 2015

Novedades del QGIS 2.12 Parte 2: Herramientas de Geometría

Tal como lo mencioné en la entrada anterior, vamos a continuar mostrando las novedades que se vienen con el QGIS 2.12. En esta oportunidad vamos a probar las nuevas herramientas de geometría. En específico sobre las herramientas denominadas Comprobar geometrías (Geometry Checker) y Autoensamblar geometrías (Geometry Snapper).

Objetivos:

  • Verificar la validez de la topología y geometría de una capa vectorial, corrigiendo los errores encontrados usando la herramienta "comprobar geometrías".
  • Realizar el ajuste o alineado de una capa vectorial apoyado de una capa de referencia, empleando para ello la herramienta "autoensamblar geometrías".

Datos:

Para realizar las practicas de estas herramientas vamos a emplear un grupo de capas de tipo vectorial, todos ellos abarcan límites administrativos de Perú, en específico dentro del departamento de Ucayali, habiendo sido descargados desde el OSM (OpenStreetMap), en este caso se realizó empleando un plugin denominado "QuickOSM", no es el objetivo hablar sobre ello pero si lo recomiendo cuando se requiera obtener capas vectoriales de una zona determinada.

Los datos para los ejercicios pueden ser descargados desde aquí.

Geometry Checker - Comprobar geometrías

Con la presente herramienta ubicado dentro de la barra de menú Vectorial (Figura 1), vamos a poder primero, verificar la validez topológica y geométrica de capas vectoriales, detectando errores que pueden presentarse. Para aquellos que ya vienen usando el QGIS, seguramente han probado la herramienta denominada "comprobador de topología", muy útil para verificar la topología y descubrir la existencia de errores, pero que su corrección se realizaría empleando otras herramientas, por lo tanto en este caso no solamente vamos a detectar la existencia de errores sino también vamos a poder corregirlos inmediatamente, para lo cual nos mostrará opciones de corrección.

Figura 1: Ubicación de las herramientas de geometría 



Paso 1: Una vez descargado los datos del ejemplo (ejercicio1.zip), lo abrimos en el QGIS para verificar que tenemos dos capas vectoriales, la primera (adm_ucayali.shp), representa el estado inicial de la cobertura, mientras que la segunda (mod_adm_ucayali.shp), representa una modificación realizada intencionalmente para realizar este ejercicio, en lo posible tratar de identificar las alteraciones realizadas.

Paso 2: Activamos la herramienta "comprobar geometrías", con ello nos aparecerá una ventana en donde debemos configurar las condiciones que requerimos para satisfacer la validez de nuestra geometría. Primero debemos indicarle nuestra capa vectorial de entrada (1), luego debemos indicarle que no debe existir auto intersecciones ni nodos duplicados (2), para conocer con mayor profundidad los tipos de errores que pueden existir, recomiendo revisar las referencias indicadas al final. Le vamos a indicar el tipo de geometrías permitidas para nuestra evaluación (3), en nuestro caso se trata de polígonos y multipolígono, luego  se indica que ninguno de ellos deben contener agujeros (4), también vamos a indicarle alguna condiciones de geometría como la existencia de ángulos mínimos entre segmentos y el área mínima de nuestro polígono, para nuestro caso le indicamos que el mínimo sea de 10 grados y que el área mínima sea 1.0 respectivamente (5). Ahora vamos a comprobar la validez de la topología, evitando la existencia de duplicados, espacios vacíos entre polígonos adyacentes (gaps) y la existencia de capas sobre otras no autorizadas (6), luego debemos indicarle si deseamos corregir los errores en la misma cobertura o generar otra, esta última es la mejor opción (7), finalmente solo nos queda hacer clic en el botón de ejecutar para ver nuestros resultados (8).


Figura 2: Configuración de la herramienta "comprobar geometrías"

Paso 3: Debemos verificar nuestro resultado, en donde podremos visualizar los errores encontrados, en nuestro caso se detectaron cinco errores, entre ellos tenemos: dos polígonos con agujero (Figura 3), también auto intersección (Figura 4), ángulo mínimo (Figura 5) y polígono superpuesto (Figura 6). Con esta identificación se recomienda verificar con la cobertura inicial las modificaciones realizadas intencionalmente.

Figura 3: Identificando agujeros en la capa vectorial

Figura 4: Identificando auto intersección de la capa vectorial


Figura 5: Identificando ángulos mínimos


Figura 6: Identificando capas superpuestas sobre otra


Paso 4: Ahora podemos seleccionar todos los errores para elegir el método de corrección más adecuado, para ello tenemos dos opciones, configurar nuestra solución o corrección predeterminada, o decirle al sistema que nos consulte individualmente por cada error encontrado, en este caso elegimos esta última opción.

Figura 7: Opción para realizar las correcciones


Paso 5: Debemos elegir la mejor opción de corrección para cada tipo de error, como por ejemplo la eliminación de agujeros (Figura 8), para la auto intersección se recomienda dividir el objeto (Figura 9), para el ángulo mínimo se puede eliminar el nodo que genera dicho ángulo (Figura 10) y finalmente para el caso de la superposición de polígono, no se realizará ninguna acción porque deseamos que se mantenga en nuestra cobertura (Figura 11).

Figura 8: Corrigiendo agujeros 

Figura 9: Corrigiendo la auto intersección.

Figura 10: Corrigiendo la presencia de pequeños ángulos.

Figura 11: Indicando que no realice ninguna acción.



Paso 6: Una vez de haber elegido las opciones de corrección,  nos aparecerá el cuadro resumen de resultados, en donde confirma todos los errores corregidos.

Figura 12: Muestra del resumen de resultados luego de realizar las correcciones.


Paso 7: Finalmente se recomienda revisar la nueva cobertura generada, para ello deben compararlo con la cobertura que presenta los errores, con el objetivo de verificar si fueron adecuadamente corregidas.



Geometry Snapper - Autoensamblado de geometrías

La presente herramienta nos va a permitir ajustar polígonos adyacentes para que se ensamblen adecuadamente, evitando los errores comunes de espacios vacíos entre ellos. Normalmente cuando necesitamos ajustar capas vectoriales acudimos dentro de la barra de menú a configuración y de ahí a las opciones de autoensamblado. A través de la presente herramienta lo vamos a realizar de manera similar pero primero debemos definir bien nuestra capa de referencia a la cual debemos ajustar adecuadamente.

Paso 1: Descargar los datos del ejemplo (ejercicio2.zip), lo abrimos en el QGIS para verificar que tenemos dos capas vectorial, la primera (all_distritos_utm.shp), representa los límites administrativos a nivel de distritos, mientras que la segunda (only_distrito_utm.shp), representa a solo uno de los distritos que fue separado intencionalmente del grupo existente y que fue modificado para que no coincidan sus límites, con el objetivo de realizar el autoensamblado.

Figura 13: Capas del ejemplo indicando la cobertura a corregir.




Paso 2: Luego activamos la herramienta "Autoensamblar geometrías", desde aquí vamos a configurar la herramienta para que pueda ejecutarse. Primero seleccionamos la capa vectorial de entrada y la que deseamos corregir (1), seguidamente la capa de referencia a la cual deberá ajustarse evitando espacios vacíos (2), luego hay que indicarle la distancia máxima de autoensamblado, en nuestro caso será de 1000 metros (3), para ello debemos verificar directamente la distancia existente de desplazamiento que existe, luego se genera una nueva capa con las correcciones hechas (4) y finalmente le damos "Ejecutar" (5).


Figura 14:  Configuración de la herramienta "Autoensamblador de geometrías".


Paso 3: Una vez que se ejecutó la herramienta, solo nos queda verificar si realmente la capa nueva se ajusta bien en relación a los polígonos adyacentes, revisando que no existan espacios vacíos.


Figura 15: Resultado del ajuste realizado en la nueva capa luego de realizar el autoensamblado.


Indicaciones finales:

Considero que estas nuevas herramientas serán de mucha ayuda y complementan a las que ya existen dentro del QGIS, aunque durante las pruebas que estuve realizando nos siempre brindaron los resultados esperados y lo que se muestra son ejemplos didácticos, espero que algunos de ustedes puedan probarlo en casos reales y dar su opinión.
Por otro lado, para aquellos que están interesados en profundizar estos temas y sobre todo entender los conceptos de topología, recomiendo que puedan contar con una aplicación denominada JTS Topology Suite, que viene hacer un API para modelar y manipular geometría lineal en dos dimensiones, sirve mucho cuando requerimos practicar todo lo relacionado a geometría de capas vectoriales; como ejemplo en la Figura 16, se muestra cómo logra identificar un error de auto intersección.


Figura 16: Empleo del JTS Topology Suite para identificar un error de geometría


Espero que les sirva lo que hemos tratado hasta ahora, si pueden envíen sus comentarios.

Referencias:


2 comentarios:

Lautaro dijo...

Hola Carlos!
Ates que nada, muchas gracias por el Blog, esta muy bueno y es muy util para gente que esta aprendiendo sobre SIG como yo.
Tengo una duda en Qgis 3, hay algunos shp que cuando compruebo superposiciones con el comprobador de topologia me da 33 errores de superposiciones, pero cuando lo pruebo en comprobador de geometrias no me aparece ninguna superposicion, solo duplicados de nodos.
Tenes o tienen idea de que puede ser o como puedo corregir ese tipo de superposiciones pequeñas de manera automatica
Antes usaba el Make valid de Qgis, pero no lo puedo volver a intalar, incluso en Qgis 2.2

carlos carbajal dijo...

Hola Lautaro, primero gracias por tus comentarios. En realidad siempre que pueda seguiré publicando para ayudar a personas como tú con el deseo de aprender. Segundo, indicarte que la herramienta "comprobador de geometrías" no siempre brinda los mejores resultados, en especial si existen muchos errores y no se define bien los límites. Para errores de superposición, luego de identificarlos a veces es necesario eliminarlos de manera manual (claro si son pocos), para ello, siempre es un buen apoyo el uso de la barra de herramientas "Digitalización avanzada". Otra opción que puedes emplear, es apoyarte de la caja de herramientas de proceso, en este caso las que se encuentran dentro de "Geometría vectorial". Finalmente, aunque hay que revisar la ayuda, emplear las herramientas de GRASS, existe en especial "v.clean" que es muy útil.