lunes, 25 de febrero de 2019

Caso práctico SASPlanet: añadir capas o mapas WMS.

Algunos amigos del blog me comentan que les gustaría tener alguna capa en SASPlanet que contuviera las curvas de nivel de España, de forma que la pudieran superponer fácilmente sobre ortofotos o cualquier mapa que carezca de ellas. En nuestro lote del programa se incluyen algunas capas de relieve pero lo cierto es que ninguna nos parece demasiado convincente... Así pues nos hemos dicho que esta es una buena excusa para explicar con todo detalle el proceso para hacerlo. Vamos allá.

Lo primero que necesitamos es un servicio web que ofrezca lo que buscamos. Y lo encontramos en el WMS del SCN que lleva por título Modelos Digitales de Elevaciones de España. Aunque en su archivo de capacidades tenemos toda la información (sobre la que volveremos más adelante), abrimos el servicio en QGIS para una descripción de su contenido mucho más amable.

La descripción del servicio nos deja muy claro que contiene lo que buscamos, y además ya nos informa que la equidistancia de las curvas es de 50 metros. El servicio contiene también otros elementos en distintas capas: puntos acotados y mapas de pendientes, orientaciones, sombreado y relieve. La URL de este WMS es http://servicios.idee.es/wms-inspire/mdt

Debemos ahora por tanto configurar el archivo necesario para que SASPlanet sea capaz de visualizarlo. Aunque ya explicamos en su día los conceptos básicos para agregar fuentes de mapas al programa, repasamos rápidamente sobre la marcha.
Aunque desde programas como QGIS disponemos de toda la información del servicio cómodamente en agradables ventanas...
... cabe la posibilidad de que no uséis software de este tipo, por lo que vamos a hacerlo con el método infalible que no tiene necesidad de ningún programa alternativo. Todo servicio WMS dispone de un archivo de capacidades que puede invocarse a partir de su URL. Para ello generalmente debemos añadir la expresión ?SERVICE=WMS&REQUEST=GetCapabilities a su dirección URL.

Añadimos pues esta dirección completa a nuestro navegador de internet:
http://servicios.idee.es/wms-inspire/mdt?service=WMS&request=GetCapabilities
Y nos aparece la página con la estructura XML conteniendo toda la información del servicio:
No os asustéis, algunas de estas páginas tienen miles de líneas pero este WMS es cortito. De entre todo este mogollón de caracteres vamos a ir buscando los que nos interesan descendiendo progresivamente por ella.
Lo primero importante son los formatos de salida que soporta el WMS cuando se le hacen las peticiones (sobre todo los de imagen, ya que lo queremos para SASPlanet)...
Importantes son también los sistemas de coordenadas (CRS) que admite. SASPlanet solamente admite unos pocos y nosotros usamos casi siempre WGS84 cuyo EPSG es el 4326...
En esta parte observamos también el llamado BoundinBox, esto es, el marco espacial que cubre el servicio WMS con sus coordenadas límite por norte, sur, este y oeste.
Llegamos después al listado de capas, fácilmente identificables por la palabra Layer. La primera es la de los puntos acotados y en segundo lugar aparece la que nos interesa:
Las capas tienen dos atributos que vamos a necesitar: el nombre (Name) y el nombre del estilo (Style), marcados en verde en la imagen superior. Así tenemos que el Name operativo de nuestra capa de curvas de nivel es EL.ContourLine y que la capa tiene dos estilos de representación posibles bajo los nombres curvasnivel o EL.ContourLine.Default
Inciso: cada WMS es un mundo... Unos tienen un style marcado en cada capa y otros muchos usan default como parámetro de estilo, o incluso está en blanco. Lo que si es común a todos es que cualquier error en la literalidad al transcribir estos parámetros supone que no podamos visualizar su contenido, por lo que debemos asegurarnos de poner exactamente lo mismo que vemos, tanto en la URL como en los nombres de capa y estilo.
Con esto ya tenemos toda la información que necesitamos del archivo de capacidades del WMS. Ahora es el turno de elaborar el archivo de configuración para SASPlanet. Dicho archivo lleva por nombre params.txt, es un archivo de texto simple perfectamente modificable con cualquier editor de texto (como el bloc de notas de Windows), y se encuentran dentro de una carpeta con extensión .zmp junto con dos archivos más: GetUrlScript.txt y un icono del mapa normalmente llamado 24.bmp (aunque valen otros nombres y formatos). Preparamos el directorio resumido en esta imagen:
Estructura y ruta a nuestra nueva carpeta .zmp (le hemos dado un nombre identificativo como Curvas IGN) de configuración del nuevo mapa (capa), dentro de la carpeta Maps del directorio SASPlanet. La hemos ubicado dentro del directorio SPAIN pues queremos que la nueva capa pertenezca a dicho menú.
Los tres archivos del interior de la carpeta .zmp podéis cogerlos de cualquier otro mapa a modo de plantilla (por ejemplo de otro WMS del IGN como el PNOA), y a partir de ahí procedemos a hacer las modificaciones necesarias en el archivo params.txt de acuerdo con la información que hemos sacado del archivo de capacidades. Nuestro params.txt quedaría así:
Archivo params.txt con todas las modificaciones necesarias para configurar el nuevo servicio WMS. Paso a describir los parámetros más importantes:
  • GUID: se trata de un numero único correspondiente a cada mapa y que no debe repetirse. Podéis modificar algún número del mismo o generar uno nuevo aleatorio desde algunas webs.
  • name_es: el nombre con el que el mapa va a aparecer en nuestro menú de mapas de SASPlanet. Una línea por cada posible idioma del programa (español, inglés, ucraniano).
  • ParentSubmenu_es: categoría del menú dentro de la cual se va a ubicar el mapa. Lo mismo para los tres idiomas.
  • NameInCache: nombre de la carpeta donde van a almacenarse los mosaicos de imágenes.
  • asLayer: define si el mapa va a ser mapa principal (0) o CAPA (1). En este caso ya hemos comentado que las curvas las queremos como capa, así pues ponemos 1 para que el mapa nos aparezca en el menú de capas de SASPlanet.
  • DefURLBase: la dirección URL del servicio WMS, con el signo ? pues forma parte de una expresión completa (petición de mapa GetMap). El parámetro TRANSPARENT alude la posibilidad de que el mapa tenga transparencia, lo que es vital para una capa de curvas (true permite la transparencia, false la niega).
  • LAYERS: el nombre de capa que figura en las capacidades del WMS.
  • STYLES: el estilo de representación del servicio. Nosotros hemos elegido curvasdenivel pero como hemos visto más arriba disponemos de dos opciones que pueden venirnos muy bien dependiendo del mapa de fondo: 

A la izquierda el estilo de nombre curvasnivel y a la derecha el estilo llamado EL.ContourLine.Default 
Uno tiene trazo más fino en las curvas y etiquetado y el otro trazo más grueso sin etiquetas de altitud.
Una vez todo listo salvamos los cambios en el archivo params.txt y arrancamos SASPlanet para confirmar que nuestra nueva capa aparece en el menú de capas del programa y dentro de su grupo:

Y la activamos sobre por ejemplo el Mapa Base del IGN para ver el resultado:

Ya tenemos disponibles las curvas de nivel cada 50 metros de todo el territorio nacional a partir de la escala 1:200.000 (zoom 13 o mayor en SASPlanet). Son de enorme utilidad para muchas cartografías que carecen de ellas, como el mapa estándar OSM:

Un último apunte para terminar. Si queréis aprovechar el mismo archivo .zmp y enriquecerlo con más información, podéis añadir otra de las capas disponibles en este mismo WMS como son los puntos acotados. Recordad que también tenían dos estilos a elegir... Simplemente añadimos el nombre de la nueva layer y del nuevo estilo en su capítulo correspondiente separados por comas, tal que así:
De esta forma podéis añadir varias capas de un mismo WMS en un mismo archivo, teniendo siempre en cuenta si se prestan a ello por contenido, transparencia, orden de visualización, etc...

Notas:
1.- El archivo params.txt tiene otros muchos parámetros (formato de imagen, tiempo de espera en el servidor, sistema de coordenadas, color de fondo, bounding box, etc...) que podrían ser importantes a la hora de configurarlo.
2.- No todos los WMS son tan sencillos y bien estructurados como este ejemplo. En ocasiones somos incapaces de hacerlos funcionar en SASPlanet, por incompatibilidad de proyección, del mismo servicio, o simplemente por insuficientes conocimientos.
3.- Explicado queda para los restos lo más importante de lo que sabemos a la hora de añadir mapas o capas a SASPlanet... Suerte!!

8 comentarios:

  1. Muchas gracias por el aporte.
    Me parece muy interesante y, como siempre, perfectamente explicado.
    Lo he probado y funciona de maravilla.
    No obstante, las curvas de nivel sobre ortofotos no destacan apenas.
    ¿Hay alguna forma de aumentar la transparencia de las ortofotos para resaltar las curvas?
    (O hacer más oscuras las curvas para contrastar con la foto).
    Muchas gracias

    ResponderEliminar
    Respuestas
    1. Así es, sobre ortofotos la verdad que no se ven muy allá (ni aunque sea el estilo con el trazo más grueso). Hasta donde yo se en SASPlanet me temo que no, ni siquiera con los dos parámetros básicos de procesado de imagen que trae el programa en sus opciones (gamma y contraste), ya que afectan a todos los mapas/capas en pantalla. Saludos y gracias.

      Eliminar
  2. ESTOY TENIENDO UN ERROR EN SAS PLANET CUANDO HAGO EL PARAMETRO ME PONE ...
    ERROR UNEXPECTED CONTENT TYPE/XML;CHARSET=UTF-8 ....qué es ???
    ESPERO Q ME AYUDES GRACIAS

    ResponderEliminar
  3. Hola! He seguido los pasos del Blog para añadir un WMS que funciona correctamente en QGis pero al intentar añadirlo como capa en SAS.Planet aparece el siguiente mensaje de error en las teselas:

    "Parameter 'width' can not be empty
    Parameter 'height' can not be empty"

    ¿Alguna idea?

    ResponderEliminar
  4. Hola, las Curvas de nivel de España(Modelo Digital de Elevaciones de España) es ahora WMTS, y el archivo de capacidades es algo distinto(las etiquetas),para params.txt vale la misma estructura?
    Muchas Gracias
    Un saludo

    ResponderEliminar
    Respuestas
    1. No entiendo muy bien... Las curvas de nivel siguen estando en el siguiente WMS: https://servicios.idee.es/wms-inspire/mdt?request=GetCapabilities&service=WMS
      No se a qué servicio WMTS te refieres, si lo pones le damos un vistazo (aunque los WMTS en SASPlanet no se me dan muy bien...). Saludos.

      Eliminar
  5. Discúlpame, es que en el geoportal IDEE existen 2 servicios: Modelos Digitales del Terreno(WMS) y Modelo Digital de Elevaciones de España(WMTS), el WMS no lo encontraba, pero ya lo he visto y funciona perfectamente.
    Muchas gracias por el gran trabajo que hacéis.
    Saludos

    ResponderEliminar
    Respuestas
    1. Así es, creo que el WMTS no tiene curvas de nivel, solo un MDT25 y su sombreado. Saludos!

      Eliminar