11.2. Lesson: Servicio WMS

Los datos utilizados para este ejercicio están disponibles en el subdirectorio qgis-server-tutorial-data del training data que descargó. Por conveniencia y para evitar posibles problemas de permisos, asumiremos que estos archivos están almacenados en el directorio /home/qgis/projects. Por lo tanto, adapte las siguientes instrucciones a su ruta.

Los datos de demostración contienen un proyecto QGIS llamado world.qgs que ya está preparado para ser servido con QGIS Server. Si quieres usar tu propio proyecto o quieres aprender cómo se prepara un proyecto, consulta la sección Creandowmsfromproject.

Nota

Este módulo presenta las URL para que la audiencia pueda distinguir fácilmente los parámetros y los valores de los parámetros. Mientras que el formato normal es:

...&field1=value1&field2=value2&field3=value3

Este tutorial usa:

&field1=value1
&field2=value2
&field3=value3

Pegarlos en Mozilla Firefox funciona correctamente, pero otros navegadores web como Chrome pueden agregar espacios no deseados entre los pares campo:parámetro. Entonces, si encuentra este problema, puede usar Firefox o modificar las URL para que estén en formato de una línea.

Hagamos una solicitud GetCapabilities WMS en el navegador web o con curl:

http://qgisplatform.demo/cgi-bin/qgis_mapserv.fcgi
?SERVICE=WMS
&VERSION=1.3.0
&REQUEST=GetCapabilities
&map=/home/qgis/projects/world.qgs

En la configuración de Apache de la lección anterior, la variable QGIS_PROJECT_FILE establece el proyecto predeterminado en /home/qgis/projects/world.qgs. Sin embargo, en la solicitud anterior hicimos uso del parámetro map para ser explícitos y mostrar que se puede usar para apuntar a cualquier proyecto. Si elimina el parámetro map de la solicitud anterior, QGIS Server generará la misma respuesta.

Al señalar cualquier cliente WMS a la URL GetCapabilities, el cliente obtiene en respuesta un documento XML con metadatos de la información del servidor de mapas web, p. Ej. qué capas sirve, la cobertura geográfica, en qué formato, qué versión de WMS, etc.

Como QGIS también es un Cliente WMS/WMTS, puede crear una nueva conexión de servidor WMS con la ayuda de la URL GetCapabilities anterior. Consulte la sección Lesson: Servicios de cartografía web o Seleccionar servidor WMS/WMTS sobre cómo hacerlo.

Al agregar la capa WMS countries a su proyecto QGIS, debería obtener una imagen como la siguiente:

../../../_images/qgis_getmap_request.png

Figura 11.33 QGIS Desktop consume el servicio WMS de la capa de países del servidor QGIS

Nota

QGIS Server sirve capas que están definidas en el proyecto world.qgs. Al abrir el proyecto con QGIS, puede ver que hay varios estilos para la capa de países. QGIS Server también es consciente de esto y puede elegir el estilo que desee en su solicitud. En la imagen de arriba se eligió el estilo Classified_by_population.

11.2.1. Registro

Cuando configura un servidor, los registros siempre son importantes, ya que muestran lo que está sucediendo. Hemos configurado en el archivo *.conf los siguientes registros:

  • Registro del servidor QGIS en /logs/qgisserver.log

  • qgisplatform.demo Registro de acceso de Apache en qgisplatform.demo.access.log

  • qgisplatform.demo Registro de errores de Apache en qgisplatform.demo.error.log

Los archivos de registro son simplemente archivos de texto, por lo que puede usar un editor de texto para verificarlos. También puede usar el comando tail en una terminal: sudo tail -f /logs/qgisserver.log.

Esto generará continuamente en el terminal lo que está escrito en ese archivo de registro. También puede tener tres terminales abiertos para cada uno de los archivos de registro así:

../../../_images/terminal_tail_log.jpg

Figura 11.34 Usando el comando tail para visualizar la salida de los registros de QGIS Server

Cuando utilice QGIS Desktop para consumir los servicios WMS del servidor QGIS, verá todas las solicitudes que QGIS envía al servidor en el registro de acceso, los errores del servidor QGIS en el registro del servidor QGIS, etc.

Nota

  • Si observa los registros en las siguientes secciones, debería comprender mejor lo que está sucediendo.

  • Al reiniciar Apache mientras busca en el registro de QGIS Server, puede encontrar algunos consejos adicionales sobre cómo funcionan las cosas.

11.2.2. Solicitud GetMap

Para mostrar la capa de countries, QGIS Desktop, como cualquier otro cliente WMS, utiliza solicitudes de GetMap.

Una solicitud simple se ve así:

http://qgisplatform.demo/cgi-bin/qgis_mapserv.fcgi
?MAP=/home/qgis/projects/world.qgs
&SERVICE=WMS
&VERSION=1.3.0
&REQUEST=GetMap
&BBOX=-432786,4372992,3358959,7513746
&SRS=EPSG:3857
&WIDTH=665
&HEIGHT=551
&LAYERS=countries
&FORMAT=image/jpeg

La solicitud anterior debería generar la siguiente imagen:

Figura: solicitud simple de GetMap a QGIS Server

../../../_images/getmap_simple_request.jpg

Figura 11.35 Respuesta del servidor Qgis después de una simple solicitud GetMap

11.2.3. moderate Try Yourself Cambiar los parámetros de imagen y capas

Según la solicitud anterior, reemplacemos la capa countries por otra.

Para ver qué otras capas están disponibles, puede abrir el proyecto world.qgs en QGIS y ver su contenido. Sin embargo, tenga en cuenta que los clientes WMS no tienen acceso al proyecto QGIS, solo miran el contenido del documento de capacidades.

Además, hay una opción de configuración para que QGIS ignore algunas de las capas existentes en el proyecto QGIS cuando preste servicio al servicio WMS.

Por lo tanto, puede mirar la lista de capas cuando apunta QGIS Desktop a la URL GetCapabilities o puede intentar buscar otros nombres de capas en la respuesta XML GetCapabilities.

Uno de los nombres de capa que puede encontrar y funciona es countries_shapeburst. Puede encontrar otros, pero tenga en cuenta que algunos pueden no ser visibles a una escala tan pequeña, por lo que podría obtener una imagen en blanco como respuesta.

También puede jugar con otros parámetros de arriba, como cambiar el tipo de imagen devuelta a image/png.

11.2.4. moderate Follow Along: Usar parámetros de filtro, opacidades y estilos

Hagamos otra solicitud que agregue otra capa, algunos de los Parámetros extra soportados por todos los tipos de solicitudes, FILTER y OPACITIES, pero también usa el parámetro STYLES estándar.

http://qgisplatform.demo/cgi-bin/qgis_mapserv.fcgi
?MAP=/home/qgis/projects/world.qgs
&SERVICE=WMS
&VERSION=1.3.0
&REQUEST=GetMap
&BBOX=-432786,4372992,3358959,7513746
&SRS=EPSG:3857
&WIDTH=665
&HEIGHT=551
&FORMAT=image/jpeg
&LAYERS=countries,countries_shapeburst
&STYLES=classified_by_name,blue
&OPACITIES=255,30
&FILTER=countries:"name" IN ( 'Germany' , 'Italy' )

La solicitud anterior debería generar la siguiente imagen:

../../../_images/getmap_filter_opacities.jpg

Figura 11.36 Respuesta a una solicitud GetMap con los parámetros FILTER y OPACITIES

Como puede ver en la imagen de arriba, entre otras cosas, le dijimos a QGIS Server que renderizara solo Alemania e Italia de la capa de países.

11.2.5. moderate Follow Along: Utilice Redlining

Hagamos otra solicitud GetMap que haga uso de la función REDLINING y del parámetro SELECTION detallado en la sección Parámetros extra soportados por todos los tipos de solicitudes:

http://qgisplatform.demo/cgi-bin/qgis_mapserv.fcgi
?MAP=/home/qgis/projects/world.qgs
&SERVICE=WMS
&VERSION=1.3.0
&REQUEST=GetMap
&BBOX=-432786,4372992,3358959,7513746
&SRS=EPSG:3857
&WIDTH=665
&HEIGHT=551
&LAYERS=countries,countries_shapeburst
&FORMAT=image/jpeg
&HIGHLIGHT_GEOM=POLYGON((590000 6900000, 590000 7363000, 2500000 7363000, 2500000 6900000, 590000 6900000))
&HIGHLIGHT_SYMBOL=<StyledLayerDescriptor><UserStyle><Name>Highlight</Name><FeatureTypeStyle><Rule><Name>Symbol</Name><LineSymbolizer><Stroke><SvgParameter name="stroke">%233a093a</SvgParameter><SvgParameter name="stroke-opacity">1</SvgParameter><SvgParameter name="stroke-width">1.6</SvgParameter></Stroke></LineSymbolizer></Rule></FeatureTypeStyle></UserStyle></StyledLayerDescriptor>
&HIGHLIGHT_LABELSTRING=QGIS Tutorial
&HIGHLIGHT_LABELSIZE=30
&HIGHLIGHT_LABELCOLOR=%23000000
&HIGHLIGHT_LABELBUFFERCOLOR=%23FFFFFF
&HIGHLIGHT_LABELBUFFERSIZE=3
&SELECTION=countries:171,65

Pegar la solicitud anterior en su navegador web debería generar la siguiente imagen:

../../../_images/getmap_redlining_selection.jpg

Figura 11.37 Respuesta a una solicitud con la función REDLINING y el parámetro SELECTION

Puede ver en la imagen de arriba que los países con las IDs 171 y 65 se resaltaron en amarillo (Rumania y Francia) usando el parámetro SELECTION y usamos la función REDLINING para superponer un rectángulo con la Etiqueta Tutorial de QGIS.

11.2.6. Solicitudes GetPrint

Una característica muy interesante de QGIS Server es que hace uso de los diseños de impresión de QGIS Desktop. Puedes aprender sobre esto en la sección GetPrint.

Si abres el proyecto world.qgs con QGIS Desktop, encontrará un diseño de impresión llamado Distribución de la población. Una solicitud simplificada de GetPrint que ejemplifica esta característica sorprendente es:

http://qgisplatform.demo/cgi-bin/qgis_mapserv.fcgi
?map=/home/qgis/projects/world.qgs
&SERVICE=WMS
&VERSION=1.3.0&
REQUEST=GetPrint
&FORMAT=pdf
&TRANSPARENT=true
&SRS=EPSG:3857
&DPI=300
&TEMPLATE=Population distribution
&map0:extent=-432786,4372992,3358959,7513746
&LAYERS=countries
../../../_images/getprint.jpg

Figura 11.38 Muestra el pdf resultante de la solicitud GetPrint anterior

Naturalmente, es difícil escribir tus peticiones GetMap, GetPrint etc..

Cliente Web QGIS o QWC es un proyecto de cliente web que puede funcionar junto con QGIS Server para que pueda publicar sus proyectos en la web o ayudarlo a crear solicitudes de QGIS Server para comprender mejor las posibilidades.

Puedes instalarlo así:

  • Como usuario qgis vaya al directorio de inicio con cd /home/qgis.

  • Descargue el proyecto QWC de aquí i descomprímelo.

  • Haz un enlace simbólico al directorio /var/www/html ya que es el DocumentRoot que hemos configurado en la configuración del host virtual. Si descomprimiste el archivo en /home/qgis/Downloads/QGIS-Web-Client-master podemos hacer esto con sudo ln -s /home/qgis/Downloads/QGIS-Web-Client-master /var/www/html/.

  • Acceso http://qgisplatform.demo/QGIS-Web-Client-master/site/qgiswebclient.html?map=/home/qgis/projects/world.qgs desde tu navegador web.

Ahora debería poder ver el mapa como en la siguiente figura:

../../../_images/qwc.jpg

Figura 11.39 Cliente web QGIS consumiendo el proyecto world.qgs

Si hace clic en el botón Imprimir en QWC, puede crear solicitudes GetPrint de forma interactiva. También puede hacer clic en el icono ? En el QWC para acceder a la ayuda disponible para que pueda descubrir mejor las posibilidades del QWC.

11.2.7. In Conclusion

Aprendió a usar Servidor QGIS para proporcionar servicios WMS.

11.2.8. What’s Next?

A continuación, verá cómo utilizar QGIS como interfaz para el famoso GRASS GIS.