¿Por qué hacer tiles? Por una cuestión de eficiencia y rapidez. Crear tiles consiste en hacer una pirámide del mundo y renderizar las imágenes previamente. De esta forma nuestros mapas son más rápidos porque solo descargan imágenes que ya han sido renderizadas.
Los servicios WMS estaban bien hace años pero hoy en día las necesidades son diferentes, y hay soluciones mucho mejores para aplicaciones con gran cantidad de usuarios. Tienen su uso justificado, pero no es una solución para aplicaciones escalables.
Os cuento un poco nuestra experiencia:
Tileamos la ortofoto de Andalucía a un nivel de detalle considerable (Nivel 18). Para esto usamos gdal2tiles.py. El primer problema fueron los formatos de las ortofotos, para el año 1956 era un MrSID y tuvimos que luchar un poco con GDAL. El segundo problema, y mucho más difícil, fue crear el mosaico.
Esta disponible en Carto. Sevilla año 1956 – Sevilla año 1979
Lo conseguimos, quedo muy bien pero tardaba demasiado, concretamente 50 días. Era inaceptable por lo que nos pusimos manos a la obra para mejorar los tiempos y de paso tener algo que nos permitiera coger datos desde las fuentes de datos más comunes.
El objetivo era tilear los mapas de todas nuestras aplicaciones sin importar el formato en el que estuvieran los datos. Creamos Equidna – 100% OpenSource -, y con ella hemos generado cientos de mapas para diferentes clientes y hemos reducido bastante los tiempos debido a que usamos todos los procesadores de la máquina. La mejora fue sustancial, con gdal2tiles tardábamos 50 días con Equidna llegamos a 30.
Equidna está basado en Mapnik y permite hacer tiles con casi cualquier fuente de datos: PostGIS, Shapefiles, GeoJSONs, GDAL, raster, etc…
Ahora trabajamos en una mejora basada en BigData con un algoritmo de Map/Reduce (aunque no me guste utilizar el término “BigData” creo que se entiende mejor). Con este nuevo enfoque asignamos a cada máquina una región del mundo y los resultados los escribimos en un sistema de ficheros distribuido.
De esta forma, en una plataforma elástica cómo Amazon EC2 podemos lanzar N máquinas, de forma que si un proceso tarda 50 días, si lanzamos 50 máquinas tardará 1 día (aprox.) y nos costará lo mismo. El sistema base sobre el que estamos desarrollando esta plataforma es Spark.
En unos meses publicaremos los resultados, y por supuesto, será OpenSource.
¡Hasta pronto!