La creciente popularidad que las aplicaciones basadas en sistemas de información geográfica han cobrado en los últimos años propició el desarrollo de un enorme número de herramientas de software espacial open source para cubrir prácticamente cualquier necesidad (ver www.opensourcegis.org). Entre otras cosas, el desarrollo de aplicaciones web espaciales.
En la DGSIG (Dirección General de Sistemas de Información Geográfica – dependiente del Gobierno de la Ciudad Autónoma de Buenos Aires) llevamos a cabo un trabajo de investigación y desarrollo de aplicaciones web espaciales basadas íntegramente en software libre. El presente documento constituye un resumen del know-how adquirido y esperamos que sirva como guía para aquellos que deseen emprender un desarrollo de este tipo empleando software libre.
Si bien existen otras alternativas el producto de software libre más maduro y popular para el desarrollo de aplicaciones web espaciales es MapServer.
Aplicación Descripción MapServer Ambiente de desarrollo para aplicaciones web
espaciales. PostGIS Soporte de objetos geográficos para
PostgreSQL. PostgreSQL Motor de base de datos objeto-relacional de
código abierto. MapLab Conjunto de herramientas para crear y
administrar archivos de mapas.
MapServer es un ambiente de desarrollo de código abierto para construir aplicaciones web espaciales construido sobre otros sistemas de código abierto o freeware y que corre tanto bajo plataformas UNIX/Linux como sobre plataforma Windows 95 o superior.
Si bien MapServer puede trabajar directamente con archivos en formato shape, se obtiene una performance significativamente superior cuando se utiliza en combinación con PostGIS/PostgreSQL.
PostGIS es una solución que agrega soporte para objetos geográficos al motor de base de datos objeto-relacional PostgreSQL habilitándolo de esa forma para ser usado como backend para un GIS, de forma similar al SDE de ESRI o a la extensión Spatial de Oracle. PostGIS está liberado bajo la licencia GNU GPL.
PostGIS/PostgreSQL incluye las siguientes funcionalidades:
Objetos simples según la definición del OpenGIS Consortium (OGC)
Soporte para las representaciones Well-Known Text y Well-Known Binary de objetos geográficos.
Indexación rápida de objetos espaciales usando GiST.
Funciones de análisis geoespacial.
Objetos de extensión a PostgreSQL JDBC correspondientes a las geometrías.
Soporte para las funciones de acceso OGC según la definición del Simple Features Specification.
Por su parte, PostgreSQL es un sistema de administración de base de datos objeto-relacional (ORDBMS, por sus siglas en inglés) basado en Postgres v4.2 desarrollado en la Universidad de California en el Departamento de Ciencias de la Computación de Berkeley.
PostgreSQL es un descendiente de código abierto de este código original de Berkeley. Soporta SQL92 y SQL99 y ofrece muchas características modernas:
Consultas complejas
Foreign keys
Triggers
Vistas
Integridad transaccional
Control de concurrencia multiversión.
A su vez, PostgreSQL puede ser extendido por el usuario en múltiples formas; por ejemplo, agregando nuevos tipos de datos, funciones, operadores, métodos de indexación, funciones de agregación y lenguajes procedurales.
Además, debido a la licencia libre, PostgreSQL puede ser usado, modificado y distribuido libre de cargos para cualquier propósito, sea privado, comercial o académico.
Existe un buen número de aplicaciones que funcionan sobre o complementan las funcionalidades de MapServer entre las que se destaca MapLab, desarrollada por DM Solutions Group.
MapLab es un conjunto herramientas web para crear y administrar aplicaciones de mapeo vía web y archivos de mapas para MapServer. Consta de tres componentes: MapBrowser, GmapFactory y MapEdit. Este último provee una muy buena interface gráfica para crear y editar mapas para MapServer facilitando enormemente esta tarea.
En este apartado exponemos los requerimientos de hardware y software para instalar un servidor con MapServer y PostgreSQL de acuerdo con nuestra experiencia particular en el uso de estos productos.
Ni MapServer ni PostgreSQL tienen requerimientos específicos de hardware. En ambos casos es suficiente con satisfacer los requerimientos recomendados para instalar el sistema operativo que se vaya a emplear.
En la DGSIG realizamos todo el desarrollo con un servidor Pentium IV de 1.7 MHz y 1 GB de RAM con Red Hat Linux 8.0. Es importante destacar, sin embargo, que este servidor no era dedicado sino que simultaneamente corría un motor de base de datos Oracle que daba servicio a aproximadamente 30 usuarios. Naturalmente, si se planea que el sistema en producción de servicio a un número relativamente grande de usuarios concurrentes habrá que tener este factor en cuenta a la hora de elegir el hardware más adecuado.
Los requerimientos de software son muchos y varían según el sistema operativo que se emplee. Sin embargo, dado que todas nuestras experiencias se realizaron bajo plataforma Linux, solo podemos dar referencias para este sistema operativo.
Los requerimientos de software recomendados para instalar MapServer bajo Linux son los siguientes:
Apache
PHP normal y devel
LibJPEG normal y devel
PDFLib
Ming
GD
Proj Libraries
Xerces
Gdal
Pueden encontrar una guía detallada para instalar MapServer bajo SuSE Linux 9.2 aquí. Es importante destacar que, aunque esta guía esté confeccionada para esa distribución particular, también puede ser de utilidad para usuarios de otras distribuciones relativamente nuevas que se basen en la misma versión de kernel (2.6.x).
En la DGSIG desarrollamos una serie de demos básicos en PHP con el objetivo de brindar al programador sin previa experiencia en aplicaciones geográficas una serie de ejemplos claros y concisos para iniciarse en la programación con PHP/Mapscript (la extensión de MapServer que permite acceder a su funcionalidad desde PHP).
Se trata de 3 demos cuyas funcionalidades y complejidad va aumentando de forma creciente para facilitar su comprensión. A continuación damos una breve descripción de las características de cada uno:
demo.phtml: Es el demo mas básico de los incluídos. No depende de ningún otro archivo aparte del mapa. Es un browser elemental con operaciones de Pan, Zoom In y Zoom Out. Muestra las capas disponibles en el mapa, su estado, un icono de referencia y permite activarlas o desactivarlas. Verlo online
demo2.phtml: Es una versión mejorada del anterior con algunos agregados tales como un mapa de referencia a través del cual es posible desplazarse con un click y un editor de escala que permite modificar la escala de visualización. Al igual que el anterior este demo no depende de ningún otro archivo que no sea el mapa. Verlo online
demo3.phtml: Este es el demo más completo de los incluídos. Se compone de los archivos: demo3.phtml, config.php, funcs.php, demo.js, framesetInfo.phtml e infoCapasActivas.phtml. Consta de las mismas características que el segundo pero se agrega una herramienta que permite consultar la información alfanumérica asociada, en un punto dado, a las capas de información geográfica visibles. Verlo online
Para descargar los demos, haga click aquí.
A continuación listamos algunos documentos cuya lectura recomendamos a todos aquellos interesados en realizar desarrollos con las tecnologías mencionadas arriba.
Mapfile and Symbol Sets: Lectura imprescindible para trabajar con MapServer. Describe en detalle el formato de los archivos de mapas.
PHP/Mapscript: PHP/Mapscript es una extensión para PHP que permite acceder a la API de MapServer a través del framework de clases descripto en este documento.
MapServer Tutorial: Rápida introducción a los principales conceptos detrás de MapServer.
MapServer Recipes: Ejemplos sencillos de algunas tareas básicas con MapServer, incluyendo una especie de “Hello World” que no requiere datos geográficos. Requiere Mapserver 4.0 o superior y PHP/Mapscript.
Manual de PostGIS: Todo lo que se necesita saber sobre PostGIS está aquí, aunque a veces la documentación no es del todo clara.
Manual de PostgreSQL: Es la documentación oficial de PostgreSQL. En general las explicaciones son muy claras aunque no siempre son muy completas. Teniendo en cuenta la extensión del documento es mejor leerlo on-demand.
Para dudas o consultas sobre estos temas, pueden contactarse con: Pablo Cecconi (pcecconi@buenosaires.gov.ar)