18 Dic Proyecto de geoprocesamiento de redes de agua potable
Geoprocesamiento redes de agua potable.
Estamos realizando un proyecto de geoprocesamiento y análisis de redes de agua potable para una importante empresa de abastecimiento de agua potable, saneamiento, depuración y mantenimiento de obras hidráulicas, con más de 120 años de historia.
El trabajo se basa en la realización de unos modelos informáticos de recorrido de grafos dirigidos y no dirigidos (network analysis), que nos permiten recorrer sus redes de agua potable,(tuberías, canalizaciones, acometidas…) para realizar los siguientes geoprocesos:
- Sectorización
- Sectorización masiva
- Cálculo de polígonos de corte
- Cálculo masivo de polígonos de corte
- Cuencas de saneamiento.
Estos geoprocesos se dividen en 2 tipos principalmente: masivos e individuales.
Geoprocesos masivos
Los geoprocesos masivos recorren la totalidad de la red y al terminar su recorrido, generan una serie de informes y extrapolación de datos para poder hacer análisis posteriores, incluyendo ficheros gis y cad generados en tiempo real, además tiene la posibilidad de comunicarse con otros sistemas de la empresa. (contabilidad, clientes, etc…)
Geoprocesos individuales
El caso de los geoprocesos individuales, dependiendo del tipo seleccionado, el usuario seleccionará un elemento, y el algoritmo recorrerá las redes en busca de los criterios de parada y de los elementos predefinidos por el cliente, devolviendo el resultado gráfico en pantalla con los datos alfanuméricos asociados.
Requerimientos previos del cliente.
El diseño de la solución debería dar soporte a las siguientes peticiones del cliente:
- Todos los geoprocesos podrán ser lanzados desde cualquier aplicación, ya sea web o de escritorio.
- Algunos de los geoprocesos deben mantener persistencia de datos en bases de datos.
- Los geoprocesos requieren de comunicación con procesos de otros sistemas, como contabilidad o clientes.
- Deben poder ser ejecutados de forma automática y periódica desde distintas aplicaciones y/o de manera desatendida.
- Todo el software empleado debe ser Open Source.
- Los datos devueltos por la solución empleada deben estar en un formato estándar reconocible por cualquier aplicación.
Los algoritmos diseñados para realizar estos cálculos deben trabajar con el siguiente volumen de datos, a groso modo:
- Cerca de 1.500.000 de segmentos de redes que recorrer.
- Más de 350.000 acometidas
- Cerca de 550.000 elementos de tipo puntual: válvulas, bombas, hidrantes, caudalímetros…
Solución empleada en el cálculo de geoprocesos.
Para desarrollar estos geoprocesos hemos empleado R. Este es un lenguaje de programación para el cálculo estadísticos y gráfico. Como todo lenguaje tiene sus puntos fuertes y débiles.
Su potencia se basa, en comparación con otros lenguajes, en la capacidad de modificar datos de manera masiva, y en la utilización de librerías específicas de indexado de datos que hace que recorrer y analizar elementos en memoria sea realmente rápido.
Otra de las premisas del proyecto es que el desarrollo que hiciéramos fuera accesible desde cualquier aplicación utilizando protocolos estándar, en concreto, el acceso a ellos mediante REST y WPS.
REST es una interfaz para conectar varios sistemas basados en el protocolo HTTP, sirviendo para generar datos y operaciones, devolviendo los mismos en formatos ampliamente extendidos y reconocidos por cualquier aplicación, como son XML y JSON.
WPS (Web Processing Service), es un protocolo estándar definido por el Open GeoSpatial Consortium para la publicación de procesos geoespaciles, algoritmos y cálculos.
Para ello instalamos y configuramos 2 proyectos OpenSource, totalmente compatibles con el lenguaje R.
Para los servicios REST, instalamos, configuramos y ejecutamos los geoprocesos individuales en la herramienta OpenCPU.
Para los geoprocesos masivos, y las peticiones individuales desde distintas herramientas compatibles con WPS, utilizamos PyWPS. Una de las ventajas de esta herramienta es que tiene conectores muy potentes con el lenguaje R, además de poder realizar geoprocesos en Python, uno de los lenguajes de programación más extendidos en el diseño de geoprocesamiento. De este modo se pueden implementar distintos cálculos aprovechando los puntos fuertes de estos 2 lenguajes de programación.