11.2. Lesson: Servicio WMS¶
Vamos a descargar los datos demo de Entrenamiento y secomprime los archivos en el subdirectorio qgis-server-tutorial-data
a algún directorio. Te recomendamos que simplemente crees un directorio /home/qgis/projects
y coloque sus archivos allí para evitar posibles problemas de permisos.
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:
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 enqgisplatform.demo.access.log
qgisplatform.demo
Registro de errores de Apache enqgisplatform.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í:
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
11.2.3. 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. 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:
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. 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:
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 prestación muy interesante de QGIS Server es que hace uso de los diseños de impresión de QGIS Desktop. Puedes conocerlo en el GetPrint section.
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
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 concd /home/qgis
.Descargue el proyecto QWC de aquí i descomprímelo.
Haz un enlace simbólico al directorio
/var/www/html
ya que es elDocumentRoot
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 consudo 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:
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.