Configuração Avançada

Criar um mapa de enquadramento

Para adicionar um mapa de enquadramento*, ou mapa de localização, a um mapa Lizmap, deve:

  • Crie um grupo independente no projeto QGIS chamado Overview (com a 1ª letra maiúscula)

  • Adicionar camadas, por exemplo, uma camada de municípios, uma camada base respeitante ao terreno, etc.

Todas as camadas e grupos do grupo Overview não serão mostradas na legenda do mapa Lizmap**. Eles são desenhados somente no mapa de enquadramento.

É aconselhável utilizar:

  • camadas vetoriais leves e simplificadas (se necessário)

  • utilize uma simbologia adequada: traços pequenos e etiquetas simples ou ocultas

Aqui está um exemplo de utilização:

../_images/features-overview.png

Adicionar a função de localização

../_images/interface-tools-tab-locate.png

A ideia desta ferramenta é apresentar ao utilizador do Lizmap Web Client uma lista de valores que oferece a capacidade de fazer zoom para um ou mais objetos espaciais da camada.

Caso de utilização

Considere uma camada espacial vetorial districts contida no projeto QGIS. Optamos por adicionar esses distritos à ferramenta Localizar por camada, para permitir aos utilizadores do Lizmap Web Client que se possam posicionar rapidamente num dos distritos.

Depois desta camada ser adicionada à ferramenta Localizar por camada, aparecerá na interface do Lizmap Web Client uma lista de valores contendo os distritos.

Quando o utilizador do mapa Web seleciona um nome nessa lista, o mapa será automaticamente reorientado para o distrito selecionado e a geometria do distrito será exibida (opcional).

Pré-requisitos

Nota

Camada(s) que deseja utilizar devem ser **publicadas como camadas WFS*: marque a caixa de capacidades WFS correspondente no separador Servidor OWS da janela Propriedades do Projeto.

Como

Para adicionar uma camada a esta ferramenta:

  • escolha a camada com a primeira lista de valores da lista de camadas vetoriais do projeto

  • depois a coluna que contém os valores que deseja apresentar na respetiva lista

  • Se desejar que a geometria dos objetos relacionados também seja mostrada no mapa quando o utilizador seleciona um item da lista, marque a opção Mostrar a geometria

  • Finalmente clique no botão Adicionar camada para adicioná-la à lista.

Para remover uma camada já configurada:

  • selecione a linha da camada que deseja remover clicando na mesma

  • Clique no botão Remover camada.

Listas hierárquicas

Se tomarmos o exemplo dos distritos, pode ser interessante também fornecer ao utilizador uma caixa de valores concelhos. Pretende-se que, quando o utilizador escolhe um distrito, a caixa de valores dos concelhos seja automaticamente filtrada para mostrar apenas os concelhos do distrito escolhido.

Para isto, existem 2 métodos:

  • ou tem 2 camadas vetoriais separadas: uma para distritos e outra para concelhos. Nesse caso deverá utilizar um campo de união entre as duas camadas para ativar as listas de filtragem automática no Lizmap

  • ou temos apenas 1 camada para concelhos e, então, pode especificar através do plugin um campo de agrupamento. Serão criadas duas caixas de valores em vez de uma na aplicação da Web.

Nota

Podem ser adicionadas à ferramenta Localizar por camada até 3 camadas por projeto.

Nota

Não se esqueça de verificar a configuração do QGIS server (no Lizmap: Minha conta -> Configuração Lizmap -> verifique se a versão do qgis server é a correcta, se não for, pode usar o botão “modificar” que se encontro no fundo). Se a configuração não estiver correcta a localização estará errada!

Spatial searching

In the map options, you can configure the address search based on external web services (nominatim, googke, french IGN). See Configurar o mapa . Additonaly, you can add spatial searching capability to Lizmap. This means you will allow the users to search within spatial data, such as countries, points of interests, etc. You have two ways to add searching capability in Lizmap:

  • since version 3.1, you can use the plugin QuickFinder to configure a data search per QGIS project.

  • since version 3.2, you can create a table or view lizmap_search in your PostgreSQL database to store the search data for all your Lizmap projects.

QuickFinder Plugin

O objetivo deste plugin é proporcionar uma pesquisa rápida entre grandes conjuntos de dados, pesquisando dentro de um ficheiro qtfs gerado através do QGIS Desktop.

Pré-requisitos

  • You must have install at least the 7.x version of PHP in your Lizmap server.

  • It is available only since version 3.1 of Lizmap Web Client.

Configuration

Dentro do QGIS

  • install QuickFinder Plugin

  • choose a layer(s), define the fields to search among, pick the geometry storage format (WKT or Extent) and store Full Text Searchs (FTS) vector into a file database (.qfts). The filename must be identical to the QGIS project filename. Ex: myproject.qfts for a QGIS project stored as myproject.qgs

Nota

Apenas funcionam os formatos WKT ou Extent para armazenamento das geometrias, uma vez que o formato binário (WKB) não pode ser descodificado pelo LWC.

Dentro do LWC (disponível desde a versão 3.1)

  • colocar o ficheiro da base de dados na pasta onde se encontra o projeto QGIS, utilizar a ferramenta de pesquisa (pesquisar) e fazer zoom para o elemento escolhido.

Media no Lizmap

Princípio de utilização

É possível fornecer documentos através do Lizmap. Para fazer isso, de forma simples:

  • Crie um diretório chamado media (em minúsculas e sem acentos) ao mesmo nível do projeto QGIS

  • coloque documentos dentro desse diretório: fotos, relatórios, ficheiros pdf, vídeos, HTML ou ficheiros de texto

  • os documentos contidos no diretório media devem ser sincronizados tal como outros dados

  • Pode utilizar sub-diretórios por camada ou tema: a organização dos conteúdos do diretório media é livre.

Em seguida, no Lizmap Web Client pode fornecer acesso a esses documentos por 2 formas:

  • popups: o conteúdo de um ou mais campos para cada geometria pode especificar o caminho para o diretório media. Por exemplo, um campo foto ou pdf

  • link fornecido para cada grupo ou camada no separador Layers do plugin do Lizmap.

Os detalhes destas utilizações são especificados abaixo.

Utilização de popups

Princípio

Conforme descrito na introdução acima, é possível utilizar um caminho media na camada de dados espaciais.

Por exemplo, se quiser que as popups associados a uma camada mostrem uma imagem que depende de cada objeto, basta criar um novo campo que conterá o caminho do diretório media para a imagem em cada linha da tabela de atributos da camada e ativar popups para essa camada.

Exemplo

Aqui, por exemplo, a tabela de atributos de uma camada paisagem configurada para mostrar imagens na popup. O utilizador criou um campo imagem no qual coloca o caminho para as imagens e um campo pdf no qual coloca o caminho para o ficheiro pdf, descrevendo o objeto correspondente em cada linha.

id

nome

descrição

imagem

pdf

1

Pântano

blabla

media/photos/photo_1.png

media/docs/paysage-1.pdf

2

Praia

blibli

media/photos/photo_2.png

media/docs/paysage-2.pdf

3

Ancoradouro

bloblo

media/photos/photo_3.png

media/docs/paysage-3.pdf

Nota

Neste exemplo, vemos que as imagens e os nomes dos arquivos PDF são normalizados. Siga este exemplo porque permite utilizar a calculadora de campos do QGIS para criar ou atualizar automaticamente os dados da coluna media para a totalidade da camada.

Resultado

Aqui estão as regras de apresentação em popup:

  • Se forem os passos do caminho para uma imagem, a imagem será apresentada na pop-up. Ao clicar na imagem, a imagem original será mostrada num novo separador

  • Se forem os passos do caminho para um ficheiro de texto ou ficheiro HTML, o conteúdo do ficheiro será mostrado na popup

  • Para outros tipos de ficheiros, a pop-up mostrará um link para o documento que os utilizadores podem utilizar para fazer o download do ficheiro.

Ilustração

Abaixo está uma ilustração de uma popup do Lizmap mostrando uma imagem, um texto e um link na popup:

../_images/features-popup-photo-example.png

Como configurar as popups

Ativar popups

Com o plugin, você pode ativar popups para uma única camada ou para um grupo configurado com a opção «Grupo como camada».

Basta clicar na caixa de verificação Ativar popups do separador Layers na interface do plugin Lizmap. Para a opção Grupo como camada, deve selecionar a opção para o grupo e para todas as camadas incluídas que deseja mostrar na popup: neste caso, apenas as camadas com a opção Popup marcada serão apresentadas.

Existem três tipos de fontes popup:

  • auto

  • lizmap

  • qgis

No Web Lizmap Web Client, um clique sobre um objeto do mapa despoletará a popup se (e somente se):

  • a camada estiver ativada na legenda, para que a mesma seja mostrada no mapa

  • a popup foi ativado através do plugin para a camada ou para o grupo

  • o utilizador clicou numa área do mapa onde os dados da camada com popups ativas são apresentados.

Nota

Para camadas do tipo ponto é necessário clicar no centro do ponto para apresentar a popup. A tolerância pode ser configurada na aba Opções do mapa e depois Ferramentas de mapa.

É possível redefinir onde a popup é apresentada na interface web em Opções do mapa e depois Interface do mapa. As opções disponíveis são:

  • dock

  • minidock

  • mapa

  • dock em baixo

  • dock à direita

Auto popup

A popup auto do Lizmap Web Client apresenta uma tabela mostrando as colunas de atributos separadas em Campo e Valor, conforme abaixo abaixo:

Campo

Valor

id

1

nome

Nome

descrição

Este objeto …

foto

:-)

Pode modificar as informações apresentadas através do QGIS e também mostrar imagens ou links.

Configuração popup simples

Através do plugin, se clicar na caixa de verificação Ativar popups sem modificar seu conteúdo através do botão Configurar será apresentada a tabela padrão.

No entanto, pode sincronizar vários aspetos no QGIS e com a ajuda do plugin Lizmap para parametrizar os campos apresentados, renomear campos, e até mesmo apresentar imagens, fotos ou links para documentos internos ou externos.

Ocultar ou renomear uma coluna

Pode utilizar as ferramentas disponíveis no separador Campos das** propriedades da camada**, no QGIS:

  • Para evitar mostrar uma coluna na popup, desmarque a caixa de verificação relativa ao WMS. A coluna WMS encontra-se à direita

  • para alterar o nome apresentado para essa coluna, digite um nome diferente na coluna Alias

../_images/features-popup-fields.png

Utilização de formatos média: imagens, documentos, etc.

Se utilizar caminhos para documentos existentes no diretório media, pode:

  • apresentar a imagem encontrada nesse link

  • apresentar o conteúdo (texto ou HTML) do ficheiro

  • apresentar um link para um documento

Veja também

Capítulo: ref: media-in-lizmap para mais detalhes sobre a utilização de documentos do diretório media nas popups.

Lizmap popup

Introdução

Se a apresentação de tabela simples não atender às suas necessidades, pode escrever um modelo de popup. Para fazer isso, deve conhecer bem o formato HTML. Veja, p.ex.: http://html.net/tutorials/html/

Aviso

Quando utiliza o modo lizmap, a configuração anterior para renomear um campo deixa de funcionar: é necessário configurar o que é mostrado e como através do modelo. Também é possível a gestão de média, mas para isso é preciso ser configurada.

Implementação

Pode editar o modelo popup com o botão Configurar no plugin Lizmap. Clicando no mesmo, será apresentada uma janela com duas áreas de texto:

  • uma área onde pode digitar o seu texto

  • uma área apenas de leitura, mostrando uma visualização prévia do seu modelo

../_images/features-popup-configure.png

Pode digitar texto simples, mas sugerimos que escreva em formato HTML para dar uma formatação adequada. Por exemplo, pode adicionar parágrafos, cabeçalhos, etc .:

<h3>A Title</h3>
<p>An example of paragraph</p>

O comportamento é o seguinte:

  • se o conteúdo das duas áreas estiver vazio, será apresentada uma tabela simples na popup (modelo padrão)

  • se o conteúdo não estiver vazio, o seu conteúdo será utilizado como um modelo para a popup

O Lizmap Web Client substituirá automaticamente uma variável, identificada pelo nome de um campo, pelo seu conteúdo. Para adicionar o conteúdo de uma coluna a uma popup, deve utilizar o nome da coluna precedida do símbolo dólar ($), tudo entre chavetas ({}). Por exemplo:

<h3>A Title</h3>
<p>An example of paragraph</p>
<p>A name: <b>{$name}</b></p>
<p>Description: {$description}</p>

Nota

Se configurou um alias para um campo, deve utilizar esse alias em vez do nome, entre parênteses retos

Também pode utilizar os valores das colunas como parâmetros para atribuir estilo ao texto. Como exemplo, para utilizar a cor de uma linha de autocarro como uma cor de fundo:

<p style="background-color:{$color}">
<b>LINE</b> : {$ref} - {$name}
<p/>

popup QGIS

As popups QGIS podem ser configuradas através do QGIS –> Layer properties –> Tooltips –> HTML, utilizando a mesma sintaxe aplicada para popups lizmap. As principais vantagens desta abordagem são:

  • pode utilizar variáveis e expressões QGIS, adicionando informações criadas dinamicamente

  • a popup pode ser visualizada no QGIS, utilizando ferramentas de dicas

  • as configurações popup e estilo das camada são armazenados no projeto QGIS, para que possam ser reutilizados em outros projetos Lizmap sem replicar a configuração.

Relações de um para vários

É possível apresentar vários objetos (fotos, documentos) para cada elemento geográfico. Para fazer isso, deve configurar o projeto QGIS e o plugin Lizmap.

No projeto QGIS:

  • Utilize 2 camadas diferentes para armazenar os elementos principais e as imagens. Por exemplo, «arvores» e «fotos_arvores». A camada secundária deve conter um campo referenciando o ID da camada principal

  • Configure os nomes alternativos e os tipos de campo no separador Campos da caixa de diálogo propriedades das camadas. Utilize «Foto» para o campo que contém o caminho relativo às imagens

  • Adicione uma relação nas propriedades do projeto QGIS entre a camada principal «arvores» e a camada secundária «fotos_arvores»

  • Adicione dados às camadas. Deve utilizar um caminho relativo para indicar o caminho das imagens. Esses caminhos devem referir-se a um sub-diretório do diretório media do projeto, por exemplo: media/fotos/elemento_1_a.jpg

No plugin Lizmap:

  • No separador Camadas, ative popup para ambas as camadas. Pode configurar a popup se necessitar de layouts específicos (consulte a documentação sobre popups)

  • Para a camada principal, ative a opção «Apresentar ligações filho sobre cada objeto (utilize relações)»

  • Adicione as duas camadas no separador Tabela de atributos

  • Opcionalmente pode ativar a edição para as duas camadas, para permitir que os utilizadores web criem novos elementos e façam o upload de imagens

  • Guarde e publique seu projeto com a configuração do Lizmap

Mostrar subordinados em formato compacto

É possível altera a forma como os elementos subordinados são apresentados e fazê-las parecer uma tabela. Para isso, é necessário adaptar o HTML de camada subordinada e utilizar algumas classes para manipulação do código.

  • «lizmap_merged»: É necessário atribuir esta classe à tabela

  • lizmapPopupHeader: Se desejar uma apresentação melhorada dos cabeçalhos, é necessário colocar esta classe no “<tr>” que os contém

  • lizmapPopupHidden: Esta classe permite ocultar alguns dos elementos subordinados que se desejam ocultar quando utilizados como subordinados embora sendo ainda é possível visualizá-los se se apresentar a popup como uma Popup principal

Aqui está um exemplo:

<table class="lizmap_merged">
 <tr class="lizmapPopupHeader">
     <th class="lizmapPopupHidden"><center> Idu </center></th>
     <th> <center> Type </center> </th>
     <th> <center> Surface</center> </th>
  </tr>
  <tr>
     <td class="lizmapPopupHidden"><center>[% "idu" %]</center></td>
     <td><center>[% "typezone" %]</center></td>
     <td><center>[% "surface" %]</center></td>
  </tr>
</table>
../_images/popup_display_children.png

Criação de temas simples

A partir do Lizmap Web Client versão 2.10, é possível criar temas para todos os mapas de um repositório ou para um único mapa. Esta função necessita de ser ativada pelo administrador e utiliza o diretório media Media no Lizmap.

O princípio é:

  • o diretório media contém um diretório chamado themes

  • o diretório themes contém um diretório padrão para o tema de todos os mapas do repositório

  • o diretório themes pode conter um diretório por projeto, para os temas específicos de cada projeto

-- media
  |-- themes
    |-- default
    |-- map_project_file_name1
    |-- map_project_file_name2
    |-- etc

Para simplificar a criação de um tema para um repositório ou mapa, o Lizmap permite obter o tema padrão da aplicação, através do pedido: index.php/view/media/getDefaultTheme.

O pedido referido retorna um ficheiro zip contendo o tema padrão, com a seguinte estrutura:

-- lizmapWebClient_default_theme.zip
  |-- default
    |-- css
      |-- main.css
      |-- map.css
      |-- media.css
      |-- img
        |-- loading.gif
        |-- etc
      |-- images
        |-- sprite_20.png
        |-- etc

Uma vez descarregado o ficheiro zip, pode:

  • substitua as imagens

  • edite os ficheiros CSS

Aviso

Os ficheiros e os diretórios devem ter permissões de leitura (755:644)

Para visualizar os resultados basta adicionar &theme=yourtheme no final do URL (p.ex. https://demo.lizmap.3liz.com/index.php/view/map/?repository=montpellier&project=montpellier&theme=yourtheme).

A partir do momento em que o tema esteja pronto, pode publicá-lo, copiando-o para o diretório media.

Adicionar o seu próprio código JavaScript

Objetivo

Isso é útil para uma variedade de utilizações avançadas. Por exemplo, pode evitar que as pessoas possam descarregar elementos da página clicando com o botão direito sobre os mesmos e, claro, muito mais.

Nota

Este recurso encontra-se disponível desde o Lizmap 2.11. Para versões anteriores, deve adicionar o seu código diretamente no ficheiro``lizmap/www/js/map.js``

  • No seu repositório (p.ex. /home/data/repo1/myproject.qgs deve ter estes diretórios:

    media
    |-- js
      |-- myproject
    
  • Todo o código Javascript que copiar para o diretório``/home/data/rep1/media/js/myproject/`` será executado pelo Lizmap, desde que:

  • seja permitido, através da interface de administração do Lizmap, adicionando o privilégio «Permitir temas para este repositório» no formulário para a modificação do repositório

Eventos Javascript disponíveis

O código Javascript pode utilizar muitos eventos despoletados pelo Lizmap Web Client. Aqui está uma lista de todos os eventos disponíveis, com as propriedades retornadas.

Eventos disponíveis no Lizmap Web Client

Nome do evento

Descrição

Propriedades retornadas

treecreated

Acionado quando a árvore da camada foi criada no painel de legenda

mapcreated

Acionado quando o mapa OpenLayers foi criado

layersadded

Acionado quando as camadas Openlayers foram adicionadas

uicreated

Acionado quando a interface foi criada

dockopened

Acionado quando um painel é aberto (painel esquerdo)

id

dockclosed

Acionado quando um painel é fechado (painel esquerdo)

id

minidockopened

Acionado quando uma mini-painel (recipiente direito para ferramentas) é aberto

id

minidockclosed

Acionado quando um mini-painel é fechado

id

bottomdockopened

Acionado quando o painel inferior é aberto

id

bottomdockclosed

Acionado quando o painel inferior é fechado

id

lizmapbaselayerchanged

Acionado quando um tema base foi alterado

camada

lizmapswitcheritemselected

Acionado quando uma camada foi destacada no painel de legenda de camadas

name | type | selected

layerstylechanged

Acionado quando um estilo de camada foi alterado

featureType

lizmaplocatefeaturecanceled

Acionado quando o utilizador cancelou a ferramenta localizar por camada

featureType

lizmaplocatefeaturechanged

Acionado quando o utilizador selecionou um item na ferramenta localizar por camada

featureType | featureId

lizmappopupdisplayed

Acionado quando o conteúdo popup é apresentado

lizmappopupdisplayed_inattributetable

Acionado quando o conteúdo popup é apresentado na tabela de atributos (sub-painel direito)

lizmapeditionformdisplayed

Acionado quando um formulário de edição é apresentado

layerId | featureId | editionConfig

lizmapeditionfeaturecreated

Acionado quando um elemento de camada foi criado com a ferramenta de edição

layerId

lizmapeditionfeaturemodified

Acionado quando um elemento de camada foi modificado com a ferramenta de edição

layerId

lizmapeditionfeaturedeleted

Acionado quando um elemento de camada foi eliminado com a ferramenta de edição

layerId | featureId

attributeLayersReady

Acionado quando todas as camadas a serem presentadas na ferramenta de listar registos foram definidas

camadas

attributeLayerContentReady

Acionado quando uma tabela de uma camada foi apresentada no painel inferior da base

featureType

layerfeaturehighlighted

Acionado quando um elemento foi destacado na tabela de atributos (retângulo cinza). Acionar este evento manualmente força uma atualização das tabelas relacionadas se houver alguma para a camada atual

sourceTable | featureType | fid

layerfeatureselected

Acionar este evento para despoletar a seleção de um elemento numa camada, passando o ID do elemento. Após efetuada uma seleção, o evento layerSelectionChanged é acionado em retorno.

featureType | fid | updateDrawing

layerfeaturefilterselected

Acionar este evento para despoletar a filtragem de uma camada para os elementos selecionados. Deve selecionar alguns elementos antes de acionar este evento. Uma vez aplicado o filtro, o Lizmap aciona o evento layerFilteredFeaturesChanged em retorno.

featureType

layerFilteredFeaturesChanged

Acionado quando um filtro foi aplicado ao mapa para uma camada. Este evento também aciona o redesenhar do mapa e o conteúdo das tabelas de atributos.

featureType | featureIds | updateDrawing

layerFilterParamChanged

Acionado quando os parâmetros de pedido do WMS foram alterados para uma camada. Por exemplo, quando um ESTILO ou um FILTRO foi modificado para a camada.

featureType | filter | updateDrawing

layerfeatureremovefilter

Acionar este evento para remover qualquer filtro aplicado ao mapa. Uma vez executado, o evento layerFilteredFeaturesChanged é acionado de volta e o conteúdo do mapa e o conteúdo das tabelas de atributos são atualizados.

featureType

layerSelectionChanged

Acionado quando a seleção foi alterada para uma camada. Isto também aciona o redesenhar do mapa e a atualização do conteúdo da tabela de atributos

featureType | featureIds | updateDrawing

layerfeatureselectsearched

Acionar este evento para selecionar todos os elementos correspondentes às linhas apresentadas na tabela de atributos, que podem ser filtrados visualmente pelo utilizador, digitando alguns caracteres na entrada de texto de pesquisa.

featureType | updateDrawing

layerfeatureunselectall

Acionar este evento para remover todos os elementos da seleção de uma camada. Uma vez executado, o Lizmap responde com o evento layerSelectionChanged

featureType | updateDrawing

lizmapexternalsearchitemselected

Fired when the user has selected an item listed in the results of the header search input

feature

There are also some variables which are available.

Lizmap Web Client available variables

Variable name

Descrição

lizUrls.media

URL to get a media

lizUrls.params.repository

Name of the current repository

lizUrls.params.project

Name of the current project

Exemplos

Aqui está um pequeno exemplo que permite desabilitar o botão direito no Lizmap. Basta adicionar um ficheiro chamado, por exemplo, DisableRightClick.js com o seguinte código:

lizMap.events.on({
   uicreated: function(e) {
      $('body').attr('oncontextmenu', 'return false;');
   }
});
  • Se quiser que esse código seja executado para todos os projetos do seu repositório, deve copiar o ficheiro para o diretório``/home/data/rep1/media/js/default/`` em vez de para /home/data/rep1/media/js/myproject/.

Aqui está um exemplo bastante útil que permite enviar o ID do utilizador atual (e/ou outros dados do mesmo) para um campo de uma tabela em PostgreSQL, utilizando a ferramenta de edição:

var formPrefix = 'jforms_view_edition';

// Name of the QGIS vector layer fields which must contain the user info
var userFields = {
   login: 'lizmap_user_login',
   firstname: 'lizmap_user_firstname',
   lastname: 'lizmap_user_lastname',
   organization: 'lizmap_user_organization'
};


lizMap.events.on({

   'lizmapeditionformdisplayed': function(e){

      // If user is logged in
      if( $('#info-user-login').length ){
            // Loop through the needed fields
            for( var f in userFields ){
               // If the user has some data for this property
               if( $('#info-user-' + f).text() ){
                  // If the field exists in the form
                  var fi = $('#' + formPrefix + '_' + userFields[f]);
                  if( fi.length ){
                        // Set val from lizmap user data
                        fi.val( $('#info-user-' + f).text() )
                        // Set disabled
                        fi.hide();
                  }
               }
            }
      }

   }

});

In the directory lizmap-web-client/lizmap/install/qgis/media/js/ you can find examples of suitable JavaScript code; just remove the extension .example and copy them to your media/js/default/ folder to activate them. You can also find some examples in the repository https://github.com/3liz/lizmap-javascript-scripts

If you want to get the URL of a static file.

var mediaUrl = OpenLayers.Util.urlAppend(
     lizUrls.media,
     OpenLayers.Util.getParameterString({
         "repository": lizUrls.params.repository,
         "project": lizUrls.params.project,
         "path": "picture.png"
     })
);

Configuração de impressão

Para adicionar recursos de impressão ao mapa online, é necessário ativar a ferramenta de impressão através do plugin no separador Map (Configurar o mapa) e o projeto QGIS tem que ter pelo menos um compositor de impressão configurado.

A composição da impressão deve conter no mínimo um mapa.

pode adicionar:

  • uma imagem para indicação do norte

  • uma imagem com o logotipo da sua organização

  • uma legenda que será corrigida para toda a impressão (antes da versão 2.6)

  • uma escala, de preferência numérica para apresentação

  • um mapa de enquadramento, um mapa para o qual foi ativada e configurada a função Overview

  • etiquetas

Pode permitir que o utilizador modifique o conteúdo de alguns rótulos (título, descrição, comentário, etc). Para fazer isso é necessário adicionar simplesmente um identificador às etiquetas no compositor. O Lizmap irá perguntar automaticamente no explorador da internet para preencher cada campo. Se o rótulo estiver pré-preenchido no QGIS, o campo será pré-preenchido também no explorador da internet. Se for definido no QGIS “Render as HTML” para o rótulo, é possível obter um rótulo de linhas múltiplas no Lizmap.

Finalmente, a função de impressão será baseada nas escalas do mapa que foram definidas no plugin, separador Map (Configurar o mapa).

Nota

É possível excluir compositores de impressão para a web. Por exemplo, se o projeto QGIS contém 4 compositores, o administrador do projeto pode excluir 2 compositores em QGIS, propriedades do projeto, separador Servidor OWS. Assim, apenas os compositores publicados serão apresentados no Lizmap.

Permitir a impressão de temas base externos

O separador Temas base do plugin Lizmap permite selecionar e adicionar temas base externos (Configurar as camadas base). Esses temas base externos não fazem parte do projeto QGIS, a função de impressão padrão não os integra.

Para superar essa lacuna, o Lizmap oferece uma forma fácil de imprimir um grupo ou uma camada em vez do tema base externo.

Para adicionar à impressão uma camada que substitui um tema base externo, basta adicionar ao projeto QGIS um grupo ou camada cujo nome faz parte da seguinte lista:

  • osm-mapnik para OpenStreetMap

  • osm-mapquest para MapQuest OSM

  • osm-cyclemap para OSM CycleMap

  • google-satellite para Google Satellite

  • google-hybrid para Google Hybrid

  • google-terrain para Google Terrain

  • google-street para Google Streets

  • bing-road para Bing Road

  • bing-aerial para Bing Aerial

  • bing-hybrid para Bing Hybrid

  • ign-scan para IGN Scan

  • ign-plan para IGN Plan

  • ign-photo para IGN Photos

E depois adicione a(s) camada(s) que deseja imprimir como base.

Nota

A utilização deste método deve estar em conformidade com o licenciamento de temas base externos usados (Configurar as camadas base).

Para temas base OpenStreetMap, é possível utilizar um ficheiro XML para GDAL para explorar os serviços de mosaicos OpenStreetMap. A sua utilização está descrita na documentação GDAL em http://www.gdal.org/frmt_wms.html ou na publicação deste blog em http://www.3liz.com/blog/rldhont/index.php?post/2012/07/17/OpenStreetMap-Tiles-in-QGIS (atenção, o código EPSG deverá ser 3857).

Em contrapartida, se esta camada substituir um tema base externo, o mesmo deverá ser acessível por parte do QGIS-Server, mas não por parte do utilizador no Lizmap Web Client. Portanto, deve ser ocultado. Veja o capítulo Mascarar camadas individuais.

Otimização do Lizmap

Conceitos gerais

A velocidade de renderização é crucial para um webGIS, muito mais do que para uma aplicação desktop:

  • os utilizadores web esperam ter tudo disponível quase imediatamente

  • cada utilizador pode enviar vários pedidos de informação para a mesma aplicação; se houver dezenas ou centenas de utilizadores, pode perceber facilmente que otimizar sua aplicação web é uma tarefa muito importante.

É importante pensar numa publicação web para muitos utilizadores, em vez de apresentar um mapa para um único utilizador.

Por padrão, para cada camada do QGIS que é adicionada ao seu projeto Lizmap, pode escolher no plugin Lizmap se deseja ativar a visibilidade da camada na (caixa de verificação Toggled?) na inicialização da aplicação. Deve ter cuidado para não abusar desse recurso, porque se o projeto contiver p.ex. 30 camadas, o Lizmap enviará na inicialização um pedido ao servidor QGIS para cada uma delas. Se a caixa de verificação Single Tile? estiver assinalada, isso solicitará 30 imagens do tamanho da janela do navegador. Se não, o Lizmap, através dos OpenLayers, solicitará 30 séries de mosaicos (aproximadamente 250 por 250 pixeis). Cada mosaico é uma imagem e é criada em função do tamanho total da janela e do nível de zoom. Portanto, os utilizadores seguintes que solicitarem a mesma área, os mosaicos já gerados serão reutilizados. Os mosaicos podem ser armazenadas em cache através de dois sistemas não exclusivos:

  • no servidor, na máquina onde o servidor QGIS e o Lizmap estão instalados. Se o mosaico tiver sido solicitado e gerado anteriormente e não expirado, o Lizmap irá reutilizá-lo e enviá-lo-á ao cliente, evitando um novo pedido ao servidor QGIS

  • no cliente: os mosaicos serão guardados no cache do navegador, e reutilizados até expirarem. Isso evita tanto a solicitação ao servidor QGIS quanto o tráfego na Internet.

A cache do servidor tem de ser gerada. No Lizmap <3, a única forma de criar os mosaicos é fazer zoom e percorrer todo o mapa, e esperar até que todos os mosaicos tenham sido apresentados. Isso é obviamente impraticável para projetos que cobrem uma grande área, com muitos níveis de zoom. No Lizmap >=3 desenvolvemos uma ferramenta de linha de comando para gerar todos os mosaicos, ou uma seleção deles.

Para otimizar o desempenho, é importante entender como o Lizmap usa os mosaicos para serem apresentados.

Suponhamos que tenha uma ecrã de 1280 por 768 pixeis. Se tem todas as suas camadas em mosaico, o Lizmap tem, portanto, que mostrar cerca de 5 por 3 = 15 mosaicos (256 por 256 pixeis cada) por camada, e mais para um ecrã maior, comum hoje em dia. Se os mosaicos circundantes forem mostradas apenas parcialmente, o número total será ainda maior. Uma média de 20 mosaicos por camada é uma estimativa razoável. Com 30 camadas, como no nosso exemplo, isso significa um total de cerca de 20 por 30 = 600 mosaicos (portanto, 600 pedidos de informação ao servidor QGIS) por utilizador, em cada inicialização do Lizmap e para cada zoom e posição. Se tiver 10 utilizadores em simultâneo, a tarefa torna-se bastante pesada para o servidor, se a cache não foi gerada anteriormente, neste caso o servidor QGIS tem, portanto, que gerá-los. O tempo necessário para cada mosaico dependerá fortemente do desempenho do servidor e da complexidade do projeto.

O tamanho de cada mosaico dependerá de:

  • o tipo de dados (raster único ou vetor, ou combinação de várias camadas)

  • o formato de imagem escolhido (PNG, JPEG)

Um mosaico típico poderia ter à volta de 30 Kb. No nosso exemplo, o cliente descarregará aproximadamente 20 por 30 = 600 Kb por camada, o que, para 30 camadas, dará um total de cerca de 18 Mb, o que é pesado tanto para o servidor (consumo elevado de largura de banda) como para os utilizadores (lentidão, mesmo com uma ligação relativamente rápida).

Estes cálculos mostram claramente que para alcançar bons desempenhos no mapeamento web é necessário fazer escolhas e simplificar o máximo possível.

Por exemplo, se alguém prestar atenção à abordagem do Google Maps ou serviços similares, é óbvio que, além de terem servidores poderosos, eles simplificaram ao máximo possível: apenas uma série de mosaicos como camada base e muito poucas camadas adicionais (e nem todas ao mesmo tempo). Mesmo que não seja possível criar um mapa tão simples, é importante, no entanto, saber quais camadas que devem ser mostradas na inicialização do mapa e quais os compromissos aceitáveis para os seus utilizadores.

Se o seu projeto tem 50 camadas passíveis de ligar e desligar, a grande maioria dos seus utilizadores nunca irá selecionar a maior parte delas. É claro que existem casos reais de uso em que as camadas individuais devem ser apresentadas seletivamente e, portanto, não é possível agrupá-las para reduzir o número de camadas mostradas.

Para otimizar o máximo possível a sua aplicação, sugerimos que:

  • Crie projetos QGIS separados e, consequentemente, mapas Lizmap diferentes para diferentes objetivos, agrupando os dados em temas lógicos. Por exemplo, um mapa sobre o desenvolvimento urbano com provavelmente 10 camadas e um sobre ambiente, com cerca de 5 camadas, geralmente são mais legíveis, e muito mais rápido, do que um único projeto complexo com todos os dados. Adicionar uma pequena imagem para cada projeto ajudará os utilizadores a selecionar o projeto mais relevante à primeira vista. Também é possível partilhar algumas das camadas entre os diferentes projetos, através do mecanismo de incorporação do QGIS.

  • Utilize a opção Só mapas na interface web de administração. Esta opção permite ao utilizador alternar automaticamente de um mapa para outro, através do botão Projetos, mantendo tanto quanto possível a localização e o nível de zoom. Nesse caso, a página de boas-vindas do Lizmap com a lista de projetos e suas miniaturas não será apresentada e o utilizador será automaticamente direcionado para um dos projetos, de acordo com as opções do administrador.

  • Não mostrar todas as camadas na inicialização (desativar a caixa de seleção Ativar? conforme descrito acima). Somente camadas muito importantes devem ser visíveis por padrão, e os utilizadores devem ativar apenas a camada de que necessitam. Isso permite uma redução sensível no número de solicitações e do tráfego total da rede.

  • Crie grupos de camadas e utilize a opção Grupo como camada? no plugin Lizmap. Geralmente uma série de camadas do mesmo tema pode ser apresentada como um todo, com uma escolha adequada de estilos. Nesse caso, o Lizmap mostrará apenas uma caixa de seleção para todo o grupo e, mais importante, solicitará apenas uma série de mosaicos para todo o grupo, reduzindo assim o número de mosaicos e pedidos ao servidor e o volume total de dados a serem descarregados. A legenda referente ao grupo será apresentada.

  • Utilize a opção Mosaico único? para algumas camadas. Nesse caso, o Lizmap solicitará apenas uma imagem por camada, aproximadamente do tamanho da tela, em vez de uma série de mosaicos. Isto irá, portanto, reduzir significativamente o número de pedidos ao servidor. Por exemplo, no caso acima, sem as otimizações descritas, se todas as camadas forem apresentadas, cada utilizador solicitará 30 imagens (uma por camada) para cada zoom ou posição, em vez de 480. Porém, o tamanho total dos dados a serem descarregados é semelhante. Por outro lado, é muito improvável que utilizadores diferentes solicitem exatamente a mesma imagem, portanto, usar uma cache será inútil neste caso, e será assim evitado pelo Lizmap (as duas opções são mutuamente exclusivas). A escolha ideal (mosaico único versus mosaicos ) é diferente para diferentes camadas. Por exemplo, uma camada base complexa, criada pela combinação de 15 camadas individuais, será mais facilmente utilizada como um grupo (Grupo como camada?), em mosaico e em cache. Uma camada simples do tipo linha, como uma série de linhas de autocarro, pode ser apresentada como mosaico único.

  • Utilize a opção Ocultar caixas de verificação para grupos: isso evita que os utilizadores cliquem num grupo com p.ex. 20 camadas sem realmente necessitarem dele, disparando assim uma série grande de pedidos ao servidor. Em qualquer caso, evitar grupos com mais de 5-10 camadas é geralmente uma boa prática.

  • Otimize os dados e o projeto QGIS. Como mencionado acima, a publicação de um mapa na Internet vai mudar o seu ponto de vista: como já referido, é necessário ter em atenção que muitos utilizares podem fazer solicitações ao servidor em paralelo, dessa forma evitar a sobrecarga é crucial para:

    • criar um índice espacial para todas as suas camadas vetoriais

    • criar pirâmides para todas as suas camadas raster (exceto para as muito pequenas)

    • apresentar apenas dados na escala apropriada: por exemplo, apresentar uma camada detalhada de construções a 1:500.000 não faz sentido, pois a imagem é praticamente ilegível e exige demasiado esforço do servidor

    • utilize a versão simplificada de uma camada para que a mesma seja apresentada em diferentes escalas . Pode então agrupar a camada original (para ser apresentada, p. ex., em torno de 1:1,000) em versões simplificadas (para ser apresentada, p. ex., em torno de 1:10,000, 1:50,000, etc.) e Grupo como camada para permitir ao utilizador que visualize essas camadas como camada única, utilizando os dados mais apropriados em cada escala

    • Tenha cuidado com a reprojeção On The Fly (OTF). Se, por exemplo, apresentar dados em Lambert 93 (EPSG:2154) sobre um mapa base do OpenStreetmap ou Google (em Pseudo Mercator, EPSG:3857), o QGIS Server necessitará de reprojetar rasters e vetores antes de gerar o mapa. Isso pode ter um impacto nos tempos de renderização para camadas grandes e complexas. Em França, pode evitar a reprojeção utilizando o mapa de base IGN Géoportail diretamente em EPSG:2154

    • esteja ciente do fato de que certas opções de renderização (p.ex., rótulos, expressões, etc.) podem ser muito exigentes relativamente ao servidor

    • se utilizar o PostGIS, otimize-o: adicione sempre índices espaciais, índices para campos filtrados, para chaves estrangeiras, parâmetros apropriados para a configuração do PostgreSQL, possivelmente uma ligação via socket Unix em vez de TCP/IP (pode fazer isso através da utilização de serviços), etc.

    • utilize um formato de imagem apropriado. Para as camadas base, onde não necessita de transparência, JPEG é geralmente a melhor opção: os mosaicos serão menores e mais rápidos para serem descarregados. Para outras camadas, experimente PNGs com menor profundidade (16 bits ou 8 bits): para algumas simbolizações, o resultado visual pode ser o mesmo, e os mosaicos mais pequenos. Verifique se a qualidade da imagem é aceitável no seu caso

  • Atualize seu servidor. Esta é sempre uma opção, mas muitas vezes inútil se não otimizar o seu projeto como descrito acima. Em qualquer caso, um servidor de gama baixa (por exemplo, 2 Gb de RAM, 2 núcleos a 2,2 GHz) é inadequado. Um quad-core rápido com 8 Gb de RAM é o mínimo razoável. Evite instalar o servidor QGIS e o Lizmap em Windows, é mais complexo e mais lento.

Nota

No Lizmap 3 encontrará várias melhorias que ajudarão a otimizar sua instalação: * uma ferramenta para a preparação da cache do servidor, através da utilização de um protocolo WMTS. Além disso, isso permitirá utilizar camadas em cache como camadas WMTS no QGIS desktop * evitando o download automático das legendas na inicialização e em cada nível de zoom; isso será feito exclusivamente sob pedido, se a legenda é exibida, economizando assim uma solicitação por camada para cada código de otimização de zoom*.

Em detalhe: como ativar as caches

O separador Camadas do plugin Lizmap permite ativar para cada camada ou grupo como camada a cache para as imagens geradas. Este recurso não é compatível com a opção Mosaico único.

  • Ativar a cache do lado do servidor

O Lizmap Web Client pode criar dinamicamente mosaicos na cache no servidor. Esta cache é o armazenamento das imagens já geradas pelo QGIS-Server no servidor. A aplicação Lizmap Web Client gera automaticamente a cache conforme os mosaicos são solicitadas. A ativação da cache pode aliviar bastante a carga no servidor, uma vez que não são solicitados mais mosaicos ao QGIS-Server desde que já tenham sido gerados.

Para ativá-la deve:

  • marque a caixa de verificação Cache do servidor?

  • especifique o tempo de expiração de cache no servidor em segundos: Expiração (segundos)

A opção Mosaico grande permite que especifique o tamanho da imagem além de gerar um mosaico. O princípio do Mosaico grande é solicitar ao servidor uma imagem maior que a esperada, cortá-la ao tamanho da solicitação e devolvê-la ao cliente Web. Este método evita rótulos truncados nas bordas e descontinuidades entre mosaicos, mas é mais intensivo em recursos. O valor padrão é 5,5, uma imagem cuja largura e altura são iguais a 5 vezes a largura e a altura da imagem solicitada. Esta opção não se aplica a rasters.

  • Ativar a cache do lado do cliente

The Browser client cache option allows you to specify an expiration time for the tiles in the Web browser (Mozilla Firefox, Chrome, Internet Explorer, Opera, etc.) cache in seconds. When browsing the Lizmap map with the browser, it stores displayed tiles in its cache. Enable client cache can greatly optimize Lizmap because the browser does not re-request the server for tiles already in cache that are not expired. Values 0,0 and 1,1 are equivalent, and do not activate the option.

Sugerimos que defina o valor máximo (1 mês, equivalente a 24 x 3600 x 30 = 2,592,000 segundos), exceto, obviamente, para camadas cujos dados mudam frequentemente.

Nota

  • A cache deve ser ativada apenas em renderização real, quando desejar colocar o projeto em produção.

  • Os 2 modos de cache, Servidor e Cliente, são completamente independentes um do outro. Mas é claro, é importante utilizar os dois em conjunto para otimizar a aplicação e os recursos disponíveis do servidor.

Centralizar a cache com a integração de grupos e camadas de um projeto principal

No QGIS, é possível integrar num projeto, grupos ou camadas de outro projeto (que será chamado «pai»). Esta técnica é interessante porque permite definir as propriedades das camadas apenas num projeto e utilizá-las em várias outras, por exemplo, para temas base (Nos projetos «filho» que integram essas camadas, não é possível alterar as propriedades ).

O Lizmap utiliza esse recurso para centralizar a cache de mosaicos. Para todos os projetos filho que utilizam camadas integradas do projeto pai, o Lizmap solicita ao QGIS-Server mosaicos do projeto pai, não dos projetos filho. A cache será centralizado no projeto pai, e todos os projetos filhos que utilizam essas camadas beneficiam da cache partilhada.

Para utilizar este recurso, deve:

  • publicar o projeto QGIS pai com o Lizmap

    • deve escolher a extensão correta anunciada no separador Servidor OWS das propriedades do projeto, porque esta extensão será reutilizada de forma idêntica em projetos filho.

    • deve configurar a cache por forma a que as camadas sejam integradas. Além disso, tenha em atenção as opções escolhidas aqui (formato de imagem, mosaico grande, expiração) para utilização como tal nos projetos filho.

    • é possível ocultar o projeto da página principal do Lizmap através da caixa de verificação Ocultar o projeto no Lizmap Web Client no separador “Mapa” do plugin.

  • abra o projeto filho e integre camadas ou grupos nesse projeto, por exemplo ortofotos. Para isso deve:

    • verificar se a extensão anunciada no QGIS / propriedades do projeto / Servidor OWS é exatamente igual à do projeto pai.

    • configurar a cache para a camada integrada com exatamente as mesmas opções que as selecionadas a partir do projeto pai: tamanho da imagem, expiração, mosaico grande.

    • definir o id Lizmap do repositório de origem do projeto pai (de acordo com o configurado na interface de administração do Lizmap Web Client).

    • o código do «projeto de origem» (o nome do projeto QGIS pai sem a extensão .qgs) é inserido automaticamente para camadas e grupos integrados.

  • Publique o projeto filho no Lizmap Web Client como habitual.

Mascarar camadas individuais

Pode excluir camadas da sua publicação através do separador Servidor OWS das propriedades do projeto QGIS. Nesse caso, as camadas não se encontrarão disponíveis no Lizmap. Através desse método, não é possível utilizar uma camada na função Localizar por camada nem apresentar a camada no mapa.

Para superar essa lacuna, o Lizmap oferece uma maneira simples para não apresentar algumas camadas.

Não para apresentar uma ou mais camadas do projeto QGIS na legenda do mapa Web, basta colocar essas camadas em um grupo chamado «hidden». Todas as camadas desse grupo não serão apresentadas na aplicação Web.

Este recurso pode ser utilizado para:

Apresentar tabela de atributos para camadas do Lizmap

Princípio

O Lizmap está desenhado para apresentar dados espaciais no mapa principal e é também possível proporcionar aos utilizadores a visualização dos dados de um objeto através do recurso «popup» (uma pequena popup contendo os dados dos objetos é mostrada sempre que o utilizador clica no mapa). Veja Como configurar as popups

Por vezes isso não é suficiente, e como editor de mapas, gostaria que o utilizador visse todos os dados de uma camada específica, como é possível fazer no QGIS, abrindo a tabela de atributos. Desde a versão 2.11 do Lizmap, é possível proporcionar tal recurso para qualquer camada vetorial publicada no seu mapa. (Este recurso foi fortemente melhorado desde o Lizmap 3.0. Muitos recursos descritos abaixo apenas estão disponíveis no Lizmap 3.0)

Ativar a ferramenta de tabela de atributos para uma camada vetorial

No separador Ferramentas do diálogo do plugin do Lizmap, há um grupo chamado «Tabela de atributos» que mostra uma tabela e alguns campos de formulário dedicados para adicionar ou remover camadas vetoriais.

O Lizmap Web Client utiliza o Web Feature Service (WFS) para obter dados de uma camada vetorial QGIS e apresentá-los na interface da web. Por isso, a primeira coisa a fazer sempre que desejar apresentar uma camada de dados no cliente web é publicar a camada vetorial através do WFS. Para isso, abra a caixa de diálogo Propriedades do projeto, separador Servidor OWS e adicione a camada como «publicada», marcando a caixa de verificação correspondente na tabela Capacidades WFS e gravar o projeto. Pode também ajustar o número de casas decimais para diminuir o tamanho dos dados a serem extraídos do WFS (mantenha 8 apenas para um mapa publicado em graus e mantenha 1 para projeções de mapa em metros)

Após uma camada publicada através de WFS, pode adicioná-la na tabela de camadas de atributos. Algumas opções estão disponíveis para ajustar os recursos disponibilizados ao utilizador:

  • Camada: Escolha uma das camadas vetoriais (espaciais ou não). Pode ser qualquer formato de camada vetorial: GeoJSON, Shapefile, PostGIS, CSV, etc.

  • ID único: A ferramenta de tabela de atributos tem de conseguir definir cada elemento como único. Recomendamos vivamente que adicione esse campo se a sua camada ainda não tiver nenhum. Geralmente, o campo ID único contém inteiros. Se a camada não tiver esse tipo de campo, pode criá-lo facilmente com a Calculadora de campo. Escolha o tipo de campo correto a partir da caixa de combinação.

  • Campos a ocultar Existem 2 formas de ocultar campos na tabela de atributos publicada.

    • Na caixa de diálogo propriedades da camada vetorial da camada vetorial QGIS, no separador Campos, pode desmarcar a caixa de verificação na coluna WFS para os campos que não deverão ser publicados. Isto significa que estes campos não serão publicados através do protocolo WFS. Esta é a maneira mais simples e mais segura de restringir a publicação de alguns campos (por exemplo, para ocultar campos sensíveis)

    • Pode utilizar a opção Campos a ocultar para ocultar os campos de dados na apresentação da tabela de atributos. Os campos ocultos não serão visíveis para o utilizador final, mas ainda estarão disponíveis para o Lizmap Web Client. Deve utilizar esta opção para ocultar o campo ID único. Se utilizar a primeira forma (desmarcando a coluna WFS), o ID exclusivo não será utilizável pelo Lizmap e alguns dos recursos da tabela de atributos não funcionarão corretamente.

Utilizando relações com a ferramenta de camadas de atributos

No QGIS, pode configurar relações entre camadas, na caixa de diálogo Propriedades do projeto. Se publicar no Lizmap mais de uma camada na ferramenta de atributos das camadas e se algumas camadas fizerem parte de uma relação, o utilizador final poderá ver tabelas subordinadas na tabela de atributos de camadas mãe. Um clique numa das linhas da tabela mãe irá despoletar o filtro de conteúdo na tabela filha.

Por exemplo, poderia ter uma camada respeitante a cidades, e uma camada filha de edifícios públicos. Clicando numa cidade na tabela de atributos fará com que a tabela filha de edifícios públicos atualize seu conteúdo apenas com os edifícios públicos correspondentes à cidade selecionada.

Pode usar as relações «muito-para-muito» (N:M) no QGIS desde a versão 2.14 mas o Lizmap ainda não as usa automaticamente. Tem também de definir as relações no plugin Lizmap. Em muitos casos, as relações N:M são muito úteis. Por exemplo, pode ter as seguintes três camadas vetoriais no seu projeto:

  • Linhas de elétrico: este nome de camadas «Linhas» contém um elemento por linha de elétrico, e tem um campo ID único tram_id

  • Paragens do elétrico: esta camada chamada «Paragens» contém um elemento por paragens de elétrico, com um campo ID único chamado stop_id

  • Tabela de correspondência entre Linhas e Paragens: esta camada chamada «Pivot» é uma tabela dinâmica entre linhas de elétrico e paragens, uma vez que uma paragem pode ser utilizada por mais de uma linha e uma linha serve muitas paragens. Os campos são os seguintes : tram_id, stop_id e order que define a ordem de paragem na linha.

Pode adicionar 2 relações nas propriedades do projeto QGIS: uma entre Linhas e Pivot utilizando o campo tram_id e outra entre Paragens e Pivot utilizando o campo stop_id.

No Lizmap, adicionámos uma forma simples de configurar a relação de N:M. Pode simplesmente

  • Crie as duas relações tal como descritas acima na caixa de diálogo de propriedades do projeto QGIS, separador Relações

  • Adicione as camadas Linhas e Paragens na ferramenta de atributos das camadas

  • Adicione a camada Pivot na ferramenta de atributos das camadas com a opção Tabela dinâmica marcada

O Lizmap Web Client irá então tratar a relação como uma relação de N:M:

  • A tabela dinâmica será apresentada para cada tabela de atributos mãe e mostrará apenas as filhas correspondentes.

  • O recurso de filtro baseado nas camadas de atributos ativará o filtro em cascata relativo à tabela dinâmica e à outra tabela mãe. Por exemplo, se o utilizador usar o filtro para mostrar apenas uma linha de elétrico, o Lizmap também mostrará apenas as paragens correspondentes no mapa e na tabela de atributos Paragens

Tabela de atributos e edição

elaborar

Edição de dados no Lizmap

Princípio

Desde a versão 2.8, é possível atribuir permissão aos utilizadores para edição de dados espaciais e de atributos a partor da interface do Lizmap Web Client para camadas PostgreSQL ou Spatialite do projeto QGIS. O plugin Lizmap permite adicionar uma ou mais camadas e escolher quais ações que serão possíveis para cada uma delas através da interface web:

  • criar elementos

  • modificar atributos

  • modificar a geometria

  • apagar elementos

O formulário Web apresentado ao utilizador para preencher a tabela de atributos suporta as ferramentas de edição disponíveis no separador campos das propriedades da camada vetorial do QGIS. Pode configurar uma lista de valores, ocultar uma coluna, torná-la não editável, utilizar uma caixa de verificação, uma área de texto, etc. Toda configuração é feita com o rato, tanto no QGIS como no plugin Lizmap.

Além disso, o Lizmap Web Client deteta automaticamente o tipo de coluna (integer, real, string, etc.) e adiciona as verificações e os controlos necessários nos campos.

Exemplos de utilização

  • Uma cidade deseja que os cidadãos identifiquem problemas visíveis na estrada: lixo não recolhido, iluminação danificada, destroços a serem removidos. O administrador do projeto QGIS cria uma camada dedicada a recolher dados e a apresentá-los para todos.

  • Um gabinete de engenharia quer permitir que os parceiros do projeto tracem observações sobre as áreas do mesmo. É possível a adição de polígonos numa camada apropriada.

Configuração da ferramenta de edição

Para permitir a edição de dados no Lizmap Web Client, deve:

  • Deve existir pelo menos uma camada vetorial tipo PostGIS ou Spatialite no projeto QGIS.

  • Configurar as ferramentas de edição para essa camada no separador campos das propriedades da camada. Isso não é necessário, mas recomendado para controlar os dados inseridos pelos utilizadores.

  • Adicione a camada à ferramenta através do plugin

Aqui estão os passos detalhados:

  • Se necessário, crie uma camada na sua base de dados com o tipo de geometria desejado (ponto, linha, polígono, etc.)

    • pense em adicionar uma chave primária: isso é essencial!

    • A coluna da chave primária deve ser do tipo incremento automático. Por exemplo serial para PostgreSQL.

    • pense em adicionar um índice espacial: isso é importante para o desempenho

    • *crie campos estritamente necessários para atributos *: se possível, use nomes de campo simples!

Consulte a documentação do QGIS para saber como criar uma camada espacial numa base de dados PostGIS ou Spatialite: http://docs.qgis.org/html/en/docs/user_manual/index.html

  • Definir as ferramentas de edição para os seus campos da camada

    • Abra as propriedades da camada clicando duas vezes no nome da camada na legenda.

    • Vá para o separador Campos.

    • Selecione a Ferramenta de edição na coluna Widget de edição para cada campo da camada:

      • Para ocultar um campo, escolha Oculto. O utilizador não visualizará o campo no formulário. Não haverá inserção de conteúdo. Use-o como chave primária.

      • Para adicionar um campo apenas de leitura, desmarque a caixa de verificação Editável.

      • Caso especial da opção Valor da relação. Pode utilizar esta opção para um mapa Lizmap. Para que os utilizadores tenham acesso às informações da camada externa que contém os dados, deve habilitar a publicação da camada como uma camada WFS no separador Servidor OWS das propriedades do projeto QGIS*.

      • etc.

    • **Evoluções QGIS 2 **:

      • Para ocultar as colunas na popup Lizmap, deverá agora desmarcar a caixa de verificação WMS para cada campo a ocultar (esta coluna encontra a seguir à coluna Nome alternativo)

      • O Lizmap Web Client ainda não consegue utilizar para geração do formulário o «ficheiro QT Designer UI». Portanto, utilize apenas o modo Gerar automaticamente ou a «ferramenta de desenho de arrastar e soltar» para edição de camadas.

Nota

All the editing tools are not yet managed by Lizmap Web Client. Only the following tools are supported: Text edit, Classification, Range, Value Map, Hidden, Check Box, Date/Time, Value Relation, Relation Reference. If the tool is not supported, the web form displays a text input field.

Nota

Para tornar um campo obrigatório, deverá defini-lo como NOT NULL nas propriedades da tabela, no nível da base de dados.

Nota

É necessário ter algum cuidado caso a camada contenha valores do tipo Z ou M, infelizmente o Lizmap irá definir os mesmos como «0», utilizando assim o valor padrão para os gravar na base de dados.

  • Adicione a camada na tabela «Camadas para edição» localizada no separador «Ferramentas» do plugin Lizmap:

    • Selecione a camada na lista de valores

    • Marque as ações que pretende ativar:

      • Criar

      • Modificar atributos

      • Modificar geometria

      • Eliminar

    • Adicione a camada na lista com o botão «Adicionar camada».

../_images/features-edition-table.png

Reutilização de dados das camadas para edição

As camadas selecionadas para a ferramenta de edição são «camadas como as outras», o que significa que:

  • Os estilos e etiquetas QGIS são aplicados a essas camadas. Pode criar estilos e etiquetas que dependam de um valor de uma coluna da camada.

  • Se pretender disponibilizar a ferramenta de edição, mas não permitir que os utilizadores visualizem os dados da camada on-line (e, portanto, as adições de outros utilizadores): pode simplesmente ocultar camadas de edição colocando-as num diretório oculto. Veja Mascarar camadas individuais

  • As camadas são imprimíveis se não estiverem mascaradas.

  • Os dados são armazenados numa camada do projeto. O administrador pode recuperar esses dados e utilizá-los posteriormente.

Nota

PostGIS ou Spatialite? Para centralizar od daos, recomendamos utilizar uma base de dados PostGIS para armazenamento. Para as camadas Spatialite, tenha cuidado para não substituir o arquivo Spatialite armazenado no diretório Lizmap do servidor com o que existe localmente: não se esqueça de fazer um backup do arquivo do servidor antes de uma nova sincronização com o diretório local.

Nota

Utilizando a cache: para utilizar a cache do servidor ou do cliente em camadas para edição, faça-o conscientemente: os dados não serão visíveis para os utilizadores até que a cache não tenha expirado. Sugerimos não ativar a cache em camadas para edição.

Nota

Apenas no Lizmap 3

Adicionar ficheiros e imagens a elementos

Use the media/upload folder relative to the project

Com o Lizmap 3, é possível fazer o upload dos seus ficheiros, incluindo imagens, para cada elemento, durante a edição on-line; Para conseguir isso, é necessário:

  • Configure a edição para a camada, com um ou mais campos com o Widget de edição «Fotografia» ou «Nome do Ficheiro». Por exemplo, digamos que o nome do campo é «foto»

  • Crie uma pasta na raiz do diretório do projeto QGIS: media/ e uma sub-pasta media/upload (obviamente é necessário fazer isso localmente no seu computador e lado do servidor).

  • Atribua ao utilizador Apache (geralmente www-data) permissões de escrita na pasta de upload, para que o mesmo possa criar ficheiros e pastas dentro de media/upload:

    chmod 775 -R media/upload && chown :www-data -R media/upload
    
  • Verifique o ficheiro php.ini para ver se as variáveis post_max_size e max_upload_size estão corretamente definidas (por padrão, o php só permite o upload de arquivos de até 2 Mbytes)

O Lizmap criará então pastas para armazenar os dados, dependendo do nome da camada, nome do campo, etc. Por exemplo, um arquivo seria armazenado na pasta media/upload/PROJECT_NAME/LAYER_NAME/FIELD_NAME/FILE_NAME.EXT` e uma imagem em media/upload/environment/observations/species_picture/my_picture.png.

Obviamente, o Lizmap conseguirá apresentar esta imagem (ou qualquer outro ficheiro) na popup, tal como o mesmo foi armazenado na pasta de media. Veja Utilização de popups

Use a specific destination folder

Since Lizmap 3.2, you can override the default destination folder media/upload/PROJECT_NAME/LAYER_NAME/FIELD_NAME/FILE_NAME.EXT by manually setting the path where to store the media, relatively to the project. To do so, you must use the External resource field edit widget, and configure it with:

  • a Default path written relative to the project. For example ../media/images/ if you want to store this field files in a folder media situated alongside the project folder. You can also choose set a path inside the project media folder. For example media/my_target_folder/.

  • chek the Relative path checkbox, with the default Relative to project path option

  • if the field should store a image, you should also check the Integrated document viewer checkbox, with the type Image

This allow to store the sent media files and images in a centralized folder, for example a directory media at the same level than the Lizmap repositories folders:

  • media

    • images <– to store images in this folder, use: ../media/images/

    • pdf

  • environment

    • trees.qgs

    • trees.qgs.cfg

    • media

      • tree_pictures/ <– to store images in this folder, use: media/tree_pictures/

Camadas filtradas - Filtragem de dados em função dos utilizadores

Apresentação da função

Normalmente, a gestão dos direitos de acesso aos projectos Lizmap é feita através do diretório. Neste caso, a configuração é feita através da interface de administração do Lizmap Web Client. Veja Definir as permissões de cada grupo. Isso ocultará completamente alguns projetos com base nos grupos de utilizadores, mas requer um diretório e gestão de projetos.

Em vez disso, o recurso de filtragem aqui apresentado permite que publique um único projeto QGIS e filtre os dados apresentados no mapa com base no utilizador ligado ao sistema. É possível filtrar apenas camadas vetoriais porque o Lizmap utiliza, para o efeito, uma coluna da tabela de atributos.

Atualmente, o processo de filtragem utiliza o ID do grupo de utilizadores ligado à aplicação Web. O mesmo estará ativo para todas as solicitações feitas ao servidor QGIS e, portanto, diz respeito a:

  • as imagens de camadas vetoriais apresentadas no mapa

  • as popups

  • as listas de recursos Localizar por Camada. Veja Adicionar a função de localização

  • listas de valores Edição de formulários de Valor da Relação. Veja Edição de dados no Lizmap

  • próximos recursos (apresentação da tabela de atributos, recursos de pesquisa, etc.)

Está disponível um vídeo tutorial em: https://vimeo.com/83966790

Configuração da ferramenta de filtragem de dados

Para utilizar a ferramenta de filtragem de dados no Lizmap Web Client, deve:

  • utilizar o QGIS 2 ou superior no servidor

  • ter acesso à interface de administração do Lizmap Web Client

Aqui estão os passos detalhados para configurar este recurso:

  • Conhecer os identificadores dos grupos de utilizadores configurados na interface de administração do Lizmap Web Client. Para isso, deve ir para a interface de administração SISTEMA ‣ Grupos de utilizadores e permissões: o ID aparece entre parênteses após o nome de cada grupo (sob o título Grupos de novos utilizadores)

  • Para todas as camadas vetoriais para as quais se deseje aplicar um filtro de dados, basta adicionar uma coluna de texto que contenha o ID do grupo em cada linha (não o nome !!) que tem o direito de visualizar essa linha.
    • Preencha esta coluna para cada linha da tabela de atributos com o identificador do grupo que tem o direito de ver a linha (utilizando a calculadora de campo, por exemplo).

    • É possível definir all como valor em algumas linhas para desativar o filtro: Todos os utilizadores visualizarão os dados dessas linhas.

    • Se o valor nesta coluna para uma linha não corresponder a um grupo de utilizadores, os dados não serão apresentados para nenhum dos utilizadores.

  • Adicione a camada à tabela Filtrar camada por utilizador localizada no separador Ferramentas do plugin Lizmap:

    • Selecione a camada na lista de valores disponíveis

    • Selecione o campo que contém o identificador de grupo para a camada

    • Adicione a camada à lista com o botão Adicionar camada

    • Para remover uma camada da tabela, selecione a mesma e clique no botão Remover camada

  • Desative a cache tanto do lado do cliente como do lado do servidor para todas as camadas filtradas. Caso contrário, os dados apresentados não serão atualizados entre cada ligação ou fim de sessão por parte do utilizador!

Série Temporal - Animação de camadas vetoriais temporais

Pode criar animações com os seus vetores, desde que tenha pelo menos uma camada com uma coluna date/time válida. Deve selecionar através do plugin:

  • pelo menos uma camada com data/hora

  • a coluna com data/hora

  • o número e o tipo de unidades de tempo para cada etapa da animação

  • a duração, em milissegundos, de cada etapa (o padrão é apresentar cada bloco de 10 dias num segundo)

  • um campo para funcionar como um rótulo flutuante ao passar o rato sobre os objetos

  • opcionalmente, um ID e um título para grupos de objetos.

Quando tudo estiver pronto, a sua aplicação web mostrará o símbolo de um relógio; Ao clicar nele abrir-se-á um pequeno painel que lhe permitirá mover-se entre as etapas, ou executar toda a animação. Na inicialização, a aplicação carregará toda a tabela, portanto, se tiver milhares de objetos, talvez seja necessário aguardar alguns segundos até que a aplicação esteja disponível.

Um tutorial em vídeo está disponível em: https://vimeo.com/83845949. O mesmo mostra todas as etapas necessárias para utilizar a funcionalidade.

Site de demonstração: http://demo.lizmap.3liz.com/index.php/view/?repository=rep6

Nota

Vários formatos diferentes de data/hora são aceitáveis (os mesmos que são suportados pela biblioteca JavaScript DateJS). Pode verificar se o seu formato é suportado introduzindo-o nesta página: http://www.datejs.com/

Statictics with Dataviz

In the 3.2 version of Lizmap, a way to show charts in Lizmap is implemented. You will be able to create a few kinds of graph (scatter, pie, histogram, box, bar histogram2d, polar) with only a few clicks.

../_images/publish-01-dataviz-interface.png

You can easily configure it with the plugin Lizmap in Qgis in the Dataviz panel.

../_images/publish-02-dataviz-interface-plugin.png

1 : You have the possibility to change the value to dock, bottomdock or right-dock these options change where your dataviz panel will be located in your Lizmap’s project. You have 3 positions available, at the right of the screen, bottom and right.

2: Here, you have the possibility to write in HTML to change the style of the container of your charts. If you are proficient in the HTML language, there are a lot of possibilities and you can customize your container the way you want.

../_images/publish-03-dataviz-html-example.png

3: This table contains all the layers you have configured to be able to show statistics in your Lizmap project. All details about the configuration are shown in this table. You have to use it if you want to remove a layer, you will need to click on a line of the table then click on the button remove a layer at the bottom on the panel.

4: To add a graph, you have to configure it in this part of the panel.

  • Type : You can choose the type of your graph, the available options are - scatter, box, bar, histogram, histogram2d, pie and polar.

  • Title : Here you can write the title you want for your graph.

  • Layer : You chose which layer you want to make a graph with.

  • X field : The X field of your graph.

  • Y field : The Y field of your graph.

  • Group? : For a few types of charts like “bar” or “pie”, you can chose to aggregate the data in the graph. There are a few aggregate functions available - average(avg), sum, count, median, stddev, min, max, first, last

  • Color field : you can choose or not a color field to customize the color of each category of your chart. If you want to do it, you need to check the checkbox, then chose the field of your layer which contains the colors you want to use. The color can be written like “red” or “blue” but it can be an HTML color code like “#01DFD7” for example.

  • 2nd Y field : You can add a second Y field, it does not work for every type of graph, it’s only working for histogram2d.

  • Color field 2 ? : You can chose the color of the second Y field the same way you chose the one for his first Y field.

  • Display filtered plot in popups of parent layer : if you check this checkbox, the children of your layer will get the same graph as the parent plot but filtered only for them. It’s useful if you want to see the statistics of one entity instead of all.

  • Only show child : The main graph will not be shown in the main container and only the filtered graph of the relation of the layer will be displayed in the popup when you select the element.

When all the configuration is done, you have to click on the button add a layer at the bottom of the window.

Atlas - sequence of entities of a chosen layer

This feature let you chose and configure a layer to make her into an atlas in your Lizmap project.

../_images/publish-04-atlas-plugin-interface.png

Layer options :

  • the atlas is enabled or not in your project

  • you need to chose the layer you want your atlas on

  • select the primary key field, it must be an integer

  • check if you want to display the layer description in the dock of your atlas

  • chose the field who contains the name of your features, it will be shown instead of the primary key in the list of features

  • your atlas will be sorted according to this field

  • you can chose to highlight the feature selected by the atlas, it will change every time it’s switching to a new feature

  • chose between a zoom on the feature or to make it the center of your map

  • you can chose to display the popup in the feature in the atlas container or not

  • check if you want to activate filter on the feature selected by the atlas, it will hide all other features of the layer and only show the one selected

Atlas options:

  • check if you want to open the atlas tool when you open your project

  • you can chose the size of the atlas dock (20%-50%)

  • you can select the duration between each step when your atlas is in auto-play mode

  • check if you want to launch the auto-play mode when you open your project

Alterando a imagem padrão de um projeto no site de repositórios e projetos

Por padrão, a seguinte imagem é apresentada para um projeto:

../_images/mapmonde.png

Pode alterar essa imagem padrão adicionando na mesma pasta de projeto uma imagem .png com o nome exato do projeto e a extensão. Exemplo: Se o nome do projeto é montpellier.qgs pode adicionar uma imagem chamada montpellier.qgs.png. Repare que o nome da imagem também contem a extensão do projeto.