Publishing maps with QGIS Server and QGIS Client II

From Open source mapmaking technologies
Jump to: navigation, search

QGIS Server

QGIS Server is already installed on OSGeo Live distribution.

You can check that QGIS Server is installed, by selecting Geospatial → Web Services → QGIS Server.

The browser opens with a map prepared by QGIS Server.

We can use the browser Web Developer → Inspector to check the requests. Each request is made against the service http://localhost/cgi-bin/qgis_mapserv.fcgi.

A complete request is:

http://localhost/cgi-bin/qgis_mapserv.fcgi?map=/usr/local/share/qgis/QGIS-NaturalEarth-Example.qgs&
LAYERS=HYP_50M_SR_W%2Cne_10m_lakes%2Cne_10m_rivers_lake_centerlines&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&
EXCEPTIONS=application%2Fvnd.ogc.se_inimage&FORMAT=image%2Fjpeg&SRS=EPSG%3A4326&
BBOX=-16.875,28.125,-11.25,33.75&WIDTH=256&HEIGHT=256

Ficheiro:Screenshot from 2015-11-26 21-09-30.png

QGIS Client

Depois de confirmar que tem o QGIS Server a correr, vamos instalar o QGIS Client. Na verdade, o QGIS Server pode ser utilizado com qualquer cliente WMS. No entanto, a dupla QGIS Server e QGIS Client permitem-nos muito facilmente publicar na web um projeto desenvolvido no QGIS (Desktop).

O workflow que vamos usar é muito simples:

  • Instalar e confirmar o bom funcionamento do QGIS Server
  • Instalar e confirmar o bom funcionamento do QGIS Client
  • Desenvolver projetos no QGIS e copiar para uma determinada pasta. Automagicamente os projetos ficam disponíveis na web. Sempre que necessário, fazemos alterações aos projetos e voltamos a copiá-los para a pasta do servidor.

Vamos então instalar o QGIS Client.

Preparação

A nossa máquina virtual OSGeo Live vai ser utilizada como servidor. Para os projetos publicados com o QGIS Client, vamos criar um alias (um sinónimo) para a máquina localhost:

sudo medit /etc/hosts

Acrescente a linha:

127.0.0.1	qgisserver.localhost

Confirma o bom funcionamento do alias, usando o comando ping para falar com a máquina qgisserver.localhost:

ping qgisserver.localhost

Para terminar o ping, faça Ctrl+c.

Instalação

O QGIS Client é um projeto opens source. Está no github.

Começa-se por replicar o código que está no github, e depois corre-se o programa de instalação com dois parâmetros:

  • A pasta onde vão ser carregados os projetos a publicar
  • O endereço do servidor a partir do qual os projetos estão disponíveis.

Para instalar o QGIS Client, execute os seguintes comandos:

cd
git clone https://github.com/qgis/qgis-web-client.git
cd qgis-web-client
sudo ./install.sh /home/user/qgis-web-client/projects qgisserver.localhost
sudo service apache2 restart

O QGIS Client passou a estar disponível a partir do endereço: http://qgisserver.localhost/maps/.

Abra o endereço e certifique-se que consegue navegar nos dois projetos existentes:

Criar um novo projeto no QGIS

Crie um novo projeto no QGIS.

  • Acrescente o MDT da Madeira (madeira.tiff).
  • Selecione apenas as freguesias da Calheta, e guarde o resultado no sistema de coordenadas EPSG:4326.
  • Selecione apenas os restaurantes, cafés, bares e fasts food da Calheta, e guarde o resultado no sistema de coordenadas EPSG:4326.

Vá às propriedades do projeto (Project → Project Properties...).

  • Na seção CRS, ponha as coordenadas do projeto em EPSG:3857 (WGS84 / Pseudo Mercator).
  • Na seção OWS server, marque a opção Advertised extent, e carregue no botão Use Current Canvas Extent.

Ficheiro:Screenshot from 2015-11-29 20-25-31.png

Impressão de mapas na web

Para poder imprimir a partir da web ou gerar um PDF é necessário criar um composer no QGIS.

No QGIS, escolha Project → New Print Composer. Escolha um nome qualquer, p.ex. papiro.

No editor do Composer, acrescente:

  • Um mapa (em Layout → Add Map)
  • Um título (em Layout → Add Label)

Ficheiro:Screenshot from 2015-11-29 20-36-04.png

Grave o projeto com o nome calheta.

Publicação do projeto

Copie o projeto gravado para a pasta qgis-web-client/projects. Não é preciso fazer mais nada.

Abra o QGIS Client a partir do endereço http://qgisserver.localhost/maps ou diretament http://qgisserver.localhost/maps/calheta.

Ficheiro:Screenshot from 2015-11-29 21-29-58.png

Problemas frequentes

O problema mais comum tem a ver com o acesso aos dados. O QGIS Server precisa de ter acesso aos dados dos projetos, pe.ex. às shapefiles, rasters, tracks, etc. Por isso, os dados têm que estar no servidor, no caminho indicado no projeto.

Por princípio, o QGIS Desktop usa caminhos relativos, por conveniência. Pode-se alterar este comportamento em: Project → Project Properties, na seção General, em Save paths. Só altere se for necessário.

Uma sugestão é, na pasta onde guarda os projetos, p.ex. qgis-projets, criar uma sub-pasta para todos os dados do projeto, p.ex. calheta. Todas as shapefiles, rasters, etc, vão estar dentro dessa pasta calheta (eventualmente usando outras sub-pastas se o projeto for grande). O arquivo do projeto calheta.qgs fica acima da pasta dos dados, ou seja, diratamente na pasta qgis-projects. Com esta organização, no final é fácil transferir todo o projeto para o servidor.

As imagens seguintes ilustram esta organização:

Ficheiro:Screenshot from 2015-11-29 22-12-43.png

Ficheiro:Screenshot from 2015-11-29 22-19-59.png

Com esta organização, passa-se para o servidor o ficheiro do projeto e a respetiva pasta dos dados para a pasta qgis-web-client/projects.

Detetar os problemas

Para ter mais informação sobre o que realmente se está a passar, há dois arquivos de log que ajudam:

  • /var/log/apache2/error.log
  • /var/log/apache2/qgis-web-client-error.log

Na linha de comandos pode ficar a observar constatemente essses arquivos com:

tail -f /var/log/apache2/error.log /var/log/apache2/qgis-web-client-error.log