Publicar un servicio de teselas de mapas con QMetaTiles y GitHub

Para realizar una publicación de un servicio WMTS usando simplemente el almacenamiento estático en un servidor Web, es necesario utilizar una serie de herramientas que permiten, en primera medida generar las teselas o baldosas de imágenes y segundo una herramienta que nos permita generar el archivo XML.. Para el primer caso, se va hacer uso de las siguientes extensiones o complementos de QGIS.


Nota: Este documento hace parte del material de guías de talleres del curso de Servicios Web Geográficos de la Maestría en Geomática de la Universidad Nacional de Colombia Sede Bogotá, mayor información en http://www.aulageo.cloud/course/unal-ogc-2017/

1. IDENTIFICACIÓN DE LAS ESCALAS DE TESELAS CON EL COMPLEMENTO DE QGIS DE TILELAYER.

Una vez instalados los complementos de QGIS, se procede a cargar el proyecto de Laguna de Tota, recuerde que el sistema por defecto de este proyecto debe ser EPSG:3857 o Web Mercator, ya que las herramientas a utilizar sólo son compatibles con este sistema de referencia de coordenadas. Una vez el proyecto es desplegado, se procede a cargar el esquema de matrices de teselas desde el menú Web → TileLayer Plugin → Add TileLayer …, en este caso para el servicio WMTS es el esquema XYZFrame.

TileLayer Plugin

El esquema se representa con una nueva capa de nombre XYZFrame, y permite identificar cual es rango mínimo y máximo de zoom, así cómo el número e índice de las teselas. Para el siguiente caso, el zoom mínimo que permite el almacenamiento de nuestra zona de estudio en una tesela en 13, y el índice de origen en la matriz de teselas es 2434,3967.

2. GENERACIÓN DEL CONJUNTO DE MATRICES DE TESELAS COMPATIBLES CON GOOGLE CON EL COMPLEMENTO DE QGIS QMETATILES.

Una vez identificado los niveles de zoom o escalas de las matrices, se procede a generarlas las teselas con el complemento QMetaTiles disponible en la ruta del menú Complementos → QMetaTiles → QMetaTiles.

Los parámetros solicitados por esta herramienta son los que se muestran en la siguiente imagen.

QMetaTiles

  • Output: La ruta del directorio en el cual va a crear las teselas. Recomendable usar, si esta usando el servidor de GeoTux Server, la ruta que corresponda al punto de montaje /gisdata/tiles
  • Tileset name: hace referencia al nombre del proyecto o conjunto de matriz de teselas, en este caso “z11to17”.
  • Extent: Hace referencia a la extensión geográfica de la generación de teselas, para este caso use una capa para restringir la extensión geográfica para la generación de teselas.
  • Zoom: son los niveles de zoom para generar el conjunto de matrices de teselas, para este caso se ha identificado anteriormente un conjunto de matrices de teselas de 11 a 17.
Nota 1: Recuerde deshabilitar la capa XYZFrame en el momento de generar las teselas, recuerde que se genera la salida con el despliegue actual en el lienzo e QGIS.
Nota 2: Se recomienda realizar la generación de teselas por lotes, es decir por rangos. Generalmente, nivel de zoom de 11 a 15, posteriormente de 15 al 16 y luego de 16 al 17.
  • Metatiling: use esquema de 4×4 para generar metateselas para corregir duplicidad de etiquetas.

  • Tile width*:se recomienda usar el tamaño de teselas de 256×256 píxeles.

  • Format: formato de la imagen, en este caso png.

Nota 3: En este caso se usa el formato PNG para y use las opciones de compresión de imagen en un 70%. Recuerde que el formato JPEG no soporta transparencia.
  • Opciones adicional: habilite otras opciones como se muestra en la imagen anterior para generar un visor con a librería de Leaflet.

3. CREAR REPOSITORIO EN GITHUB Y SUBIR EL CONJUNTO DE MATRICES DE TESELAS.

GitHub es un servicio de almacenamiento y sistema de control de código fuente. Es posible con esta plataforma publicar sitios de archivos estáticos, en este caso del servicio generado del WMTS, no requiere de ningún servidor de mapas para lograr la publicación.

Crear el repositorio en Github

Una vez se de alta en el sistema de GitHub, es necesario crear el repositorio, como se muestra en la imagen:

GitHub repositorio

Realice la configuración del repositorio con un nombre y descripción. En el caso de una cuenta gratuita, todos los repositorios publicados son de acceso público.

GitHub repositorio

Subir el conjunto de matrices de teselas en GitHub

Para crear, subir y administrar archivos en el repositorio puede usar los comandos del sistema de control de versiones de GIT o el software de GitHub Desktop.

GitHub repositorio

Para el caso de no contar con las herramientas anteriores, puede empezar agregando un archivo index.html, haciendo clic sobre el enlace de README.

GitHub README

Cambie el nombre de README.mdindex.html, ingrese el texto a desplegar en la página del indice y luego haga clic en el botón Commit new file.

GitHub README

Una vez creado el archivo index.html, podemos subir el conjunto de matrices de teselas, usando el botón Upload files. Este método está restringido sólo a subir a 100 archivos, así que debe recrear las carpetas en el sistemas. En el caso del archivo html creado con QMetatiles se renombró a visor.html.

Configuración del hospedaje de archivos estáticos en GitHub

Es importante que exista un archivo index.html en el repositorio, esto permite la configuración del sitio de forma estático.

Para realizar la configuración simplemente ingrese a la opción Settings del repositorio.

GitHub Settings

Luego realice la configuración de hospedaje de archivos estáticos en la sección de GitHub Pages, configure la opción de fuente como master branch y luego haga clic en el botón guardar. Luego provee el enlace Web del sitio configurado, y debe desplegar el contenido de index.htmlvisor.html.

GitHub Pages

Servicio de teselas en esquema XYZ y visor de mapas

Para acceder al servicio en el esquema de teselas XYZ en la últimas versiones de QGIS 2.18.x, use el siguiente enlace Web:

En el caso del visor de mapas es necesario realizar algunos cambios, en el código fuente. Esto se puede realizar directamente desde GitHub. En este caso sólo se realiza la modificación de rutas absolutas a rutas relativas, en la línea 62.

 L62. var mytile =L.tileLayer('z11to17/{z}/{x}/{y}.png' {

El despliegue de las teselas en Visor de mapas se encuentra en el siguiente enlace Web:

4. GENERACIÓN DEL DOCUMENTO DE CARACTERÍSTICAS O CAPACIDADES CON LA LIBRERÍA DE XYZ2WMTS.

Finalmente para generar el documento e capacidades o documento XML del servicio WMTS, se hace uso de la herramienta o librería desarrollada en Python denominada XYZ2WMTS, es decir, pasar de un esquema de teselas XYZ a WMTS.

https://github.com/minorua/xyz2wmts

Para la descarga del software, haga clic en el botón Download ZIP y descomprima el archivo.

Configuración de capacidades del servicio WMTS

Antes de ejecutar cualquier comando, es necesario editar el archivo de nombre settings.py de la librería xyz2wmts.

Nota 4: Tenga en cuanta no ingresar en este script de Python ni tildes, ni acentos o caracteres especiales, ya que genera un error.

 #!/usr/bin/env python
# -*- coding: utf-8 -*-

# ================================
#            Settings
# ================================

# WMTS metadata URL
metadataURL = "https://samtux.github.io/lagunatota_wmts/wmts/1.0.0/WMTSCapabilities.xml"

# WMTS
service = {"Title": "Servicio WMTS de Laguna de Tota (Colombia)",
           "Abstract": {"en": "Servicio WMTS de Laguna de Tota (Colombia)"},
           "Keywords": ["colombia", "boyaca", "wmts"],
           "Fees": "Ninguna",                      # NONE if no fees or terms
           "AccessConstraints": "No se permite la descarga masiva"}         # NONE if no constraint


# WMTS provider
provider = {"Name": "Samuel Mesa",
            "SiteURL": "https://samtux.github.io/lagunatota_wmts/index.html"}

layers = []

# TODO: remove the following and write your own definitions

layers.append({"identifier": u"topografico",
               "title": u"Mapa base de Laguna de Tota",
               "abstract": u"Mapa base de Laguna de Tota",
               "templateUrl": "https://samtux.github.io/lagunatota_wmts/z11to17/{z}/{x}/{y}.png",
               "zmin": 11, "zmax": 17, "bbox": [-73.02715,5.46717,-72.80744,5.63417]})

Observe que los cambios refieren a las rutas donde se encuentra el conjunto de matrices de teselas, en este caso corresponde a la carpeta de nombre z11to17. También se realiza la configuración de metadatos del servicio, así como las capacidades de despliegue de la capa base, es este caso de nombre topografico. Se especifica los niveles de zoom y extensión geográfica.

Generar el documento WMTSCapabilities.xml

Usando la configuración anterior del archivo settins.py, se realiza la generación del documento XML como parte de la codificación RESTful, WMTSCapabilities.xml, la versión de Python es 2.7.x.

python xyz2wmts.py > WMTSCapabilities.xml

Se genera un documento de nombre WMTSCapabilities.xml en la carpeta de la librería xyz2wmts. Este archivo se copia en la ruta, en la serie de carpeta wmts/1.0.0/WMTSCapabilities.xml en el repositorio de GitHub.

Pruebe finalmente hacer la carga del servicio y de las capas desde ArcGIS Desktop o QGIS Desktop. Con la siguiente URL en codificación RESTful: