Las aplicaciones web de mapas se han convertido en una herramienta imprescindible para mostrar los datos geográficos. Ahora disponemos de mecanismos que permiten la interacción del usuario, de tal forma que el usuario pueda seleccionar los datos e incluso modificar o añadir nuevos datos. En este artículo vamos a tratar de ver una panorámica general de cómo podemos interactuar con un servidor para construir un mapa web interactivo o dinámico.
Visión de conjunto
Entendemos por web mapping la publicación de mapas en la web. En consecuencia, web mapping interactivo será aquel que permita que el usuario pueda acceder a los datos para visualizarlos, tratarlos y modificarlos. Esto requiere algún tipo de comunicación con el servidor.
Se parte del supuesto de que los datos geográficos se encuentran almacenados en una base de datos (PostGIS, MySQL…), aunque pueden estar también en cualquier tipo de los formatos que soportan datos GIS (shp, geoTIFF…) La consulta de los datos puede realizarse principalmente por dos métodos.
- Consultas WMS, WFS, WCS a un servidor de mapas.
- Conexión y peticiones al servidor utilizando PHP.
¿Porqué utilizamos bases de datos?
El núcleo de cualquier aplicación son los datos. Hay muchos tipos de formatos y métodos para guardar y procesar esos datos. Lo más frecuente es que tengamos una base de datos en un servidor que será el encargado de suministra los datos. Son varias las razones para utilizar bases de datos geográficas, como por ejemplo:
- Cuando los datos se actualizan periódicamente. Hay datos como los de la altura de las olas enviados por boyas situadas en el mar, o geolocalizaciones de aviones, barcos, vehículos o personas que necesitan ser actualizados constantemente.
- Gran volumen de datos. Si tenemos un conjunto pequeño de datos podemos guardarlos en los formatos GIS tradicionales como shp o geoJSON, pero si el volumen de datos es muy grande resultan poco prácticos.
- Control del acceso a los datos. Necesitamos controlar el acceso a los datos según el perfil del usuario. No todos los usuarios pueden tener acceso a todos los datos o modificarlos.
La bases de datos espacial más utilizada es posiblemente PostGIS. Es una extensión de PostgreSQL que se utiliza con frecuencia por ser un estándar para servicios como GeoServer. La combinación geoserver+PostGIS con una librería JavaScript como OpenLayers o Leaflet es habitual para crear una arquitectura GIS WEB basada en sofware libre.
Otra base de datos que podemos utilizar es MySQL. Esta base de datos posiblemente será de las de uso más extendido, sin embargo para datos geográficos tradicionalmente ha sido relegada por PostGIS. Las razones por las que esto sucede así no creo que estén muy justificadas. MySQL puede utilizarse como soporte para datos geográficos y tiene la ventaja de que casi cualquier servidor que contratemos la tiene, cosa que no sucede con PostgreSQL. Además son muchas las empresas que disponen de sus datos en MySQL por lo que parece lógico que para los datos geográficos se utilizase la misma herramienta.
Hay otras bases de datos no relacionales como MongoDB que aunque parece la solución del futuro actualmente no está tan implantada como las anteriores.
Interacción
Siguiendo el esquema anterior vemos que las bases de datos proporcionan recursos que son procesados por servidores de mapas como GeoServer o MapServer
Los datos puedes ser procesados por un servidor de mapas que nos proporcione un servicio WMS, WFS o WCS. Un cliente WFS puede descargar datos vectoriales para su uso, en consecuencia podrá manipular esos datos para realizar análisis espaciales y otras operaciones. El servidor de mapas (Geoserver o Mapserver) actuará como un intermediario entre las bases de datos y el usuario.
Esto tiene ventajas evidentes: es eficaz, sencillo de manejar y utilizar. Pero también presenta algunos inconvenientes: el servidor de mapas proporciona un archivo GML, que es un estandar de la OGC. Este archivo si se trata de un mapa con muchos datos puede ser lento, aunque existen mecanismos para filtrar entidades. En esta configuración es el proveedor del servicio el que se encarga de la configuración de los datos.
Como alternativa a la situación anterior el usuario puede acceder directamente a los datos alojados en el servidor y establecer una comunicación con el. En este caso necesitamos PHP. La ventaja que aporta este método es la flexibilidad en la consulta de datos. Es posible añadir o modificar los datos de la BD, cosa que en el caso anterior solo es posible mediante WFS-t. También podemos controlar el acceso a los datos según el tipo de usuario. Por contra su mayor inconveniente es la complejidad en los desarrollos. Como mínimo debemos conocer PHP y AJAX.
¿Qué es PHP?
Hypertext Preprocessor (preprocesador de hipertexto) PHP es un lenguaje de script que se ejecuta del lado del servidor y que puede incorporarse en una página HTML tradicional.
- PHP puede ser utilizado en la mayoría de los servidores web y por todos los sistemas operativos.
- PHP es software libre.
- PHP trabaja del lado del servidor. Por tanto necesitaremos un servidor o tener en nuestro ordenador un servidor como Xampp que pueda interpretar el script php.
- PHP permite hacer páginas web dinámicas en donde parte del contenido es generado en el servidor en el momento de invocar la página web.
Con PHP podemos acceder directamente a la base de datos y en consecuencia podremos realizar cualquier operación (si estamos autorizados) sobre ella.
¿Tengo que aprender un nuevo lenguaje de programación? La respuesta es sí. Pero eso tampoco debe asustar demasiado, PHP es un lenguaje de script y si se conoce JavaScrip no será muy difícil aprender los conceptos básicos para conectarse a la base de datos y realizar consultas. El resultado de esa consulta puede ser un elemento GeoJSON que podremos procesar en Leaflet u OpenLayers con facilidad.
Ajax
No podemos cerrar este repaso a las herramientas para la interacción webmapping sin citar a AJAX (Asynchronous JavaScript And XML). AJAX nos permite comunicarnos con el servidor de forma asíncrona de tal manera que podemos realizar peticiones o actualizar los datos sin necesidad de recargar toda la página.
Un ejemplo es una selección de datos con un formulario. Podemos construir un formulario para seleccionar un datos concreto. El usuario podrá ir modificando su selección y la página web se actualiza con ese dato sin que se cargue toda la página nuevamente.
En nuestro curso online de web mapping interactivo utilizamos las herramientas necesarias para poder acceder a una base de datos MySQL y PostGIS desde un visor web mapping.
Tutor del curso online de Análisis GeoEspacial con Python y de los cursos online de webmapping. Echa un vistazo a todos nuestros cursos de SIG online.
Me gusta mucho vuestro articulo.
Buenísimo, gracias
Tenía la espectativa de poder crear un mapa web interactivo, no de que herramientas utilizar.
Cuál es el curso conveniente en el que se ven estas herramientas.
Hola Roberto:
Estamos preparando un curso específico sobre este tema que estará disponible en el mes de septiembre.
Hola, cual es el nombre del curso? Ya está disponible?
Hola Liz:
El curso está disponible. Se llama:
Curso online de web mapping interactivo (Leaflet, MySQL y PostGIS) y puedes encontrar toda la información en:
https://mappinggis.com/cursos/web-mapping-interactivo/
Saludos.
El título de la nota sugiere en «Cómo» crear un mapa web interactivo, y se quedó tan sólo con el «con qué».