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:
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 emqgisplatform.demo.access.log
qgisplatform.demo
Log de erro do Apache emqgisplatform.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:
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
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. 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:
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. 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
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
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 comcd/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 é oDocumentRoot
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:
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.