Probando MapProxy


Durante bastante tiempo hemos tenido a TileCache como «el producto» (libre por supuesto) a usar cuando queríamos montar un servidor de teselas que acelerara nuestros clientes web, usando TMS o WMS-C como protocolos de acceso. Desde hace un tiempo GeoWebCache ha ido tomando forma, lo que empezó como una beca para un Google Summer of Code se ha ido convirtiendo en un producto funcional. Pero desde hace tiempo ha llegado un nuevo chico al barrio, se llama MapProxy y tiene algunas características bastante interesantes.

MapProxy tecnológicamente hablando es un desarrollo escrito en Python, que permite desplegarse en lo que se llama un “entorno virtual” que permite aislar tu entorno de desarrollo del resto de tu sistema. Igualmente trae un sencillo servidor web para desarrollo y para usarlo en producción debemos acudir a FastCGI o bien a WSGI, un estándar Python para desplegar aplicaciones web. El despliegue por tanto es más o menos similar al de TileCache.

MapProxy no sólo se expone como un servidor TMS o WMS-C, también y esta es su mayor diferencia, se expone como un servidor WMS normal. Es decir, a partir de los orígenes que definamos y que se irán almacenando cacheados en disco, además de como servicios de teselas MapProxy también podrá atender a peticiones que caigan fuera de los límites de dicha cuadrícula. Para ello compondrá y reproyectará si fuera necesario la imagen al tamaño y sistema de referencia requerido.

Esto abre escenarios muy interesantes, por ejemplo usar nuestras caches con clientes pesados como gvSIG y no sólo tirando de servicios WMS existentes sino también de otros que únicamente fueran servidos mediante TMS. Es decir, por decirlo de forma sencilla, podemos montar un WMS de OpenStreetMap. Claro que un origen como OSM no se verá muy bien en las zonas intermedias entre resoluciones de la caché porque las etiquetas y elementos lineales se distorsionarán bastante. Pongo un pequeño ejemplo a una escala bastante grande, de cómo se vería OSM en gvSIG.

Más usos: cachear OSM u otros orígenes muy frecuentados en nuestra organización (como por ejemplo el PNOA), permitiendo a nuestros técnicos no sólo consumir estos datos desde clientes ligeros de visores corporativos sino también desde clientes pesados claro. Podríamos limitar esas caches tanto en su extensión geográfica, como en su duración temporal así como en su espacio ocupado en disco porque  MapProxy también añade bastante «azúcar» en la parte de la generación y mantenimiento de sus caches, pero esto lo dejaré para otro día.

Desgraciadamente MapProxy aún no soporta el estándar WMTS aunque diría que esto se resolverá en poco tiempo y hace otras cosas interesantes como redirigir las peticiones getFeatureInfo y getLegendGraphic a las capas originales, cosa que TileCache (si no me equivoco) tampoco hace.

Instalar MapProxy en una distribución GNU/Linux moderna es bastante sencillo, la documentación es muy buena (usan mi querido sphinx) y su lista de correo es bastante activa como para ir salvando cualquier escollo que vayamos encontrando.

En este enlace a pastebin dejo una configuración básica bastante autoexplicativa en la que se sirven dos capas, la de OSM de la figura anterior y también el WMS-C del PNOA. Me hubiera gustado conectar al PNOA mediante el protocolo TMS pero no ha habido manera, al final he usado una capa WMS, teniendo que eliminar los metatiles porque MapProxy los usa por defecto en capas WMS. En cualquier caso el ejemplo funciona a la perfección.

A continuación dejo un pantallazo de gvSIG mostrando en dos vistas el PNOA en vivo y el cacheado, se puede ver que no hay diferencia apreciable entre ambos. Lo que se ve por cierto es el Gulliver de Valencia, un parque rompepantalones muy popular.

Como conclusión a este ¿primer? artículo sobre MapProxy simplemente recomendar su evaluación si se tiene que desplegar un servidor de teselas nuevos y el entorno tecnológico es el adecuado. Servir WMS a partir de caches añade una funcionalidad que en determinados escenarios puede ser más que interesante.

About these ads