Uso de la consola de Python para preparar mapas sin conexión desde WMS (tile downloader)

El estudio explica cómo preparar mapas fuera de línea a partir de WMS/WFS o cualquier mapa cargado en la vista de mapa QGIS descargando teselas con la ayuda de un script en la consola python. El script también genera un mosaico de todas las teselas for uso posterior.

El acceso a mapas ráster/vectoriales a través del servicio del Servicio de Mapas Web (WMS) es muy común y eficiente. Tiene varias ventajas como seguridad, estilos de mapas centralizados y flexibles. Ejemplo de ello son los mapas de Google, Yahoo, Bing, MODIS, Landsat, mapas publicados por la NASA, NRSC (India). La desventaja/limitación de WMS es que funciona a través de Internet o intranet. Puede que no siempre sea posible obtener conexión a Internet, especialmente en el campo durante el levantamiento o encuesta. Además, WMS funciona de forma lenta, en comparación con cualquier formato de imagen sin conexión, como GeoTiff, jpg, img, etc.

El uso de QGIS

QGIS provee una herramienta para concectarse/acceder cualquier servicio WMS. La conexión WMS se basa en una simple URL y una vez que la conexión se ha establecido, el mapa se puede ver en la vista del mapa. Si guardamos el mapa, con la extensión visible en la vista del mapa, como jpg (File > Save as Image) se crea un archivo de coordenadas globales el cual tiene la información de coordenadas geográficas de la region en particular. Por ejemplo, sample.jpg es el mapa y sample.jpgw tiene las coordenadas. Esto significa que la imagen descargada esta georeferenciada. Podemos descargas teselas en formato grid manualmente y usarlas luego sin conexión. La descarga manual es posible si el área es muy pequeña o si las imágenes son de baja resolución.

QGIS with WMS tiles

QGIS con tiles WMS

Consola Python

Se ha escrito una secuencia de comandos corta para la “Consola de Python” con ayuda disponible en el sitio web oficial de QGIS en el PyQGIS Developer Cookbok. La secuencia de comandos consta básicamente de 4 componentes de la siguiente manera,

  1. Coordenada X, Y (superior izquierda e inferior derecha) del primer tile
  2. Tamaño del tile para ser descargado (ejemplo 0.001 X 0.001 grados)
  3. Número de tiles para descargar (calculado con base en la extensión completa del mapa y el tamaño del tile)
  4. Directorio de salida para almacenar las tejas/archivos de salida

La secuencia de comandos funciona en dos simples bucles los cuales definen primero la extensión del mapa en la vista de mapa de QGIS y ejecutan filas/columnas. Una vez que se establece la extensión del mapa, el mapa se carga en QGIS. El retraso de 3 segundos (depende de la conexión a Internet) se introdujo antes de guardar el mapa como jpg en el directorio definido por el usuario. Una vez que se ejecuta la secuencia de comandos, todas las teselas creadas en el directorio se pueden cargar directamente en QGIS o se prepara el mosaico único desde Ráster> Miscelánea> Combinar o Construir Ráster Virtual (Catálogo). Ambas herramientas generan mosaico, pero la diferencia básica es que Combinar crea una imagen independiente de los mosaicos, mientras que el ráster virtual genera un enlace en todos los mosaicos individuales (se requieren teselas).

Python script and directory where tiles are stored

El script de python y el directorio donde los tiles son almacenados

El método tiene la limitación de que los cambios en el mapa en el servidor no se reflejarán fuera de línea ( en el mapa descargado). En este caso, el usuario tendrá que repetir el proceso y generar un nuevo mapa sin conexión. La segunda limitación es que el mapa sin conexión creado será en formato de imagen; no se puede utilizar para mapeo temático o clasificación de imágenes. Con algunos esfuerzos adicionales, algunos mapas de usos del territorio se pueden convertir en vectoriales con cierta pérdida de datos.

Alcance

El mosaico generado es una imagen pura incluso si se descarga de un mapa temático (7-8 colores). Usando una herramienta avanzada como la reclasificación o el apilamiento de capas/bandas, este ráster puede convertirse en un vectorial de polígonos. WMS tiene varias peticiones, como getcapabilities, getmap, getfeatureinfo, etc. Usando getfeatureinfo se puede recuperar la información de atributos para cada polígono. La secuencia de comandos se puede convertir en un complemento de modo que cualquier persona sin conocimientos de scripting pueda utilizarla.

Conclusión

Las siguientes experiencias muestran como QGIS pueden ser usadas a cualquier nivel. Con aptitudes básicas de programación se pueden escribir pequeñas rutinas o complementos para ahorrar tiempo y mejorar la calidad de trabajo. Dentro de QGIS, es posible acceder al repositorio de complementos desarrollados en todo el mundo. El PyQGIS Developer Cookbook (En Inglés) es un excelente recurso para escribir rutinas y con las herramientas de GDAL ahora es mucho más fácil procesar datos ráster.

Autores

Este artículo fue aportado en mayo de 2014 por Prashant Kadgi, radicado en Pune (India) y quien trabaja actualmente como consultor en GIS APP Consultancy Services. Desde 2009, utiliza GIS & RS en proyectos de desarrollo de software, gestión de recursos naturales, silvicultura, gobierno electrónico, en diferentes regiones de la India y el mundo.