lunes, 18 de septiembre de 2017

Mapas TMS en QGIS: OpenTopoMap.

Los mapas online son una forma de acceder a diversa cartografía muy cotidiana en nuestros días. A través de servicios alojados en servidores es posible visualizar y/o descargar cualquier mapa que alguien haya tenido a bien publicar. Los servicios de visualización WMS/WMTS o de descarga WFS son ya conocidos y hemos tratado sobre ellos en muchos artículos, además de ser la base para obtener mapas y datos de forma remota, de forma que es habitual que se encuentren integrados en los principales softwares para el manejo de información geográfica.
Los mapas TMS (Tile Map Service) que hoy nos ocupan son otra variante de estos servicios que permiten el acceso online a imágenes remotas. Por decirlo de forma rápida, un servidor que aloja teselas o mosaicos (tiles) de un mapa puede ser llamado por el usuario en forma de peticiones a través de las aplicaciones apropiadas para ser visualizado directamente en su dispositivo.
En este artículo vamos a usar unos de esos servidores (OpenTopoMap) y hacerle nuestra petición de imágenes a través de nuestra aplicación (QGIS). En las últimas versiones del programa (a partir de la 2.18) está tarea se ha facilitado enormemente pues se ha implementado de manera nativa la posibilidad de leer mapas TMS.

En la propia web de OpenTopoMap encontramos lo primero que necesitamos:
OpenTopoMap nos ofrece la dirección URL a través de la que podemos acceder a los mosaicos de  sus imágenes:

{a|b|c}.tile.opentopomap.org/{z}/{x}/{y}.png
  • Las tres letras (a b c) corresponden a los tres servidores disponibles para acceder a las teselas, de forma que al hacer nuestra petición debemos escoger uno de ellos.
  • La letra Z corresponde al zoom o escala al que vamos a hacer la petición, ya que todos estos mapas online normalmente contienen varios niveles en los que las imágenes son diferentes y van variando según el nivel de detalle que se requiera.
  • Y las letras X e Y se corresponden a la longitud y latitud de la tesela individual según la numeración que haya establecido el propio servidor.
Tras esta explicación muy básica podemos probar con la siguiente petición:
https://a.tile.opentopomap.org/14/8695/5583.png
Hemos elegido el servidor a, el nivel de zoom 14, y la tesela de coordenadas x=8695 e y=5583. Si introducimos esta dirección en nuestro navegador de internet obtenemos el mosaico:
El navegador nos devuelve una imagen en formato png, normalmente de 256x256 pixels de tamaño, de la zona correspondiente a las coordenadas x-y introducidas y con la escala correspondiente al nivel de zoom elegido.
Por tanto, un simple cambio añadiendo un número más a la cifra de la X nos devolverá la tesela contigua:

Baste esta breve y ruda explicación para tener un concepto básico del funcionamiento de los Tile Map Service y vamos ahora con la segunda parte del artículo: cargar mapas TMS en QGIS. El programa tiene el acceso a la herramienta en el panel del explorador (cuadrado verde en la imagen):
En la columna izquierda tenemos el panel de capas o el panel del explorador, dependiendo la pestaña activa (en rojo). Si no os aparece podéis hacer click derecho sobre la barra de botones superior y se os abrirá el selector de paneles para activarlo (en amarillo).
Evidentemente las peticiones individuales de mosaicos que hemos visto más arriba no tienen ninguna utilidad a la hora de querer visualizar amplias vistas de mapas, ni tendrían la agilidad necesaria para moverse ni trabajar. Por ello la dirección que se utiliza para configurar el servicio es la siguiente:
http://c.tile.opentopomap.org/{z}/{x}/{y}.png
Sin peticiones individuales, sino con la fórmula genérica que nos permita acceder de manera automática a todos los mosaicos del mapa. Recordad que tenemos tres servidores disponibles (a b c) que podéis ir probando en caso de que alguno de ellos no os diera buen resultado.
Hacemos click derecho sobre Tile Server (XYZ) y pulsamos New Connection... Introducimos la dirección en la nueva ventana y le damos un nombre al mapa en la siguiente. Aceptamos.
La conexión al mapa queda hecha y disponible en el árbol de conexiones de nuestro panel del explorador. Click derecho para opciones y con Añadir capa el mapa se carga en pantalla y se añade a nuestro panel de capas.

Nota: el mapa se nos ha mostrado un tanto errático y remolón refrescando la caché de imágenes cuando nos desplazamos o hacemos zoom, de forma que deja en blanco áreas que ha mostrado en una vista anterior y nos obliga a volver a mover el mapa para reconectar. Me ha pasado con los tres servidores por lo que deduzco que es cosa del propio mapa, ya que con otras cartografías no nos pasa, por lo que no parece problema de QGIS.

Aunque las "principales" cartografías ya están implementadas en diversos complementos de QGIS como QuickMapServices u OpenLayers, ahí os dejo unas cuantas direcciones de ejemplo para que podáis probar y añadirlas en el visor nativo de QGIS (testadas y funcionando). Saludos.
bergfex_osm: http://maps.bergfex.at/osm/standard/{z}/{x}/{y}.jpg

ESRI ArcGis standard
https://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/{z}/{y}/{x}

Google Terrain
https://mt1.google.com/vt/lyrs=p&x={x}&y={y}&z={z}

opnvkarte: http://tileserver.memomaps.de/tilegen/{z}/{x}/{y}.png

Strava cycling: http://globalheat.strava.com/tiles/cycling/color1/{z}/{x}/{y}.png  
sobre Google SAT: http://www.google.cn/maps/vt?lyrs=s@189&gl=cn&x={x}&y={y}&z={z}

18 comentarios:

  1. Alguien podra ayudarme con esta duda? (aclaro que soy usuario novel de Qgis)
    Necesito visualizar estos mapas en Qgis:
    http://www.mapaeolicobsas.org.ar/eolico/?u=miguelfuchs@gmail.com&s=1f67db78cbd5a2b64b4c27aff00712e2&p=3df76b634166d4b854ae5dd97f39030f
    y no logro hacerlo con la metodologia propuesta.
    Agradecere cualquier ayuda que me puedan brindar

    ResponderEliminar
    Respuestas
    1. Ciertamente esa URL es muy extraña amigo Miguel, no parece para nada un mapa TMS ni siquiera un WMS o similar... Es más lleva a un lugar de acceso privado con user y password. Comprueba la dirección o dame más info de como ver los mapas para ver si se `pueden abrir en QGIS. Saludos.

      Eliminar
  2. Javier, ante todo gracias por tu respuesta. Y efectivamente, se trata de una en la que es necesario estar registrado para poder ingresar y asi acceder al mapa, la pagina de ingreso es: http://www.mapaeolicobsas.org.ar/
    Si me dejas tu correo electronico puedo enviarte algunas capturas de pantalla de los mapas

    ResponderEliminar
    Respuestas
    1. Claro, sin problema... Puedes enviarlas a machorril@gmail.com
      Aunque la verdad no se cómo voy a poder preparar el poder ver los mapas en QGIS a partir de unas capturas de pantalla...

      Eliminar
  3. Hola Javier,

    Estoy un poco enganchado con este tema pero estoy bloqueado.

    Te cuento, me encanta el mapa que se visualiza en Strava y me gustaría verlo en QMapShak. Enredando he dado con Mapbox, que es donde se aloja este mapa. Me he registrado y me encuentro con todas las herramientas necesarias (URL, codigos de texto...) para instalarlo en QGIS o diferentes plataformas: iOs, Android, ... También tienen una herramienta que permite crear tu propio "TYP" y modificar las capas a tu gusto. (esto es lo próximo). Mi pregunta es, con todo esto, ¿como puedo llegar a ver este mapa en QMapShak? No se cual es el paso para crear el archivo .tms. He tratado de modificar el tms de OSM CycleMap cambiando la URL por el que me proporciona Mapbox, carga pero no se ve nada.

    A ver si me puedes decir cual es el proceso correcto.
    Gracias!!!

    ResponderEliminar
    Respuestas
    1. Solucionado!! He seguido insistiendo en el código del archivo .tms y lo he sacado! Y parece que he conseguido un formato estable para cualquier mapa OSM.

      Ahora tengo que ver como conseguir que me salga la capa de cimas, no se ven en QMapShack como se ven en Strava. No aparecen.

      Saludos y gracias!

      Eliminar
    2. Genial pues! Yo no uso QMS así pues desconozco la estructura de su archivo de texto para visualizar los TMS (suelen ser similares pero cada programa tiene una). Saludos!

      Eliminar
  4. buenas tardes Javier, me ocurre igual que cuando intento hacer zoom en el qgis ya se queda en blanco el mapa...De todas formas no sabras como hacer para poder abrirlo en global mapper que lo uso mucho mas? gracias y tienes un blog fantastico que me ayuda en muchos mapas que hago. un saludo

    ResponderEliminar
    Respuestas
    1. Hola! La visibilidad de este mapa ha mejorado mucho en QGIS, yo en las últimas versiones lo veo perfectamente. En Global Mapper, al menos en la versión 20, está incluido por defecto en las conexiones online que trae el programa, dentro del apartado WORLDWIDE DATA. Si no lo tuvieras puedes agregarlo como servicio TMS partiendo de las URL que se mencionan en este artículo.

      Eliminar
    2. Veo que has borrado un comentario... la exportación de un JPEG desde un servicio web en Global mapper depende mucho del parámetro resolución. Si no lo configuras te saldrá todo a resolución máxima, lo que tratándose de un TMS será una locura y te saldrán los elementos muy pequeños y a una resolución tal que para distinguir algo hay que hacer muchísimo zoom. Ahí está el quid de la cuestión y siempre es posible exportar elmapa como lo ves en pantalla buscando ese equilibrio, pero si dices que has probado de varias formas y nada poco más te puedo aportar. Saludos.

      Eliminar
  5. Buenas tardes lo he borrado porque queria explicarlo mejor. He probado con sas planet, qgis y global mapper y efectivamente no encuentro ese equilibrio para exportar la imagen que veo en la aplicacion. He probado con geotiff, ecw y jpeg y no consigo ver esa imagen. El zoom que me interesa es el 17 para luego usarlo como mapa base, raster, en un programa de diseño de mapas. Pero hay tantas variables que me resulta imposible dar con ls forma correcta de exportación. De todas formas te agradezco mucho el comentario y si consigo hacerlo posible lo publicare con tu permiso. Gracias

    ResponderEliminar
  6. Buenos días..pues he conseguido al menos igualar el color de la pantalla con la imagen de descarga en jpg o geotiff, la proyección que funciona bien en ni caso es utm 29n y etrs89. Genera un archivo de imagen con ka combinacion de colores buena, pero la resolución todavía no la consigo. Al hacer zoom la imagen sale pixelada y no consigo aumentar esa resolución ni con jpg ni geotiff...probé varias opciones pero no doy con la correcta. Modifico los valores x e y que vienen por defecto en 0,59 y pruebo entre 2,20 y 2,60 pero aún me falta calidad en la resolución para conseguir un mapa base con calidad.... Si alguien me pudiera orientar se lo agradecería. Un saludo

    ResponderEliminar
    Respuestas
    1. Yo es que sinceramente no entiendo nada... y menos que la proyección tenga algo que ver con los colores que se obtienen. OpenTopoMap es un mapa web multicapa, que a diferentes resoluciones ofrece diferentes teselas con diferentes elementos. A 1 metros de resolución obtienes un tipo de imagen y a 3 metros otra imagen distinta, eso es así de origen y no lo puedes cambiar. Obviamente cuando a una imagen sacada a 3 metros le haces zoom y sobrepasas su tamaño 100% real pues pixela. Y para que no pixele hay que ampliar resolución con lo que el server ya ofrece otra imagen. Lo primero que debes decidir es qué nivel de resolución de los que ofrece OpenTopoMap va bien para ese mapa base que quieres, porque cabe la posibilidad de que ninguno le vaya bien al que buscas (unos por ser los elementos demasiado grandes en pantalla, otros por ser demasiado pequeños). Dices que el 17 te va bien (entiendo que te refieres a SASPlanet que es el único de los programas citados que numera los niveles de zoom), eso equivale a una resolución de 2,389 metros en MERCATOR Google. Saludos.

      Eliminar
  7. Buenas tardes y disculpa si te he molestado porque estoy atascado y no avanzo... Entiendo lo que dices que a un zoom sale una imagen y a otro zoom una imagen distinta. El porqué con una proyeccion me sale distinto que con otra no lo se pero es un tema que doy por zanjado.. Yo veo una imagen que es la que me interesa descargar, si hago zoom y amplio la resolución correcto que me sale una imagen distinta. Lo que no se como hacer es con la imagen que veo, que en sas planet tiene un zoom de 17, que resolución debería de darle para que no me salte a otra tesela. No se si me explico.. Es algo que debería ir probando hasta acertar o como puedo hacer? Si entro en la web de opentopomap veo la imagen que me gusta, si hago mas zoom pasa a otra imagen distinta, pues bien la que elijo como puedo saber hasta que resolución puedo llegar para tener la mejor calidad sin que ne salte s la siguiente tesela. Gracias de nuevo y disculpa

    ResponderEliminar
    Respuestas
    1. No es ninguna molestia hombre... En SASPlanet no hay nada que pros la que vas a exportar si seleccionas ese zoom. En Global Mapper es donde como sabes podemos elegir la resolución de exportación. Efectivamente lo mejor es que selecciones una zona pequeña y la exportes a diferentes resoluciones (en ECW por ejemplo o el formato que quieras). Luego comprueba cada archivo y ya decides si la que te gusta es 3.2, 2.4 o 4.5.
      Otra cosa: OpenTopoMap tiene bastante capado el acceso masivo a sus teselas, sobre todo en los zooms altos, así que puede ser que si la zona e smuy amplia necesites mucha paciencia. Saludos.

      Eliminar
  8. Buenos días probe con varias resoluciones y no se consigue un raster de calidad con ese zoom. Descargue los archivos Img y voy a probar directamente con ellos. Global mapper creo que no abre esos archivos no? Probare tambien con gpsmapedit a ver si los paso a ecw o en mapper con los mbtiles a ver si consigo un raster de calidad. Un saludo

    ResponderEliminar
    Respuestas
    1. Pues mucha suerte, pero rasterizar el vectorial teniéndolo ya rasterizado es salir de un jardín pequeñito para meterse en un jardín muuucho más grande. Saludos.

      Eliminar
  9. Lo se...ya ire contando. Saludos

    ResponderEliminar