11.2. Lesson: Servidor WMS

The data used for this exercise are available in the qgis-server-tutorial-data subdirectory of the training data you downloaded. For convenience and to avoid possible permissions problems, we will assume that these files are stored in /home/qgis/projects directory. Hence, adapt the following instructions to your path.

Os dados de demonstração contêm um projeto do QGIS chamado: file:world.qgs que já está preparado para ser usado com o servidor QGIS. Se você quer usar seu próprio projeto ou quer aprender como um projeto está preparado, veja a seção: ref: Creatingwmsfromproject`.

Nota

Este módulo apresenta as URLs para que o público possa distinguir facilmente os parâmetros e valores dos parâmetros. Enquanto o formato normal é:

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

Este tutorial usa:

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

Colando-os no Mozilla Firefox funciona corretamente, mas outros navegadores como o Chrome podem adicionar espaços indesejados entre os pares field:parameter. Portanto, se você encontrar esse problema, poderá usar o Firefox ou modificar as URLs para que elas fiquem no formato de uma linha.

Vamos fazer uma solicitação WMS GetCapabilities no navegador da Web ou com o curl:

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

Na configuração do Apache da lição anterior, a variável QGIS_PROJECT_FILE define o projeto padrão como: file:/home/qgis/projects/world.qgs. No entanto, na solicitação acima, usamos o parâmetro map para ser explícito e para mostrar que ele pode ser usado para apontar para qualquer projeto. Se você excluir o parâmetro map da solicitação acima, o QGIS Server exibirá a mesma resposta.

Apontando qualquer cliente WMS para a URL ``GetCapabilities`, o cliente recebe em resposta um documento XML com metadados das informações do Servidor de Mapa da Web, por exemplo, que camadas serve, a cobertura geográfica, em que formato, qual versão do WMS etc.

Como o QGIS também é um: ref:ogc-wms você pode criar uma nova conexão com o servidor WMS com a ajuda do URL GetCapabilities acima. Veja a seção: ref:wms-services ou a seção: ref:ogc-wms-servers sobre como fazê-lo.

Adicionando a camada WMS countries ao seu projeto QGIS, você deve obter uma imagem como a abaixo:

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

Fig. 11.33 QGIS Desktop consumindo o serviço WMS da camada de países do QGIS Server

Nota

O servidor QGIS serve camadas que são definidas no projeto: file:world.qgs. Ao abrir o projeto com o QGIS, você pode ver que há vários estilos para a camada de países. O QGIS Server também está ciente disso e você pode escolher o estilo desejado em sua solicitação. O estilo classified_by_population foi escolhido na imagem acima.

11.2.1. Logging

Quando você está configurando um servidor, os registros são sempre importantes, pois mostram o que está acontecendo. Nós instalamos no arquivo: file: *.conf os seguintes logs:

  • Log do QGIS Server em /logs/qgisserver.log

  • qgisplatform.demo Log de acesso do Apache em qgisplatform.demo.access.log

  • qgisplatform.demo Log de erro do Apache em qgisplatform.demo.error.log

Os arquivos de log são simplesmente arquivos de texto para que você possa usar um editor de texto para verificá-los. Você também pode usar o comando tail em um terminal: sudo tail -f /logs/qgisserver.log.

Isso produzirá continuamente no terminal de saída o que está escrito nesse arquivo de log. Você também pode ter três terminais abertos para cada um dos arquivos de log assim:

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

Fig. 11.34 Usando o comando tail para visualizar a saída de logs do QGIS Server

Quando você usa o QGIS Desktop para consumir os serviços WMS do QGIS Server, você verá todas as solicitações que o QGIS envia ao servidor no log de acesso, os erros do QGIS Server no log do QGIS Server, etc.

Nota

  • Se você observar os registros nas seções a seguir, você deve entender melhor o que está acontecendo.

  • Ao reiniciar o Apache enquanto procura no log do QGIS Server, você pode encontrar algumas dicas extras sobre como as coisas funcionam.

11.2.2. Requisões GetMap

Para exibir a camada countries, o QGIS Desktop, como qualquer outro cliente WMS, está usando as requisições GetMap.

Uma simples solicitação parece:

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

A solicitação acima deve gerar a seguinte imagem:

Figura: simples solicitação GetMap para o QGIS Server

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

Fig. 11.35 Resposta do Qgis Server após uma simples solicitação GetMap

11.2.3. |moderado| Try Yourself Alterar os parâmetros de imagem e camadas

Com base no pedido acima, vamos substituir a camada countries por outra.

Para ver quais outras camadas estão disponíveis, você pode abrir o projeto: file:world.qgs no QGIS e examinar seu conteúdo. Tenha em mente que os clientes do WMS não têm acesso ao projeto do QGIS, apenas olham para o conteúdo do documento de recursos.

Além disso, há uma opção de configuração para que algumas das camadas existentes no projeto QGIS sejam ignoradas pelo QGIS ao servir o serviço WMS.

Então, você poderia olhar a lista de camadas quando aponta o QGIS Desktop para a URL GetCapabilities ou você poderia tentar encontrar outros nomes de camadas na resposta XML GetCapabilities.

Um dos nomes de camadas que você pode encontrar e trabalhar é countries_shapeburst. Você pode encontrar outros, mas lembre-se que alguns podem não estar visíveis em uma escala tão pequena, então você pode obter uma imagem em branco como resposta.

Você também pode brincar com os outros parâmetros acima, como alterar o tipo de imagem retornado para image/png.

11.2.4. moderate Follow Along: Use os parâmetros Filtro, Opacidades e Estilos

Vamos fazer outra solicitação que adicione outra camada, algumas das seguintes: ref:extra-getmap-parameters, FILTRO e ** OPACIDADES **, mas também use o parâmetro padrão STYLES.

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' )

A solicitação acima deve gerar a seguinte imagem:

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

Fig. 11.36 Resposta a uma solicitação GetMap com os parâmetros FILTRO e OPACIDADES

Como você pode ver na imagem acima, entre outras coisas, pedimos ao QGIS Server para renderizar apenas ** Alemanha** e ** Itália ** da camada de países.

11.2.5. moderate Follow Along: Use Redlining

Vamos fazer outra requisição GetMap que faça uso do recurso: ref:qgisserver-redlining e do parâmetro SELEÇÃO detalhado na seção: ref:extra-getmap-parameters:

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

Colocar a solicitação acima em seu navegador da Web deve exibir a seguinte imagem

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

Fig. 11.37 Resposta a uma solicitação com o recurso REDLINING e o parâmetro SELECTION

Você pode ver na imagem acima que os países com os IDs 171 e 65 foram destacados em amarelo (Romênia e França) usando o parâmetro **SELECTION ** e usamos o recurso **REDLINING ** para sobrepor um retângulo com o **Tutorial QGIS **.

11.2.6. Solicitações GetPrint

One very nice feature of QGIS Server is that it makes use of the QGIS Desktop print layouts. You can learn about it in the GetPrint section.

Se você abrir o projeto: file:world.qgs com o QGIS Desktop, você encontrará um layout de impressão chamado``Distribuição Populacional``. Um pedido GetPrint simplificado que exemplifica esta característica surpreendente é:

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

Fig. 11.38 Mostra o pdf resultante da solicitação GetPrint acima

Naturalmente, é difícil escrever suas solicitações GetMap, GetPrint etc.

QGIS Web Client <https://github.com/qgis/qgis-web-client> _ ou QWC é um projeto de cliente da Web que pode trabalhar junto com o QGIS Server para que você possa publicar seus projetos na Web ou ajudá-lo a criar o QGIS Server solicita uma melhor compreensão sobre as possibilidades.

Você pode instalá-lo assim:

  • Quando o usuário qgis vai para o diretório inicial com cd/home/qgis.

  • Faça o download do projeto QWC em here <https://github.com/qgis/QGIS-Web-Client/archive/master.zip> _ e descompacte-o.

  • Faça um link simbólico para o diretório /var/www/html como ele é o DocumentRoot que nós configuramos na configuração do host virtual. Se você descompactou o arquivo em: file: /home/qgis/Downloads/QGIS-Web-Client-master, podemos fazer isso com ``sudo ln -s/home/qgis/Downloads/QGIS-Web-Client-master/var/www/html/ `.

  • Acesse http://qgisplatform.demo/QGIS-Web-Client-master/site/qgiswebclient.html?map=/home/qgis/projects/world.qgs no navegador da Web.

Agora você deve poder ver o Mapa como na figura a seguir:

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

Fig. 11.39 Cliente Web QGIS consumindo o projeto world.qgs

Se você clicar no botão Imprimir no QWC, você pode criar interativamente pedidos GetPrint. Você também pode clicar no ícone ? No QWC para acessar a ajuda disponível para que você possa descobrir melhor as possibilidades do QWC.

11.2.7. In Conclusion

Você aprendeu como usar o QGIS Server para fornecer serviços WMS.

11.2.8. What’s Next?

Em seguida, você verá como usar o QGIS a frente do famoso GRASS GIS.