Servidores

Autores

Introducción

En esta sección se va a abordar el amplio conjunto de proyectos correspondientes a la capa intermedia de cualquier sistema de información, también conocida como middleware. En esta sección se cubre por tanto cualquier aplicación que se ejecuta en un servidor y que tiene como objetivo proporcionar uno o más servicios que serán consumidos por clientes, independientemente de si estos son otras aplicaciones de servidor, clientes web, clientes de escritorio o dispositivos móviles.

¿Qué tipos de servicios actualmente se ofrecen relacionados con la Información Geográfica? Una agrupación funcional podría ofrecernos las siguientes categorías:

  • Servidores de mapas: Encargados de renderizar datos tanto vectoriales como raster en diferentes estilos y proyecciones cartográficas, en general cumpliendo el estándar WMS de OGC
  • Servidores de teselas: Una variante del anterior es aquellos servidores que ofrecen la cartografía renderizada únicamente en juegos de teselas con un número limitado de resoluciones, casi siempre además empleando sistemas de almacenamiento intermedio (caches). En este caso hay dos estándares en el sector, el estándar TMS y el WMTS de OGC
  • Servidores de datos brutos: Al contrario que las categorías anteriores, estos servidores ofrecen la cartografía vectorial o raster en formatos que deben luego ser procesados por los clientes para la tarea para la que estén desarrollados, tanto si es para su análisis como su visualización. Los estándares de comunicación son WFS y WCS respectivamente para datos vectoriales y raster. En esta categoría se podrían incluir también a los servidores relacionados con la publicación de datos de sensores, en todo el abanico de estándares OGC englobados en lo que se conoce como Sensor Web Enablement
  • Servidores de metadatos: Estos servidores implementan estándares de descubrimiento de datos como CSW. Mediante estos servidores usuarios y otros componentes pueden encontrar juegos de datos y otros servicios mediante protocolos estandarizados. Estos servidores son el corazón de las Infraestructuras de Datos Espaciales.
  • Servidores de geoprocesos: Estos servidores exponen operaciones de análisis, que pueden partir de datos directamente disponibles en el servidor o bien acceder a otros servidores de datos brutos para encadenar servicios que realicen flujos de geoprocesamiento de todo tipo. El estándar de OGC para geoprocesamiento es el WPS.

Es habitual que un producto de Software Libre cubra más de una funcionalidad de las definidas en la categorización anterior, especialmente con los proyectos más veteranos. La interoperabilidad es otra de las características del Software Libre geoespacial y es por ello que la mayoría de los productos suelen intentar implementar aquellos estándares que afectan a su área de interés.

En las siguiente tablas se presentan las características principales de los productos revisados en el contexto de este trabajo así como los principales estándares que implementan. Se puede consultar más información sobre la estructura de la primera tabla en la introducción.

Información general sobre servidores

Información general sobre servidores

Implementación de estándares OGC

Implementación de estándares OGC

Importante

Se puede consultar la versión más reciente, así como los enlaces asociados y anotaciones en la sección de Servidores del wiki de OSGeo.

Software

En esta sección se describirá brevemente cada uno de los productos evaluados en esta comparativa. El orden de aparición es cronológico, empezando por los proyectos más veteranos.

MapServer:
Probablemente el servidor de mapas más usado en el mundo sigue desarrollándose sin pausa, incorporando en los últimos años nuevos subproyectos como MapCache y TinyOWS. Su configuración sigue siendo mediante ficheros de texto aunque aparecen nuevas interfaces para facilitar su edición como MapManager. Sigue destacando de este servidor su ligereza y facilidad de despliegue (si no se necesita soporte para formatos privativos).
deegree:
Este servidor de mapas con una comunidad principalmente alemana soporta una gran cantidad de estándares. Este servidor se caracterizó durante mucho tiempo por su ardua configuración, cosa que está cambiando gracias al esfuerzo puesto en desarrollar una consola web para los servicios y una documentación mucho más detallada.
GeoServer:
GeoServer es un proyecto ejemplar por su activa comunidad, frecuentes actualizaciones e innovaciones más allá de la implementación de gran parte de los estándares OGC existentes. Sus extensiones al estándar SLD, el soporte de estilos CSS, el buen soporte para multitud de orígenes de datos y su amigable interfaz lo convierten en un servidor de mapas ampliamente utilizado en todo tipo de contextos, especialmente en grandes instalaciones.
GeoNetwork:
El servidor de metadatos más utilizado en el sector sigue ofreciendo actualizaciones y mejoras constantes gracias al apoyo tanto de las empresas que lo desarrollan como de las administraciones públicas que lo utilizan, haciendo de este servidor la primera opción a la hora e implementar un nodo de una Infraestructura de Datos Espaciales, con múltiples referencias y casos de éxito.
52ºnorth SOS:
Probablemente la implementación más relevante del principal estándar OGC sobre sensores. No dispone de una interfaz de usuario salvo una sencilla consola para ejecutar consultas de ejemplo. La última versión (4.0) implementa la versión más reciente del estándar SOS, la 2.0.
MapGuide:
El servidor liberado por AutoDesk siempre se ha vinculado a entornos Windows (aunque aparentemente puede funcionar en Linux) y su falta de soporte para estándares OGC parece que le ha dejado atrás en el panorama de Software Libre. Pese a todo, es el único servidor de mapas que integra completos visores y se puede considerar una solución completa, aunque en general se prefieran entornos desacoplados donde el uso de estándares facilite desarrollar clientes personalizados.
PyWPS:
Este pequeño servidor WPS se ha reescrito durante el último año y pretende ofrecer una interfaz ligera en la que desarrollar geoprocesos en el popular lenguaje de programación Python. La creciente comunidad geoespacial alrededor de este lenguaje de programación y por lo tanto, una cada vez mayor oferta de componentes que ofrecen funcionalidad pueden hacer este producto interesante.
GeoWebCache:
GeoWebCache nació como un proyecto dentro del programa de becas de verano de Google para estudiantes (Google Summer of Code). El objetivo era cubrir la necesidad en GeoServer de un servidor de teselas que permita pregenerar y acelerar la cartografía servida por este producto. Con el tiempo ha ido creciendo en funcionalidad y se puede considerar un producto independiente, aunque en general se utilice conjuntamente con GeoServer. Al igual que GeoServer, destaca por su cómoda interfaz de usuario, capacidad para limitar en disco las caches, generación y borrado de las mismas, etc.
TileCache:
Durante mucho tiempo TileCache fue la implementación de referencia del estándar de facto TMS. El proyecto lleva ya bastante tiempo estancado sin prácticamente actividad por lo que se puede considerar en periodo de senectud y no sería aconsejable instalarlo en nuevos proyectos.
52ºnorth WPS:
Este servidor de procesos dispone de una sencilla interfaz y conectores para implementar geoprocesos en el lenguaje de programación R, usar procesos del GIS de escritorio GRASS, o de SEXTANTE.
MapProxy:
MapProxy es un servidor de teselas que dispone de algunas características interesantes. Al igual que GeoWebCache permite responder a cualquier petición WMS, no solo a las correspondientes con teselas de las caches definidas. Además dispone de varios mecanismos de almacenamiento de teselas más allá del uso del sistema de ficheros. Además puede usarse como un servidor de mapas estándar para ficheros de configuración de la biblioteca de renderización Mapnik. Su configuración mediante sencillos ficheros de texto y las herramientas de ayuda a configuración y despliegue de las mismas lo convierten en un producto ciertamente versátil.
PyCSW:
Servidor de metadatos desarollado en el lenguaje Python, diseñado para ser tanto una librería como un servidor independiente, por lo que se puede integrar en otros desarrollos o desplegar como un servidor. Es un proyecto pequeño, reciente y sin interfaz de usuario. Se puede arrancar el servidor importando una carpeta de ficheros XML de metadatos y utiliza una base de datos, implementando el estándar CSW (entre otros) para acceso a los metadatos y los estándares OGC más importantes para recopilar metadatos de servicios existentes. Este servidor se ha integrado en productos más grandes como son el servidor de Open Data CKAN y el portal de datos geográficos GeoNode.
QGIS Server:
Este servidor nace en el contexto del proyecto QGIS como una forma sencilla de exponer proyectos de este software de escritorio a través de la red y mediante los estándares WMS y WFS. Técnicamente es un producto escrito en C++ que se despliega como un servidor FastCGI/CGI (como MapServer) y que proporciona un plugin para el software de escritorio de tal forma que se facilita enormemente la publicación de datos geográficos desde este producto.
TileStache:
Servidor de teselas heredero del veterano TileCache, desarrollado para mejorar las funcionalidades de éste, aunque no ha tenido mucha actividad en los últimos meses. Sus principales características son que está orientado a renderizar mapas a partir de ficheros de configuración de Mapnik, generar teselas vectoriales en formato GeoJSON, puede almacenar las caches no solo en disco sino también en memoria o en Amazon S3.
ZOO Project:
Este proyecto consiste en un núcleo escrito en C++ que permite ejecutar los procesos en diferentes lenguajes y para cualquier propósito, un conjunto de servicios a modo de ejemplo que escritos en diferentes lenguajes de programación y utilizando librerías bien conocidas realizan diferentes procesos como el cálculo de rutas, conversión de datos, etc. Finalmente el proyecto proporciona una interfaz de programación (API) escrita en JavaScript para ejecutar procesos WMS desde el servidor. Este proyecto se integra muy bien con MapServer para generar servicios WMS dinámicos a partir del resultado de procesos WPS de forma que el software ofrece directamente un método de visualización de los resultados.
EOxServer:
Este software es básicamente una aplicación web escrita en el framework Django, que permite modelar juegos de datos de observación de la Tierra, utilizando y extendiendo MapServer para ofrecer servicios WMS y WCS de estos datos así como una interfaz de visualización, consulta y administración en un entorno web. A partir de un conjunto de imágenes raster de diferentes áreas e instantes temporales, EOxServer además de exponerlas por WMS y WCS usando el perfil específico para datos de observación de la Tierra, ofrece servicios para generar mosaicos y previsualizaciones, mediante un entorno web (usando OpenLayers) para navegar por las diferentes fechas y regiones.
TileStream:
TileStream es un servidor de teselas pensado para servir archivos MBTiles. Es decir no genera ningún tipo de cache ni se conecta con servicios para solicitar las imágenes como el resto de servidores. Se trata de un software limitado únicamente a servir teselas almacenadas en este tipo de bases de datos. El hosting de teselas de Mapbox usa una variante de este servidor para su servicio.

Puntos calientes

Este área del Software Libre geoespacial está en continua evolución, pese a que la complejidad inherente a desarrollar este tipo de productos es elevada y hace algún tiempo que no aparece ningún producto relevante. Así y todo los proyectos existentes en general gozan de buena salud y no dejan de actualizarse e innovar.

En el área de los servidores de mapas la mejora del rendimiento y en especial de las capacidades de simbolización han facilitado la aplicación de estos productos en proyectos cada vez más complejos, como en el caso del uso de GeoServer en el Instituto Geográfico Francés [GeoServerIGN]. La innovación de aplicar al área de la cartografía un lenguaje de definición de simbologías análogo a las hojas de estilo de las páginas web (el estándar CSS) va a facilitar a los especialistas diseñar y mantener los estilos de sus mapas de una forma mucho más sencilla y a la vez expresiva.

En cuanto a los servidores de geoprocesamiento, la capacidad para definir procesos de análisis geográfico utilizando lenguajes de programación de alto nivel, como Python o JavaScript entre otros, va a facilitar la inevitable transición de este tipo de procesos desde los clientes de escritorio a los servidores. Así, proyectos como ZOO Project o el uso de GeoScript en GeoServer ponen a disposición de los analistas un entorno de trabajo que soporta varios lenguajes con un rendimiento elevado y en un entorno distribuido.

Los servidores de teselas siguen siendo de momento un mal necesario para ofrecer un rendimiento adecuado en proyectos con cartografía que no sufre actualizaciones frecuentes, imágenes raster o simplemente que no necesitan estilos dinámicos. Esta situación en cualquier caso para la información vectorial se percibe como transitoria ya que están empezando a aparecer productos y servicios que optimizan la presentación de cartografía sirviéndola en un formato vectorial junto con los estilos, siendo responsabilidad del cliente la renderización de la misma. Esta variante permite ofrecer cartografía mucho más dinámica tanto en su componente temporal como en la de la simbolización.

Finalmente en el área de los servicios de descubrimiento el desarrollo de GeoNetwork, el principal servidor de metadatos libre, sigue activo y van apareciendo nuevas alternativas y variantes como el soporte del protocolo CSW por parte de GeoServer, así como la aparición del proyecto PyCSW y su integración en otros productos.

Curva de aprendizaje y conocimientos previos

Principalmente existen dos perfiles de técnicos a la hora de trabajar con este tipo de productos. Esto se debe a que la implantación de un servicio en la red en primer lugar necesita de especialistas en sistemas que se encarguen de una correcta instalación del producto, adaptación del sistema operativo y de la red a la que se conecta, otros sistemas que puedan afectar al mismo, configuración y acceso a bases de datos, etc. Por otro lado igualmente en general es necesaria la intervención de un técnico especializado en el área geoespacial para la configuración avanzada del producto, preparar la cartografía o bases de datos a ofrecer, generar metadatos, etc. Es habitual que técnicos de un único perfil hagan todo el trabajo pero como en cualquier proyecto geoespacial, es en la multidisciplinariedad de los equipos de trabajo donde mejores resultados se van a conseguir.

Por lo tanto los conocimientos necesarios para este amplio conjunto de productos y desde el punto de vista tanto de la administración de sistemas como de la Información Geográfica es elevado, aunque puede depender también del producto. Nombrando los más importantes:

Desde el punto de vista de la administración de sistemas:
  • Instalación y configuración de servidores web y de aplicaciones.
  • Configuración de aplicaciones FastCGI/CGI, WSGI, NodeJS, JEE, etc. en función del producto.
  • Creación y configuración de Bases de datos, esquemas de datos, usuarios y roles, etc.
  • Configurar caches, proxies inversos y reescritura de direcciones web para integrar varios servidores. Por ejemplo es habitual exponer un servidor de aplicaciones JEE (por ejemplo GeoNetwork ejecutándose en el contenedor de servlets Tomcat) detrás de un servidor web, e incluso éste último detrás de un acelerador web como Varnish.
Desde el punto de vista del técnico en tecnologías geoespaciales:
  • Conversión de formatos de datos geográficos (raster y vectorial).
  • Manejo y carga de bases de datos espaciales.
  • Conocer los diferentes especificaciones OGC, tanto en protocolos como en formatos (en función del producto).
  • Comprender las principales proyecciones cartográficas y sistemas de referencia.
  • Comprender las diferencias entre los diferentes formatos de imagen soportados por los navegadores, el concepto de cache, etc.

Documentación

A continuación se ofrecen enlaces a las principales páginas de documentación, tutoriales o ejemplos que pueden ayudar a empezar a trabajar con cada uno de los productos revisados.

Documentación de proyectos
Proyecto Documentación OSGeo Live Otros
MapServer MapServer docs MapServer qs  
deegree deegree docs deegree qs  
GeoServer GeoServer docs GeoServer qs taller de introducción
GeoNetwork GeoNetwork docs GeoNetwork qs Geonetwork workshop
52ºnorth SOS 52ºnorth SOS docs 52ºnorth SOS qs  
MapGuide MapGuide docs MapGuide qs  
PyWPS PyWPS docs   PyWPS tutorial
GeoWebCache GeoWebCache docs   taller de Boundless
TileCache TileCache README    
52ºnorth WPS   52ºnorth WPS qs tutoriales de 52ºnorth WPS
MapProxy MapProxy docs MapProxy qs  
PyCSW PyCSW docs PyCSW qs taller de PyCSW
QGIS Server   QGIS Server qs tutorial de QGIS Server
TileStache TileStache docs    
ZOO Project: ZOO Project docs ZOO Project qs taller del FOSS4G2013
EOxServer EOxServer docs EOxServer qs  
TileStream notas de instalación y uso    

Referencias

[GeoServerIGN]Using GeoServer at IGN (the French National Mapping Agency) to create new digital maps