Appearance
Mapas en mosaicos
El desarrollo de los mapas web comenzó a partir de 1993, cuando fue posible colocar imágenes en la web. Los primeros mapas web eran, por lo general, sólo imágenes escaneadas que se subían a un servidor. En 1993 se creó por primera vez un mapa interactivo generado por el usuario en el Centro de Investigación de Xerox Palo Alto, aunque el mapa se volvía a generar cada vez que se consultaba el servidor. Esta tecnología también se aplicó en el mapa web de MapQuest, que fue el más popular entre 1996 y 2009. En 2005, Google introdujo Google Maps, basado en la tecnología de mapas deslizantes. Ésta consistía en generar mosaicos de mapas por adelantado, y sólo se mostraban los mosaicos pregenerados a petición del usuario, y no el mapa completo. Al hacer zoom en el mapa sólo se descargaban los mosaicos que no se mostraban inicialmente. Desde entonces, esta tecnología ha sido adoptada por la mayoría de los servicios de mapas web.
Un mapa deslizante utiliza un componente JavaScript que se ejecuta en el navegador, este solicita dinámicamente los mapas de un servidor en segundo plano (sin recargar toda la página HTML) para ofrecer una experiencia de navegación de mapas con acercamientos suaves. La implementación de esto es proporcionada por dicha biblioteca de JavaScript, por ejemplo: OpenLayers o Leaflet.
Renderización de mosaicos
Para crear mapas de mosaico rasterizados, hay que dividir el área requerida en secciones. Por lo general, los usuarios no perciben cómo se almacenan los datos cuando se cargan las capas de mosaicos de mapas para su visualización desde diferentes servicios, ya que estas diferencias se producen en segundo plano. Cada conjunto de mosaicos tiene un esquema de almacenamiento de datos definido.
El sistema de coordenadas del mapa es un parámetro importante a considerar. Hoy en día, casi todos los mapas web utilizan el sistema de coordenadas Web Mercator (EPSG: 3857), que fue creado por Google y modificó el sistema de proyección Mercator original. Bajo este sistema de coordenadas, el mapa del mundo puede mostrarse como un cuadrado eliminando las regiones polares. Este cuadrado es una característica clave en los mapas de mosaico y se utiliza como mosaico de nivel de zoom cero. Cada nivel de zoom adicional se crea dividiendo la baldosa anterior en cuatro nuevas baldosas.
La principal diferencia entre los distintos esquemas es el origen de su sistema de coordenadas y la numeración de las baldosas. Google nombra sus mosaicos con un par de coordenadas X e Y. Para obtener un mosaico seleccionado, deben conocerse también sus coordenadas y el nivel de zoom, ya que cada nivel de zoom adicional comienza con un mosaico con coordenadas 0,0. La numeración comienza por la esquina superior izquierda. El segundo sistema de numeración de baldosas más utilizado (implementado, por ejemplo, por Bing Maps) también sitúa el origen en este punto, pero utiliza el algoritmo Quadtree para nombrar cada baldosa. Cada nuevo nivel de zoom mantiene el número de la baldosa y añade un número de 0 a 3 a la siguiente posición. El azulejo del primer nivel de zoom se indica como 0, y los cuatro azulejos del siguiente nivel de zoom se indican como 00, 01, 02 y 03.
El proceso de renderizado, que consiste en pasar de datos vectoriales a mapas rasterizados y en convertir las opciones de estilo en imágenes de mapa de bits, es un proceso que consume bastantes recursos. Se puede llevar a cabo con muchas opciones de software de renderizado. Un servidor de mosaicos no suele renderizar mosaicos en tiempo real para cada usuario que navega por el mapa. Los mosaicos se renderizan con antelación y se almacenan en el disco. Aun así, son relativamente pocos los programas de renderizado que tienen un historial probado para servir mapas mundiales de alto tráfico que se actualizan regularmente.
Las propiedades de los mapas web en mosaico requieren convenciones o estándares incluyen el tamaño de las baldosas, la numeración de los niveles de zoom, la proyección a utilizar, la forma en que las baldosas individuales están numeradas o identificadas de otra manera, y el método para solicitarlas.
La mayoría de los mapas web en mosaico siguen esquemas que tienen varios parámetros, como el tamaño de los píxeles, la forma y el tamaño de las baldosas, el origen del sistema de coordenadas, el tamaño de la matriz de las baldosas y el número de niveles de zoom.
- Los mosaicos son de 256x256 píxeles
- En el nivel de zoom más externo, el 0, todo el mundo puede ser representado en un solo mosaico de mapa.
- Cada nivel de zoom se duplica en ambas dimensiones, por lo que un solo mosaico se sustituye por 4 mosaicos al ampliarlo.
- Esto significa que unos 22 niveles de zoom son suficientes para la mayoría de los fines prácticos.
- Se utiliza la proyección Web Mercator, con límites de latitud de unos 85 grados.
Ventajas de los mapas en mosaicos
Los mapas en mosaico tienen varias ventajas. Cada vez que el usuario se desplaza, la mayoría de los mosaicos siguen siendo relevantes y pueden seguir mostrándose mientras se obtienen nuevos mosaicos. Esto mejora en gran medida la experiencia del usuario, en comparación con la obtención de una sola imagen de mapa para toda la ventana gráfica. También permite precalcular mosaicos individuales, una tarea fácil de paralelizar. Además, la visualización de las imágenes servidas desde un servidor web es menos exigente desde el punto de vista computacional que la representación de las imágenes en el navegador, lo que supone una ventaja con respecto a tecnologías como Web Feature Service (WFS). Aunque muchos mosaicos de mapas están en formato rasterizado (un archivo de mapa de bits como PNG o JPG), el número de proveedores de mosaicos vectoriales está creciendo.
Los mapas en mosaico permiten servir mapas web complejos a miles de usuarios simultáneos. Sin embargo, eliminaban la posibilidad de que los usuarios cambien el orden de las capas o los símbolos. Este problema se resuelve sirviendo capas de mapas base de uso general como mosaicos y luego superponiendo una capa separada con información temática. Los mosaicos del mapa base de uso general pueden reutilizarse en muchas aplicaciones. Las capas temáticas también se pueden colocar en mosaico si los datos no cambian demasiado rápido o cubren un área demasiado amplia a grandes escalas.
Estrategias para crear y servir mapas en mosaicos
Los mosaicos de mapas suelen tener una estructura de carpetas sencilla, lo que facilita su publicación. Sin embargo, su gestión puede resultar compleja debido a su gran tamaño y número. Hay varias formas de servir los mosaicos de mapas:
Ponerlos en una estructura de carpetas en un servidor web, y dejar que la gente los accese directamente. En este enfoque, sólo hay que organizar los mosaicos como archivos de imagen individuales bajo una estructura de carpetas que representa el nivel de escala, la fila y la columna. Muchas API de mapeo pueden utilizar mosaicos cuando se les presenta una estructura de URL con variables que representan la posición consistente del nivel, la fila y la columna. Por ejemplo, cuando se utiliza una capa en mosaico en la API de Leaflet, se debe proporcionar una URL de la forma http://{s}.somedomain.com/blabla/{z}/{x}/{y}.png, donde z es el nivel de escala y x e y son la columna y la fila.
Utilizar MBTiles que es un formato de archivo para contener conjuntos de imágenes (tilesets) bajo una estructura de base de datos SQLite. Un archivo MBTiles agrupa de forma muy optimizada una colección de pequeños mosaicos, clasificándolas por sus coordenadas X Y Z de manera que se puedan usar para un zoom determinado Z solamente aquellas imágenes que le corresponden de las coordenadas dadas. Las principales ventajas de esta estructura de archivo radican en el tamaño de su base de datos y la manera rápida y fluida de mostrar la información. Debido a ello este formato fue inicialmente concebido para la web, donde una cartografía cortada en teselas y estructurada por niveles de zoom podía servirse con rapidez, mostrándose posteriormente también eficaz para el consumo de cartografía offline en dispositivos móviles ya que el conjunto de teselas queda almacenado en un solo archivo.
A grandes escalas (ampliadas), el número de mosaicos que hay que almacenar puede ser abrumador, sobre todo si se trata de una zona amplia, como un estado o un país. La ironía es que, a escalas tan grandes, muchos mosaicos transmitirán muy poca información. Si nos acercamos a la escala de una manzana de un barrio a 1:2250, es posible que encontremos muchas características interesantes, pero si nos alejamos hacia el desierto o el océano a la misma escala, la baldosa puede estar completamente vacía. ¿Se desea dedicar horas a la creación de estos mosaicos y gigabytes de espacio en disco para almacenarlos?
En estas situaciones, es posible que se quiera encontrar un software que pueda crear mosaicos bajo demanda, es decir, en el momento en que son visitados por primera vez por un usuario. La primera persona que navegue por una región tendrá que esperar a que el servidor cree los mosaicos, pero los siguientes visitantes disfrutarán de todas las ventajas de los mosaicos creados. Las zonas más populares se llenarán de mosaicos, pero no se gastarán recursos creando y almacenando mosaicos que nunca se visitan. Obviamente, la eficacia de este enfoque varía en función de la rapidez con la que el servidor pueda dibujar los mosaicos bajo demanda.
Mosaicos vectoriales
Aunque los mapas de mosaico rasterizados fueron una idea revolucionaria a principios del siglo XXI, en la actualidad tienen muchas desventajas, normalmente debido a la necesidad de generar un conjunto completo de mosaicos cada vez que la geometría de los datos o la simbología cambia. Los mapas de mosaico rasterizados tampoco permiten a los usuarios interactuar con la web
Aunque los conjuntos de mosaicos rasterizados son capaces de ofrecer mapas de aspecto agradable en un formato relativamente rápido, pueden ser engorrosos de mantener actualizados y requieren enormes cantidades de recursos informáticos a grandes escalas de mapas. Para superar estos problemas, en los últimos años ha ganado popularidad un formato de almacenamiento de datos llamado "vector tiles". Mapbox ha liderado los esfuerzos de desarrollo de los mosaicos vectoriales y ha compartido una especificación de mosaicos vectoriales bajo una licencia de Creative Commons.
Los mosaicos vectoriales son exactamente lo que se piensa: almacenan trozos de datos vectoriales en lugar de almacenar una imagen de mapa. La idea detrás de los mosaicos vectoriales es que es más eficiente mantener el estilo de los datos separado de las coordenadas y los atributos de los datos. El cliente puede utilizar un conjunto predefinido de reglas de estilo para dibujar mosaicos de datos de coordenadas y atributos vectoriales en bruto enviados por el servidor. Esto permite cambiar el estilo de los datos sobre la marcha, lo cual es otra seria limitación de los mosaicos rasterizados. Si se quiere cambiar el tono de verde utilizado para dibujar los parques con mosaicos rasterizados, se debe reconstruir cada mosaico que contenga un parque. Si se quiere hacer lo mismo con los mosaicos vectoriales, sólo se tiene que actualizar las instrucciones de estilo en un lugar y los mosaicos en sí mismos siguen siendo los mismos. Otras operaciones de visualización, como la rotación del mapa, también son más fáciles de implementar con los mosaicos vectoriales.
Los mosaicos vectoriales están diseñados para ser pequeños en el disco, y emplean una serie de enfoques de optimización diseñados para reducir la cantidad de bytes necesarios para almacenar los datos y atributos geográficos).
Ejercicios
13.1. Muestre la enumeración de cada uno de los azulejos para el nivel 3 de zoom del mapa en mosaico para cada uno de los siguientes esquemas de codificación:
- A. Google Maps Tiles
- B. Bing Maps Tiles
13.2. Se ha sugerido que un esquema de codificación rectangular basado en 3 columnas y 2 filas representa una proyección más real del planeta. Además esta proporción es semejante al tamaño de muchas pantallas de computadoras y celulares (en modo horizontal). Muestre la enumeración de cada uno de los azulejos en el nivel 3 de zoom del mapa en mosaico sugerido realizando una generalización de los siguientes esquemas de codificación:
- A. Google Maps Tiles
- B. Bing Maps Tiles