3. WMS aspectos prácticos GetCapabilities
Permite descubrir cuáles son las capacidades del servidor. Como respuesta
obtenemos un archivo en formato xml donde se puede saber cuáles son las
versiones de WMS soportadas por el servidor, cuál es el sistema de referencia, las
coordenadas, qué formato de imagen soporta y las capas de información que
contiene.
Los parámetros para lanzar la petición:
obligatorios:
● REQUEST = GetCapabilities
● SERVICE = WMS
opcionales:
● VERSION = 1.1.1 (versión del estándar
WMS)
● FORMATO = text/html
http://geoserveis.icgc.cat/icc_mapesbase/wms/service?REQUEST=GetCapabilities&SERVICE=WMS
4. WMS aspectos prácticos GetCapabilities
Tamaño máximo de imágen
<Service>
<Name>icc_bt5m</Name>
<Title>
ICC - Base topogràfica de Catalunya 1:5 000 (BT-5M) - Capes WMS 96dpi
(píxel 0,26458333 mm)
</Title>
...
<MaxWidth>2048</MaxWidth>
<MaxHeight>2048</MaxHeight>
</Service>
http://geoserveis.icgc.cat/icc_mapesbase/wms/service?REQUEST=GetCapabilities&SERVICE=WMS
8. WMS aspectos prácticos GetMap
Petición GetMap devolverá un mapa en formato imagen, ya sea un PNG, JPEG, GIF, etc.
Los parámetros para lanzar la petición:
obligatorios:
● REQUEST = GetMap
● SERVICE = WMS
● VERSION = 1.1.1 (version del estándar WMS)
● LAYERS = nombre de la(s) capa(s)
● STYLES = si no hay estilo se puede dejar en blanco
● SRS ó CRS = 23031 (código EPSG del sistema de referencia) En la version 1.3.0 es CRS
● BBOX = minx,miny,maxx,maxy (caja de coordenadas del mapa)
● WIDTH = número píxeles de ancho
● HEIGHT = número píxeles de altura
● FORMATO = image/png (formato de salida de la imagen)
opcionales:
● TRANSPARENT = indica si el fondo del mapa debe ser transparente. Los valores son verdadero (true) o falso (false).
● BGCOLOR = color de fondo para la imagen del mapa. El valor está en la formato RRGGBB hexadecimal
● SLD = una URL que hace referencia a un archivo XML StyledLayerDescriptor que controla el estilo de las capas de mapa
http://geoserveis.icc.cat/icc_bt5m/wms/service?REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&LAYERS=03_POBL_PA,04_PO
BL_PA,07_POBL_PA,08_VEGE_PA,12_POBL_PA,13_HIDR_PA,40_TOPO_TX&STYLES=&FORMAT=image/png&BGCOLOR=0xFFF
FFF&TRANSPARENT=TRUE&SRS=EPSG:25831&BBOX=426253,4581008,426753,4581508&WIDTH=500&HEIGHT=500
9. WMS aspectos prácticos GetFeatureInfo
Petición GetFeatureInfo sirve para mostrar los atributos de los objetos del mapa, vuelve la información en formato de tabla
o XML. Si una capa está marcada como “consultable” (queryable), se puede solicitar datos sobre una coordenada de la
imagen del mapa.
Los parámetros para lanzar la petición:
obligatorios:
● REQUEST = GetFeatureInfo
● SERVICE = WMS
● VERSION = 1.1.1 (versión del estándar WMS)
● QUERY_LAYERS = nombre de la(s) capa(s)
● STYLES = si no hay estilo se puede dejar en blanco
● SRS ó CRS = 23031 (código EPSG del sistema de referencia)
● BBOX = minx,miny,maxx,maxy (caja de coordenadas del mapa)
● WIDTH = número píxeles de ancho
● HEIGHT = número píxeles de altura
● X ó I = valor del píxel a consultar. En la 1.3.0 es i
● Y ó J = valor del píxel a consultar. En la 1.3.0 es j
opcionales:
● INFO_FORMAT = text/html (formato de la respuesta)
● FEATURE_COUNT = número máximo de elementos a devolver
http://geoserveis.icc.cat/icgc_bm5m/wms/service?REQUEST=GetFeatureInfo&SERVICE=WMS&VERSION=1.1.1&LAYERS=10_MUNICI
PI_PC&QUERY_LAYERS=10_MUNICIPI_PC&INFO_FORMAT=text/html&STYLES=&SRS=EPSG:25831&BBOX=257904,4484796,6803
04,4907196&WIDTH=768&HEIGHT=768&X=295&Y=580
10. WMS aspectos prácticos GetLegendGraphic
Petición que devuelve una imagen de la imagen de la leyenda del mapa de una capa, proporcionando una guía visual de los
elementos del mapa.
Los parámetros para lanzar la petición:
obligatorios:
● REQUEST = GetLegendGraphic
● LAYER = nombre de la capa
● FORMAT = image/png (formato de la respuesta)
opcionales:
● WIDTH = número píxeles de ancho
● HEIGHT = número píxeles de altura
http://wms.guifi.net/cgi-bin/mapserv?map=/home/guifi/maps.guifi.net/guifimaps/GMap.map&version=1.3.0&service=WMS&request=
GetLegendGraphic&sld_version=1.1.0&layer=Nodes&format=image/png&STYLE=default
11. WMS aspectos prácticos
Principales diferencias entre las versiones 1.1.1 y 1.3.0
● En la operación GetMap, el parámetro SRS se llama CRS en 1.3.0
● En la operación GetFeatureInfo, los parámetros X e Y se llaman I y J en 1.3.0.
● En 1.1.1, los sistemas de coordenadas geográficas especificados con el espacio de nombres EPSG
se definen para tener un orden de ejes de longitud / latitud. En 1.3.0 el orden es la latitud / longitud.
Por ejemplo, considere la solicitud WMS 1.1 utilizando el SRS WGS84 (EPSG: 4326):
server/wms?VERSION=1.1.1&REQUEST=GetMap&SRS=epsg:4326&BBOX=-180,-90,180,90&.
..
La solicitud equivalente WMS 1.3.0 es:
server/wms?VERSION=1.3.0&REQUEST=GetMap& CRS=epsg:4326&BBOX=-90,-180,90,180&..
.
12. WMS aspectos prácticos
Problemas comunes
● Tamaño de la imagen (pantallas grandes y/o de mucha resolución)
● Capas no visibles por el control de escala
● Capas no consultables
● Formato de salida del GetFeatureInfo
● No están pensados para peticiones teseladas (velocidad)
● No tienen caché. Las imágenes se generan al vuelo
● Lista restringida de SRS soportados
● En software de escritorio el onlineResource (QGis tiene la opción de ignorar el onlineResource )
● Modificar el estilo (SLD poco soportado)
● SLD difícil de entender y hacer
13. Pirámides de teselas
En 2005 GoogleMaps introdujo una "nueva" (quadtree) forma de mostrar datos geográficos por la web, pregenerando el
mapa por niveles de zoom y tiles (teselas) de 256x256 pixeles.
También creó una nueva proyección basada en mercator, llamada pseudo-mercator o web mercator, cuyo código EPSG es
3857
14. Pirámides de teselas
Para cargar las teselas se utiliza una llamada HTTP rest dónde se especifica;
https://.../.../z/x/y.format
z= Nivel de zoom
x=coordenada X
y=coordenada Y
Formato
Raster: Imágen png o JPEG
Vector: (pbf o mvt)
15. Diferencias entre teselas raster y teselas vectoriales
Teselas vectoriales (Vector Tiles) Teselas raster
Estilo se define en el cliente Estilo se define en el servidor
Sólo se necesita teselar la información una sola vez y se
pueden tener múltiples estilos de mapas
Hay que teselar la información para cada estilo de mapa
Overzoom se mantiene resolución Overzoom pierde resolución (pixelado)
Menor tamaño (se recomienda máximo 500kb) Más fáciles de consumir
Caché ocupa mucho menos espacio. Factible el uso en
dispositivos móviles sin conexión
Caché ocupa mucho espacio. Uso en dispositivos móviles
requiere mucho espacio de disco
Acceso nativo a la información del objeto (atributos y
geometría), lo que permite un procesamiento muy
sofisticado
Se ven mejor en dispositivos de alta resolución
16. Teselas vectoriales (Vector Tiles)
Las teselas vectoriales han sido utilizadas por el cliente Android de Google Maps desde diciembre de 2010 y en el cliente de
escritorio desde 2013. La especificación de teselas vectoriales se propuso por primera vez en marzo de 2013 por Mapbox.
Las teselas vectoriales son un formato de datos liviano para almacenar datos vectoriales geoespaciales, como puntos,
líneas y polígonos. Las teselas vectoriales codifican información geográfica de acuerdo con la especificación de teselas
vector de Mapbox. La especificación de Mapbox es un estándar abierto bajo una licencia Creative Commons Attribution 3.0
US.
Una tesela vectorial (vector tiles) contiene datos vectoriales georreferenciados (puede contener múltiples capas), recortados
en teselas para facilitar su recuperación. Son equivalentes a las teselas raster tradicionales (WMTS, TMS) pero retornan
datos vectoriales en lugar de una imagen.
Cada conjunto de teselas vectoriales tiene su propio esquema. Un esquema consiste en nombres de capas, atributos,
selección de elementos, etc.
No existe un esquema que sirva para todo. Existen varios esquemas como por ejemplo: OpenMapTiles, Mapbox Streets, etc.
Warning Las teselas vectoriales no son un formato de datos vectoriales estilo Shapefile, GeoJSON, etc. pensado para trabajar (hacer
análisis, explotación de datos, etc.) sino que está pensado y enfocado principalmente en la visualización.
17. Teselas vectoriales - Cómo están hechas por dentro
Las geometrías y los atributos se codifican como datos binarios de
Google Protobuf (PBF).
Codificar geometrías
Para codificar información geográfica en una tesela vectorial, una
herramienta debe convertir las coordenadas geográficas, como la
latitud y la longitud, en coordenadas vectoriales de cuadrículas. Las
teselas de vectoriales no tienen ningún concepto de información
geográfica. Codifican puntos, líneas y polígonos como pares x/y
relativos a la esquina superior izquierda de la cuadrícula de forma
descendente.
Las geometrías son transformadas a una sola tesela, con un
sistema de coordenadas de píxel local, que por defecto va de la
esquina superior izquierda (0,0) a la esquina inferior derecha
(4096,4096).
18. Teselas vectoriales - Cómo están hechas por dentro
Codificar atributos
Los atributos se codifican como un conjunto único de claves (algo
así como un esquema de campos de capa) y la lista de sus
valores.
Los atributos están codificados en una serie de etiquetas que
existen dentro de un elemento en el vector que tienen valores
enteros que hacen referencia a las claves y los valores que
provienen de la geometría. Esto elimina la redundancia de los
atributos para geometrías que tienen las mismas claves y valores
similares.
25. Teselas vectoriales - Como servirlas datos “estáticos”
.osm.pbf Tilemaker
Studio
Classic
(desktop)
Studio
(web)
2.3 +
http://xxxxxx/{z}/{x}/{y}.pbf
26. Teselas vectoriales - Como servirlas datos “dinámicos”
Tegola
T-Rex http://xxxxxx/{z}/{x}/{y}.pbf
Ex. proxy
Node js
ST_AsMVT
Martin
27. Teselas vectoriales - aspectos prácticos
● No existe un “getCapabilities” ó similar. Hay servidores que tienen una página donde se pueden ver
los datos. Ej. tileserver-gl
● Al ser un formato vectorial y estándar se puede procesar y obtener la información de las capas,
elementos, etc.
● Capas no visibles por el control de escala.
● No existe un esquema que sirva para todo por lo tanto es recomendable publicar el esquema de los
datos.
● Difícil conocer el esquema de los datos (si no está publicado) para poder hacer un “buen mapa”.
● Hay esquemas públicos (Ej. OpenMapTiles) que se pueden usar como referencia a la hora de
publicar los datos.
● Estilos complejos para hacer un “buen mapa”.
● Etiquetas desaparecen por colisiones de etiquetas. https://blog.mapbox.com/whoops-whered-my-label-go-9aa58db2996
28. Resumen
● El WMS es una tecnología de casi 20 años
● Es importante entender el getCapabilities
● WMS no fué pensado para servicios teselados
● En nuevos proyectos utilizar Vector Tiles (aplicaciones con WebGL)
● En aplicaciones WebGL se puede combinar Vector Tiles con WMS
● Las teselas vectoriales no son un formato de datos que está pensado y
enfocado principalmente en la visualización.
● El proceso de publicar datos en Vector Tiles es similar al de WMS
● Publicar datos en Vector Tiles cuesta lo mismo o menos que en WMS
● Vector Tiles ofrece mucha más libertad de uso en el lado cliente
29. Enlaces de interés
Tutorial rápido Vector Tiles https://geoinquiets.github.io/vt-hackato-atm/
Tutorial avanzado Vector Tiles https://geoinquiets.github.io/taller-vt/
Ejemplos, estilos y datos Vector Tiles https://openicgc.github.io/
Especificación de Vector Tiles (Mapbox) https://docs.mapbox.com/vector-tiles/specification/
Especificación de estilo de Vector Tiles (Mapbox) https://docs.mapbox.com/mapbox-gl-js/style-spec/
Librería para trabajar con Vector Tiles (Mapbox) https://docs.mapbox.com/mapbox-gl-js/api/
Herramientas y recursos https://github.com/mapbox/awesome-vector-tiles