Serwebdeana
Serwebdeana
Serwebdeana
geográfica
Miguel R. Luaces, José R. Paramá, Diego Seco Naveiras
Resumen
En este artículo presentamos un sistema para realizar análisis de redes en Sistemas de Información
Geográfica (SIG). La arquitectura del sistema es conforme a las propuestas de los organismos
internacionales ISO y OpenGeospatial Consortium. Siguiendo el ejemplo de otros servicios
estandarizados por estos organismos, como el WMS o el WFS, la arquitectura contempla el
desarrollo de un servicio web para ofrecer toda la funcionalidad de manera remota.
El análisis de redes en el contexto de los SIG es una necesidad reconocida por los organismos
internacionales citados pero que no está implementada en ninguna de las herramientas SIG de
procesado y visualización de información geográfica más comunes. Algunos ejemplos de técnicas
de análisis que se pueden aplicar son el cálculo de la ruta más corta en redes de carreteras, el cálculo
de la facilidad de acceso a núcleos de población o la modelización del flujo de agua en redes de
abastecimiento. Para que estas técnicas de análisis se puedan llevar a cabo es muy importante que
los pesos de los arcos del grafo definido por la red espacial puedan ser ponderados utilizando
características específicas de los elementos geográficos. Muchas de las técnicas de análisis que
acabamos de citar se estudian dentro de otros campos como la Investigación Operativa pero los
trabajos llevados a cabo en este campo son ajenos a los SIG y se necesita un gran esfuerzo para
conectar los productos desarrollados en cada una de las áreas.
La arquitectura es extensible sobre todo en dos puntos. En primer lugar, es extensible en cuanto a
las fuentes de datos para obtener la información geográfica. La información geográfica puede estar
contenida en bases de datos, ficheros planos, ficheros shapefile, etc. Se desarrollaron componentes
de acceso a datos para acceder a las fuentes de información más comunes y se crearon interfaces
fácilmente extensibles para acceder a otras fuentes de datos. En segundo lugar, es extensible en
cuanto al mecanismo de pesado de los arcos que componen la red. Para representar el peso de un
arco se diseñó una jerarquía que representa una fórmula evaluable. También se diseñó una jerarquía
paralela para realizar el análisis sintáctico del XML donde se especifica la fórmula. Ambas
jerarquías están conectadas y son fácilmente extensibles.
Palabras clave: Sistemas de Información Geográfica (SIG), análisis de redes, servicios web, Open
Geospatial Consortium (OGC).
1 Introducción
Los Sistemas de Información Geográfica (SIG) [1] constituyen un área de rápido desarrollo dentro
de la informática y ofrecen métodos sumamente innovadores para hacer frente a algunas demandas
técnicas que constituyen un reto. Las mejoras recientes en el hardware han hecho posible que la
implementación de este tipo de sistemas sea abordable por muchas organizaciones. Además, se ha
llevado a cabo un esfuerzo colaborativo por dos organismos internacionales (ISO [2] y el Open
Geospatial Consortium [3]) para definir estándares y especificaciones para la interoperabilidad de
los sistemas. Este esfuerzo ha hecho posible que muchas organizaciones públicas estén trabajando
en la construcción de infraestructuras de datos espaciales [4] que les permitirán compartir su
información geográfica.
Dentro de los SIG un campo de aplicación muy importante es el análisis de redes a partir de la
información geográfica que las representa (por ejemplo, redes de carreteras, redes de abastecimiento
de agua, redes de telecomunicaciones, etc.). El cálculo de la ruta más corta en redes de carreteras, el
cálculo de la facilidad de acceso a núcleos de población o la modelización del flujo de agua en redes
de abastecimiento son sólo algunos ejemplos de las técnicas de análisis que se pueden aplicar. Para
que estas técnicas de análisis se puedan llevar a cabo es muy importante que los pesos de los arcos
del grafo definido por la red espacial puedan ser ponderados utilizando características específicas de
los elementos geográficos (por ejemplo, tipo y estado de la carretera, diámetro de la tubería, etc.).
Por otro lado, muchas de estas técnicas son bien conocidas y están muy estudiadas dentro de otras
áreas de conocimiento como la Investigación Operativa. Existen muchos artículos publicados sobre
trabajos relacionados con algoritmos de redes, obtención de rutas de peso mínimo, variantes del
problema del viajante (TSP), etc. En los últimos años áreas tan novedosas como la Vida Artificial
también están abordando este tipo de problemas obteniendo soluciones muy eficientes a los
mismos. Como trabajos más relevantes en esta área podemos citar los de Marco Dorigo sobre
colonias de hormigas artificiales para resolver el problema del viajante [5]. Sin embargo, estos
trabajos se están desarrollando independientemente del mundo SIG. Se desarrollan productos
pensando únicamente en grafos con pesos asociados a sus arcos y es necesario realizar un gran
esfuerzo para combinar los productos software desarrollados en cada área.
Se han desarrollado muchas librerías y productos software libre tanto para SIG como para el manejo
de grafos. Por una parte, en el área de los SIG se han desarrollado herramientas para el
almacenamiento, procesado y visualización de la información geográfica. Ejemplos de estas
herramientas son el Sistema Gestor de Bases de Datos PostgreSQL [6] extendido con el módulo
para información geográfica PostGIS [7], la herramienta de visualización y procesamiento de
información geográfica Java Unified Mapping Platform (JUMP) [8] o la herramienta de manejo de
información geográfica desarrollada por la Generalitat Valenciana gvSIG [9]. Por otra parte, en el
área de la Investigación Operativa y manejo de grafos podemos citar la librería Java Universal
Network/Graph Framework (JUNG) [10] que proporciona un lenguaje común y extensible para
modelar, analizar y visualizar datos que pueden ser representados como un grafo.
En este artículo se presenta un proyecto para realizar análisis de redes en SIG a través de un servicio
web. Este trabajo, desarrollado en el Laboratorio de Bases de Datos de la Universidade de A
Coruña, pretende cubrir una funcionalidad que se reconoce muy útil y necesaria en el área de los
SIG pero que no se incluye todavía en ninguna de las herramientas SIG más comunes. El análisis de
redes incluye tanto análisis sencillos, como puede ser el cálculo de rutas y distancias, como análisis
complejos, del estilo de cálculos de accesibilidad y conectividad. Además, el trabajo realizado está
enmarcado en el contexto actual de los SIG, por lo que, siguiendo el camino abierto por el OGC en
especificaciones como el Web Map Service (WMS) [11] o el Web Feature Service (WFS) [12], se
define un servicio web que permite acceder a esta funcionalidad de manera remota. Se emplean
estándares siempre que es posible (por ejemplo, se emplea GML para representar información
geográfica y se utilizan los tipos de datos reflejados por el OGC para trabajar con objetos
geográficos).
El resto de artículo está organizado de la siguiente forma. Primero, se describen algunos conceptos
básicos y trabajo relacionado en la Sección 2. A continuación, en la sección 3, presentamos la
arquitectura general del sistema y describimos brevemente sus componentes. La arquitectura se
estructura en torno a un componente que permite gestionar y realizar análisis sobre redes,
denominado Network Analysis Module (NAM). Sobre este componente se asienta un servicio web,
denominado Web Network Service (WNS), que permite el acceso a su funcionalidad de manera
remota y un módulo que permite su integración en herramientas de visualización y procesamiento
de información geográfica (JUMP, gvSIG, UDIG, etc.). Estos tres componentes son descritos en
más detalle en las secciones 4, 5 y 6 respectivamente. La Sección 7 presenta algunos resultados de
la implementación y validación realizadas. Finalmente, la Sección 8 presenta algunas conclusiones
y futuras líneas de trabajo.
2 Trabajo relacionado
Una de las bases sobre las que se asienta el trabajo presentado en este artículo es la teoría de grafos.
La teoría de grafos tiene unos fuertes fundamentos matemáticos que no podemos explicar en este
artículo. En [13] pueden encontrarse definiciones formales a la mayoría de los conceptos que se
explicarán de manera más informal a continuación. Analizaremos el contexto en el que se enmarca
este trabajo describiendo los detalles más relevantes en cuanto a manejo de grafos.
En primer lugar, analizando el tipo de redes con las que estamos interesados en trabajar en SIG
(redes de carreteras, redes de abastecimiento de agua, etc.) se puede observar la característica de
direccionalidad en los arcos que componen la red. Por tanto, el primer concepto que se debe tener
en cuenta es que los grafos que emplearemos serán grafos dirigidos o dígrafos. Otra característica
de interés es que el grafo debe ser pesado o ponderado; es decir, los arcos que componen la red
tienen un peso asociado. Por ejemplo, en una red de carreteras debe ser posible asignar un peso a
cada carretera en función de su estado, su longitud y otros parámetros que para el caso concreto se
consideren de interés. También es importante tener en cuenta que el grafo es disperso, cada vértice
tiene pocos vecinos. Se entiende por vecino de un vértice aquel otro vértice alcanzable mediante
algún camino de longitud 1. Por último, el grafo debe permitir que se puedan obtener caminos de
peso mínimo en él. Debe cumplir las precondiciones de algoritmos que permiten obtener eses
caminos más cortos tales como el Algoritmo del camino más corto de Dijkstra [14].
Existen muchas librerías de software libre que dan soporte a los conceptos y algoritmos que
acabamos de introducir. En el trabajo que presentamos se emplea JUNG [10]. JUNG es una librería
de código abierto que proporciona un lenguaje común y extensible para modelar, analizar y
visualizar datos que pueden ser representados como un grafo. Está escrito en Java lo que permite a
las aplicaciones basadas en JUNG hacer uso de las características intrínsecas del API de Java. La
arquitectura de JUNG está diseñada para soportar gran variedad de representaciones de entidades y
sus relaciones, tales como grafos dirigidos y no dirigidos. Proporciona un mecanismo para anotar
los grafos, entidades y relaciones con metadatos. Además, la distribución actual de JUNG incluye la
implementación de una serie de algoritmos de la teoría de grafos, data mining, análisis de redes
sociales y, lo más interesante de cara a este trabajo, cálculo de distancias en redes. En este trabajo se
emplea JUNG como una caja negra que oculta toda la teoría de grafos. Se extienden los conceptos
de grafo, arco y vértice para adaptarlos al dominio de los SIG (se complementan con la información
geográfica asociada) y se emplea el API de JUNG directamente para realizar operaciones sobre ese
grafo extendido, como la obtención de la ruta más corta entre dos vértices.
Por otra parte, siguiendo el ejemplo de otros estándares como el WMS o el WFS nuestro trabajo
proporciona acceso a la funcionalidad de análisis de redes a través de un servicio web. Sin embargo,
no es el objetivo de este artículo hacer una explicación exhaustiva acerca de los servicios web. A
modo de introducción se puede decir que un servicio web es un componente software accesible
mediante los protocolos de comunicación estándares para el Web que recibe peticiones y envía las
correspondientes respuestas mediante el uso de una serie de protocolos estandarizados basados en
XML.
CLIENTE
Internet
Herramienta
SIG externa
Módulo de
integración
WNS
NAM
Módulo de
acceso a datos
Base de
datos Base de Fichero ...
datos plano
Sobre el componente principal se asientan dos módulos que implementan dos posibles modos de
empleo del componente principal. En la parte superior izquierda se muestra un módulo que permite
la integración en herramientas de visualización y procesamiento de información geográfica (JUMP,
gvSIG, UDIG, etc.). El otro módulo, representado en la parte superior derecha, es un servicio web
denominado Web Network Service (WNS) que permite el acceso a la funcionalidad de análisis de
redes de manera remota. Se pueden implementar de manera sencilla clientes que accedan a este
servicio a través de Internet empleando un Proxy [20] remoto.
El protocolo para el flujo de datos de la arquitectura establece una comunicación entre los módulos
de interfaz (módulo de integración en herramientas externas y WNS) y el NAM mediante un
lenguaje XML diseñado para realizar la configuración del sistema. Las respuestas del sistema
también serán mediante XML o GML en caso de que la respuesta contenga información geográfica.
En primer lugar, el NAM permite construir redes a partir de información geográfica contenida en
fuentes de datos diversas, desde una base de datos relacional hasta ficheros planos. Dado que sería
imposible realizar una implementación capaz de obtener los datos para construir las redes de
cualquier fuente de datos se realizó un diseño extensible en ese sentido. El módulo proporciona una
implementación por defecto para obtener los datos de una base de datos relacional con extensión
para información geográfica conforme al estándar Simple Features for SQL del OGC [23] y
proporciona también interfaces fácilmente extensibles para acceder a otras fuentes de datos.
En segundo lugar, los arcos que forman la red pueden ser ponderados en función de diversos
factores y atributos de los objetos que los originan. Se realizó también un esfuerzo para la
extensibilidad del módulo en este sentido. En la Figura 2 se representa una parte de la vista estática
del componente encargado de realizar el pesado de arcos. El peso de cada arco se representa con
una fórmula evaluable, la cual denominamos WeightFormula. Para diseñar esta fórmula se empleó
una jerarquía fácilmente extensible siguiendo el patrón de diseño Composite [20]. Una fórmula
válida está formada por un literal, una propiedad u operaciones sobre otras fórmulas válidas.
Paralelamente a esta jerarquía se diseñó otra siguiendo el patrón de diseño Chain of Responsability
[20] que se encarga de analizar sintácticamente el XML donde se define la fórmula e instanciar el
objeto compuesto adecuado. Este diseño a nivel global donde una jerarquía se encarga de instanciar
a la otra sigue el patrón de diseño Factory Method [20].
La Figura 3 presenta un ejemplo real de WeightFormula. El contexto donde podría ser válida esta
fórmula supone la existencia de una base de datos de carreteras en la cual entre los atributos de la
carretera se encuentran su geometría (the_geom) y un factor numérico que representa el estado de la
carretera (state). La fórmula para ponderar los pesos de los arcos que representa la figura es
1.5*length(the_geom)+ state y supone que state toma valores pequeños para carreteras en buen
estado.
<weightFormula type="sum">
<weightFormula type="mult">
<weightFormula type="literal" param="1.5"/>
<weightFormula type="dbAttribute" param="length(the_geom)"/>
</weightFormula>
<weightFormula type="dbAttribute" param="state"/>
</weightFormula>
Para extender el sistema en este punto se deben acometer dos acciones. Primero, extender la
jerarquía de la WeightFormula con la nueva operación o tipo de dato definiendo su mecanismo de
evaluación. Segundo, extender el analizador sintáctico para que reconozca el nuevo elemento como
parte de una fórmula válida y sea capaz de instanciarlo. Siguiendo con el ejemplo de la figura, si el
estado de la carretera estuviese determinado por un atributo alfanumérico, sería muy sencillo
implementar un operador switch que realizase la conversión. Este operador switch es mucho más
reutilizable que otras alternativas como la implementación de un objeto de acceso a datos a medida
o la creación de una vista sobre la tabla de la base de datos.
En último lugar, una vez que está construido el grafo y los arcos tienen un peso asignado se pueden
ejecutar técnicas de análisis sobre el grafo. Como ya se ha descrito en una sección anterior para el
manejo de grafos empleamos JUNG. Nuestra implementación extiende los conceptos de grafo, arco
y vértice de esta librería para complementarlos con la información geográfica del SIG. Por tanto, se
pueden emplear directamente las técnicas de análisis que implementa esta librería. Un ejemplo de
aplicación es la obtención de la ruta de peso mínimo entre dos puntos siguiendo una red de
carreteras. En la interfaz de visualización del SIG se señalará el punto de origen y el punto de
destino. El sistema traducirá estos puntos a sus vértices más próximos y obtendrá la ruta de peso
mínimo entre ellos. El resultado se puede visualizar de nuevo en el SIG representando las
geometrías asociadas a los arcos que componen el camino de peso mínimo.
La interfaz del servicio proporciona acceso a toda la funcionalidad del módulo de análisis de redes
sobre el que está construido. Esta funcionalidad incluye la gestión de redes (creación, búsquedas,
borrados, etc.), la inserción de componentes (arcos y vértices) desde distintas fuentes de datos, la
aplicación de técnicas de análisis, etc.
Por motivos de eficiencia se desarrolló un mecanismo de caché de redes para no tener que acceder a
la base de datos cada vez que un usuario desea realizar una operación sobre una red. Dada la
naturaleza multiusuario del servicio se implementó un mecanismo de manejo de la concurrencia en
el acceso a la caché. El empleo del patrón de diseño distribuido Read/Write Lock [21] permite que
el sistema sea muy eficiente en el acceso a la caché. Este patrón permite lecturas concurrentes y
exclusividad en escritura. Se realizó la implementación de este patrón a nivel de cada red en la
caché debido a que hacerlo a nivel caché implicaría que mientras que se está modificando una red
no se puede realizar la lectura de ninguna otra, por lo que la eficiencia global del sistema sería
mucho menor.
La tecnología que permite la comunicación (en este caso SOAP combinado con WSDL) debe ser
totalmente transparente para los clientes. Los clientes deben trabajar del mismo modo que si lo
estuviesen haciendo contra un sistema local. Para lograr este objetivo se desarrolló un Proxy [20]
que encapsula la tecnología empleada para la comunicación remota. Esto permite que los clientes
del servicio puedan ser desarrollados por personas sin conocimientos sobre servicios web haciendo
mucho más accesible el WNS.
En la actualidad este sistema no está operativo con la cartografía proporcionada por la BVG debido
fundamentalmente a problemas con la digitalización de la cartografía. El problema principal que se
descubrió es de conectividad. Las geometrías de las carreteras no llegan a intersecar en muchos
cruces donde deberían hacerlo. El sistema nos permitió comprobar estas deficiencias en la
cartografía y se está trabajando en el desarrollo de herramientas que permitan mejorar su
digitalización.
La implementación y validación experimental del sistema con datos de la BVG nos permitió
observar uno de los principales problemas en los SIG, la conectividad de las geometrías. La calidad
de la cartografía digitalizada es mucho más baja de lo que sería deseable aunque se está mejorando
sustancialmente con el empleo del GPS en el proceso de digitalización.
Entre las futuras líneas de trabajo se encuentra, en primer lugar, finalizar el desarrollo de
herramientas que permitan mejorar la calidad de la cartografía. Esto permitirá que se pueda dar
acceso al público al WNS con la cartografía de la BVG. En segundo lugar, planeamos la
implementación de componentes de acceso a datos para otras fuentes de datos (por ejemplo,
ficheros shapefile). También pensamos hacer uso de la facilidad de extensión de la herramienta para
desarrollar nuevos operadores de pesado de arcos (por ejemplo, el ya comentado operador switch).
Son posibles futuras mejoras de los componentes desarrollados principalmente en cuanto a
optimizaciones del consumo de memoria y mecanismo de caché. Otra línea de trabajo futuro podría
ser la exploración de técnicas novedosas, como colonias de hormigas virtuales, para la obtención de
rutas de peso mínimo. Finalmente, es posible su implantación en sistemas SIG reales (por ejemplo,
en ideAC [25]).
Referencias
[1] M. F. Worboys. GIS: A Computing Perspective. Taylor & Francis, 1995. ISBN: 0-7484-
0065-6.
[2] Geographic information – reference model. International Standard 19101, ISO/IEC, 2002.
[3] OpenGIS Reference Model. OpenGIS Project Document 03-040, Open GIS Consortium,
Inc., 2003.
[4] Global Spatial Data Infrastructure Association. Accedido en la URL http://www.gsdi.org/.
[5] M. Dorigo y L. M. Gambardella. Ant colonies for the travelling salesman problem.
BioSystems, volumen 43, páginas 73 – 81, 1997.
[6] PostgreSQL. Accedido en la URL http://www.postgresql.org.
[7] PostGIS. Accedido en la URL http://postgis.refractions.net.
[8] JUMP. Accedido en la URL http://www.vividsolutions.com/jump.
[9] gvSIG. Accedido en la URL http://www.gvsig.gva.es.
[10] JUNG. Accedido en la URL http://jung.sourceforge.net.
[11] Open Geospatial Consortium, Inc. Web Map Service (WMS) Implementation Specification.
Accedido en la URL http://portal.opengeospatial.org/files/?artifact_id=5316.
[12] Open Geospatial Consortium, Inc. Web Feature Service (WFS) Implementation
Specification. Accedido en la URL http://portal.opengeospatial.org/files/?artifact_id=8339.
[13] R. P. Grimaldi. Matemáticas discreta y combinatoria. Una introducción con aplicaciones.
Tercera edición. Addison-Wesley Iberoamericana, 1997.
[14] E. W. Dijkstra. A note on two problems in connexion with graphs. Numerische Mathematik,
1:269-271, 1959.
[15] Simple Object Access Protocol (SOAP) 1.1. Accedido en la URL
http://www.w3.org/TR/2000/NOTE-SOAP-20000508/.
[16] Web Services Description Language (WSDL) 1.1. Accedido en la URL
http://www.w3.org/TR/wsdl.
[17] JAX-RPC Project. Accedido en la URL https://jax-rpc.dev.java.net/.
[18] W3C. World Wide Web Consortium. Accedido en la URL http://www.w3.org/.
[19] Apache-AXIS. Accedido en la URL http://ws.apache.org/axis/.
[20] E. Gamma, R. Helm, R. Johnson y J. Vlissides. Design Patterns: Elements of Reusable
Object-oriented Software. Addison-Wesley, 1996.
[21] M. Grand. Patterns in Java. Volume 1. John Wiley & Sons, 1998.
[22] D. Alur, J. Crupi y D. Malks. Core J2EE Patterns. Prentice Hall, 2003.
[23] Open Geospatial Consortium, Inc. Implementation Specification for Geographic
information - Simple feature access - Part 2: SQL option (SFS). Accedido en la URL
http://portal.opengeospatial.org/files/?artifact_id=13228.
[24] Biblioteca Virtual Galega. Accedido en la URL http://bvg.udc.es.
[25] Información en la web de la EIEL de la Diputación de A Coruña
(http://www.dicoruna.es/webeiel/).