Los mosaicos vectoriales , los vectores en mosaico o los vectiles [1] son paquetes de datos geográficos, empaquetados en "mosaicos" predefinidos de forma aproximadamente cuadrada para su transferencia a través de la web. Este es un método emergente para entregar mapas web con estilo , que combina ciertos beneficios de los mosaicos de mapas ráster pre-renderizados con datos de mapas vectoriales . Al igual que con los mapas web en mosaico ráster de uso generalizado , el cliente solicita los datos del mapa como un conjunto de "mosaicos" correspondientes a áreas cuadradas de terreno de un tamaño y ubicación predefinidos. Sin embargo, a diferencia de los mapas web en mosaico ráster, el servidor devuelve datos de mapas vectoriales, que se han recortado a los límites de cada mosaico, en lugar de una imagen de mapa renderizada previamente.
Hay varias ventajas importantes de este enfoque híbrido. En comparación con un mapa vectorial sin mosaicos, la transferencia de datos se reduce, [2] porque solo se deben transferir los datos dentro de la ventana gráfica actual y en el nivel de zoom actual. Los SIG operaciones de recorte de todos se pueden realizar con antelación, ya están predefinidos, de los límites de azulejos. Esto, a su vez, significa que los datos vectoriales en mosaico se pueden empaquetar y distribuir, sin necesidad de ningún tipo de sistema GIS disponible para proporcionar datos.
En comparación con un mapa ráster en mosaico, la transferencia de datos también se reduce considerablemente, ya que los datos vectoriales suelen ser mucho más pequeños que un mapa de bits renderizado. Además, el estilo se puede aplicar más adelante en el proceso, o incluso en el propio navegador, lo que permite una flexibilidad mucho mayor en la forma en que se presentan los datos. También es fácil proporcionar interactividad con las características del mapa, ya que su representación vectorial ya existe dentro del cliente. [2] Otro beneficio más es que se requiere menos potencia de procesamiento del servidor centralizado, ya que la rasterización se puede realizar directamente en el cliente. Esto ha sido descrito como hacer "renderizar ... un problema de última milla, con GPU [s] rápidas y de alta calidad en el bolsillo de todos". [3]
Historia
Existe una larga historia del uso de esquemas de teselas vectoriales en SIG. Un SIG muy temprano (alrededor de 1966), el Sistema de Información Geográfica de Canadá (CGIS), utilizaba un esquema de almacenamiento de mosaicos vectoriales que permitía a las computadoras de recursos limitados acceder y procesar de manera eficiente los datos de mapas vectoriales. [4] CGIS utilizó el término "marco" en lugar de mosaicos vectoriales.
En 1975, el Servicio de Vida Silvestre de EE. UU. Inició un programa nacional para mapear y digitalizar todos los humedales de EE. UU. En 1976, adjudicaron un contrato a Autometric para desarrollar una aplicación de software que permitiera digitalizar imágenes estéreo utilizando un trazador estéreo analítico. Posteriormente, se agregó soporte para la digitalización 2d a partir de fotos individuales (también conocido como resección de una sola foto) en una mesa de digitalización. El software se denominó WAMS (Sistema de cartografía analítica de humedales). El almacén de datos de WAMS utilizó una estructura vectorial en mosaico. Cada mosaico se denominó "geounidad". Una geounidad correspondía a una de las escalas cuadrangulares del USGS, típicamente 1: 24000. A medida que se digitalizaron los datos, se almacenaron inmediatamente en el almacén de datos en mosaico y se estructuraron topológicamente. Las líneas que cruzan los límites de las geounidades se dividieron automáticamente. El sistema de referencia de coordenadas de almacenamiento (CRS) fue WGS 72 lat / long. WAMS se describe en detalle en "El sistema de mapeo analítico de humedales: WAMS" [Pywell y Niedzwiadek, 1980]
Sobre la base de la experiencia operativa obtenida en la implementación y el uso de WAMS, así como del sistema de superposición de mapas y estadístico (MOSS), [5] en 1986 Autometric lanzó un SIG comercial basado en UNIX que implementó una estructura de acceso y almacenamiento indexada y en mosaico mejorada: DeltaMap (más tarde GenaMap). Las capacidades de la estructura en mosaico y el esquema de indexación se describen en "DeltaMap: no solo otro GIS". [6] Donde WAMS implementó un sistema de mosaico fijo basado en cuadrángulos de latitud / longitud 1: 24000, DeltaMap permitió al usuario definir cualquier tamaño de mosaico en cualquier sistema de referencia de coordenadas (CRS). De esta manera, los datos escasos requieren solo unos pocos mosaicos, mientras que los datos densos pueden usar mosaicos mucho más pequeños. Se utilizaron árboles R como esquema de indexación para los mosaicos vectoriales. Además, a diferencia de las implementaciones de ordenamiento en teselas anteriores, DeltaMap / GenaMap usaba el mismo esquema de ordenamiento en teselas e indexación para cualquier tipo de datos geoespaciales, incluidos datos vectoriales y de características 2d y 2.5d, imágenes de satélite, cuadrículas 3D como DEM y anotaciones. A fines de la década de 1980, Genasys mejoró aún más GenaMap para permitir el procesamiento "continuo y sin interrupciones" de las capas en mosaico. Básicamente, desde la perspectiva del usuario final, los mosaicos se volvieron invisibles. Esta capacidad era cierta independientemente de si el usuario estaba editando, visualizando, consultando o analizando los datos.
Estándares y enfoques
A principios de 2015, no existe un estándar dominante para mosaicos vectoriales. Los enfoques pueden diferir en su formato de URL, formato de serialización de datos, empaquetado de información de estilo y soporte para proyecciones distintas de Web Mercator.
Búferes de protocolo (Mapbox)
Mapbox ha definido un estándar abierto para mosaicos de mapas vectoriales llamado "vector-tile-spec" que utiliza búferes de protocolo de Google para la serialización de datos con uso eficiente del espacio. Web Mercator es la proyección de referencia, pero los mosaicos vectoriales se pueden utilizar para representar datos con cualquier esquema de proyección y extensión de mosaico. [7] También está vinculado al motor de renderizado de Mapnik , utilizando una "versión serializada de los datos internos que usa Mapnik". [8]
En marzo de 2015, Esri , el fabricante de software geoespacial dominante, anunció que admitiría el estándar de mosaicos vectoriales de Mapbox tanto en plataformas de servidor como de cliente. [9]
Azulejo del vector de Mapnik
Este fue uno de los primeros formatos desarrollados para el renderizador Mapnik1. [10]
Otros formatos
El enfoque seguido por TileStache es permitir múltiples formatos de serialización de datos; a principios de 2015, es compatible con GeoJSON, ArcJSON, GeoBSON, Arc GeoServices BSON, GeoAMF y Arc GeoServices BSON. El formato solicitado se proporciona en la URL (p. Ej., http://example.com/tiles/mylayer/2/1/3.json
)
Apoyo
Servicios y aplicaciones
Los mosaicos vectoriales han sido utilizados por el cliente de Android de Google Maps desde diciembre de 2010 [11] y en el cliente de escritorio desde 2013. [12] Los mosaicos vectoriales para representar datos de OpenStreetMap se propusieron por primera vez en marzo de 2013 [1] y son compatibles con Mapnik, [ 13] el renderizador de datos de OpenStreetMap más utilizado. Mapbox , un proveedor comercial de herramientas de cartografía personalizadas y alojamiento, ha centrado su herramienta de cartografía, Mapbox Studio, en mosaicos vectoriales. [14]
El popular y muy poderoso cliente de Android para datos de OpenStreetMap, osmAnd , admite mosaicos vectoriales, a los que llama "mapas vectoriales". [15]
Servidores
La canalización del servidor de mosaicos TileStache admite varios tipos de JSON de forma nativa. [16] También existe un proveedor de complementos de teselas vectoriales llamado VecTiles [17] que convierte datos PostGIS en teselas vectoriales en formato Mapnik Vector Tile (incompatible con la especificación Mapbox [18] ) o TopoJSON .
PGRestAPI (también conocido como Chubbs Spatial Server) es un servidor NodeJS independiente que también puede generar mosaicos vectoriales sobre la marcha a partir de una fuente de datos PostGIS, además de servir mosaicos vectoriales pregenerados de fuentes como Mapbox Studio. [19]
ESRI ArcGIS Server 10.4 [20] y ArcGIS Pro 1.2 [21] lanzados en febrero de 2016 agregaron soporte para mosaicos vectoriales.
Bibliotecas cliente
La biblioteca Leaflet JavaScript no admite directamente mosaicos vectoriales, pero hay un complemento de terceros para mosaicos vectoriales, Leaflet.MapboxVectorTile para Leaflet 0.7.x [22] y Leaflet.VectorGrid para Leaflet 1.0.x. [23]
Se puede utilizar la propia biblioteca JavaScript de Mapbox, Mapbox GL JS. [24]
OpenLayers admite mosaicos vectoriales a través del objeto ol.source.VectorTile, [25] a partir de la versión 3.
enlaces externos
- Mosaicos vectoriales (OpenStreetMap wiki)
- Especificación de mosaicos vectoriales Mapbox
- Proyecto OpenMapTiles
Referencias
- ^ a b "la libertad de postgreslessness: vectores en mosaico en mapnik (tecznotes)" . mike.teczno.com . Consultado el 24 de agosto de 2014 .
- ^ a b "Acerca de los vectores en mosaico" . research.microsoft.com . Consultado el 24 de agosto de 2014 .
- ^ Migurski, Michal (1 de abril de 2013). "Diapositivas de Geomeetup 2013-04" (PDF) .
- ^ "Lecturas introductorias en sistemas de información geográfica" . Prensa CRC . Consultado el 26 de abril de 2016 .
- ^ Moss: una perspectiva histórica https://www.scribd.com/document/4606038/2004-Article-by-Carl-Reed-MOSS-A-Historical-perspective
- ^ Reed CN (1986) DELTAMAP: No es simplemente otro nuevo GIS - Actas del 3er Simposio Internacional sobre Manejo de Datos Espaciales. Comisión IGU sobre detección y procesamiento de datos geográficos, Williamsville NY, págs. 375-83
- ^ "vector-tile-spec / 2.1 en master · mapbox / vector-tile-spec · GitHub" . github.com . Consultado el 24 de mayo de 2016 .
- ^ "Resumen de azulejos vectoriales" . Mapbox.
- ^ "Especificación de mosaicos vectoriales Mapbox adoptada por Esri" . Blog de Mapbox . 2015-03-17.
- ^ "Python: módulo TileStache.Goodies.VecTiles.mvt" . tilestache.org . Consultado el 20 de noviembre de 2015 .
- ^ "Bajo el capó de Google Maps 5.0 para Android - Blog oficial de Google Mobile" . googlemobile.blogspot.com.au . Consultado el 24 de agosto de 2014 .
- ^ "Práctica rediseñada de Google Maps: basada en vectores, más personal y próximamente en dispositivos móviles" . engadget.com . Consultado el 24 de agosto de 2014 .
- ^ "mapbox / mapnik-vector-tile · GitHub" . github.com . Consultado el 24 de agosto de 2014 .
- ^ "Azulejos vectoriales para calles MapBox | Mapbox" . mapbox.com . Consultado el 24 de agosto de 2014 .
- ^ "HowToVectorTileData - osmand - Este artículo describe cómo utilizar las funciones clave - Visualización y navegación de mapas móviles globales para mapas OSM en línea y sin conexión - Alojamiento de proyectos de Google" . Consultado el 24 de agosto de 2014 .
- ^ "TileStache.Vector" .
- ^ "TileStache.Goodies.VecTiles.server" .
- ^ "Protobuf.skip tipos no implementados · Edición # 15 · SpatialServer / Leaflet.MapboxVectorTile" . GitHub . Consultado el 20 de noviembre de 2015 .
- ^ "PGRestAPI (también conocido como servidor espacial de Chubbs)" . 2015-02-25.
- ^ https://blogs.esri.com/esri/arcgis/2016/02/18/arcgis-10-4-is-here/
- ^ https://pro.arcgis.com/en/pro-app/get-started/whats-new-in-arcgis-pro-1-2.htm
- ^ "Folleto.MapboxVectorTile" . GitHub . 2015-02-12.
- ^ "Folleto.VectorGrid" . GitHub . 2017-02-16.
- ^ "Documentación API" . Mapbox.
- ^ "Documentación de Open Layers 3" .