Configuration avancée

Créer une carte de localisation

Pour ajouter une carte de localisation, ou carte miniature, dans la carte Lizmap, il suffit de :

  • créer un groupe indépendant dans le projet QGIS qui s’appelle Overview (avec la majuscule à la 1ère lettre)

  • Y ajouter des couches, par exemple une couche de communes, un fond relief allégé, etc.

L’ensemble des couches et groupes du groupe Overview ne sera pas affiché dans la légende de la carte Lizmap. Ils seront seulement utilisés pour la carte de localisation.

Il est conseillé d’utiliser :

  • des couches vectorielles légères et simplifiées si nécessaire

  • d’utiliser une sémiologie adaptée : traits fins et étiquettes cachées ou petites

Voici un exemple d’utilisation :

../_images/features-overview.png

Ajouter la fonction de localisation

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

L’idée de cet outil est de présenter à l’utilisateur de Lizmap Web Client une liste déroulante qui permet de zoomer automatiquement sur un ou plusieurs objets spatiaux de la couche.

Cas d’utilisation

Prenons comme exemple une couche vectorielle spatiale Quartiers contenue dans le projet QGIS. On choisit d’ajouter ces quartiers dans l’outil Localiser par couche, pour permettre aux utilisateurs de Lizmap Web Client de se positionner rapidement sur un des quartiers.

Une fois cette couche ajoutée dans l’outil Localiser par couche, une liste déroulante contenant les quartiers s’affiche sur l’interface web de Lizmap.

Lorsque l’utilisateur de la carte web sélectionne un nom dans cette liste, la carte se recentre automatiquement sur le quartier sélectionné, et la géométrie du quartier s’affiche (en option).

Pré-requis

Note

La ou les couches qu’on souhaite utiliser doivent être publiée(s) comme couche WFS : cocher la case correspondante dans l’onglet Serveur OWS de la partie Capacités WFS des propriétés du projet QGIS.

Fonctionnement

Pour ajouter une couche à cet outil :

  • choisissez la couche via la première liste déroulante parmi les couches vectorielles du projet,

  • puis la colonne qui contient le libellé que vous souhaitez afficher dans la liste déroulante.

  • Si vous souhaitez que la géométrie liée aux objets soit aussi affichée sur la carte lorsque l’utilisateur sélectionne un élément de la liste, alors on coche l’option Afficher la géométrie.

  • Enfin cliquer sur le bouton Ajouter la couche pour l’ajouter dans la liste.

Pour supprimer une des couches déjà configurée :

  • sélectionner la ligne en cliquant sur l’une des cases de la couche à supprimer

  • cliquer sur le bouton Enlever la couche.

Listes hiérarchiques

Si on reprend l’exemple des quartiers, il peut être intéressant de proposer aussi à l’utilisateur une liste déroulante des sous-quartiers. On souhaite que lorsque l’utilisateur choisit un quartier, alors la liste déroulante des sous-quartiers soit automatiquement filtrée pour n’afficher que les sous-quartiers du quartier choisi.

Pour cela, il existe 2 méthodes :

  • soit on a 2 couches vectorielles distinctes : une pour les quartiers, et une pour les sous-quartiers. Alors il faut utiliser une jointure attributaire entre les 2 couches pour activer le filtrage automatique des listes dans Lizmap.

  • soit on n’a qu”1 seule couche des sous-quartiers, et alors on peut spécifier via le plugin l”attribut de regroupement. Deux listes déroulantes seront créées au lieu d’une seule dans l’application Web.

Note

Au maximum 3 couches du projet peuvent être ajoutées à l’outil Localiser par couches.

Note

N’oubliez pas de vérifier que votre configuration de QGIS Server est la bonne (dans Lizmap : Mon compte -> Configuration Lizmap -> vérifiez que la version de QGIS Server est la bonne, si ça n’est pas le cas, vous pouvez utiliser le bouton “Modifier” plus bas). Si la configuration n’est pas correcte la localisation ne le sera pas non plus !

Requête spatiale

Dans les options de carte, vous pouvez configurer les recherches d’adresses basées sur des services web externes (nominatim, google, IGN France). Voir « Configurer la carte ». De plus, vous pouvez ajouter des moyens de recherche spatiale à Lizmap. Cela signifie que vous autoriserez les utilisateurs à effectuer des recherches avec des données spatiales, telles que les pays, les points d’intérêts, etc. Vous avez 2 manières pour ajouter des moyens de recherche dans Lizmap :

  • Depuis la version 3.1, vous pouvez utilisez le plugin « Quickfinder » pour configurer une recherche de données par projet Qgis.

  • Depuis la version 3.2, vous pouvez créer une table ou une vue « Recherche Lizmap » dans votre base de données PostgreSQL pour stocker les données de recherches pour tous vos projets Lizmap.

Plugin QuickFinder

Le but de ce plugin est de fournir une recherche rapide au sein d’un grand volumes de données, en réalisant des recherches dans un fichier qtfs généré par QGIS Desktop.

Pré-requis

  • Vous devez avoir installé a minima la version « 7.x » de « PHP » sur votre serveur Lizmap.

  • Cela est disponible depuis la version 3.1 de Lizmap Web Client.

Configuration

Depuis QGIS :

  • Installer le plugin QuickFinder

  • 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

Note

Seuls les formats WKT ou Extent pour le stockage des géométries fonctionne, car le format binaire (WKB) ne peut pas être décodé par LWC.

Dans LWC (disponible depuis la version 3.1) :

  • placez le fichier de base de données à côté du projet QGIS, utilisez l’outil de recherche (champs de saisie) et effectuez un zoom sur la fonction choisie.

Les médias dans Lizmap

Principe d’utilisation

Il est possible de mettre à disposition des documents à travers Lizmap. Pour cela il faut simplement :

  • créer un répertoire intitulé media (en minuscule et sans accents) au même niveau que le projet QGIS

  • y mettre des documents : des images, des rapports, des pdfs, des vidéos, des fichiers HTML ou texte.

  • Les documents contenus dans ce répertoire « media » doivent être « synchronisés comme toutes les autres données ».

  • on peut utiliser des sous-répertoires par couche ou par thème : l’organisation du contenu du répertoire media est libre

Ensuite dans Lizmap Web Client, on peut offrir un accès à ces documents pour 2 choses :

  • les popups : le contenu d’une ou plusieurs colonne pour chaque géométrie peut préciser le chemin vers le média. Par exemple une colonne photo, ou bien une colonne pdf

  • le lien indiqué pour chaque groupe ou couche via l’onglet Couches du plugin Lizmap

Le détail de ces utilisations est précisé ci-dessous.

Utilisation dans les popups

Principe

Comme décrit dans l’introduction ci-dessus, on peut utiliser un chemin de media dans les données de la couche spatiale.

Par exemple, si on souhaite que les popups liées à une couche affichent une photo qui dépende de chaque objet, il suffit de créer une nouvelle colonne qui contiendra le chemin de media vers la photo pour chaque ligne de la table attributaire de la couche. Et ensuite d’activer les popups pour cette couche.

Exemple

Voici pour l’exemple la table attributaire d’une couche paysage configurée pour afficher des photos dans la popup. L’utilisateur a créé une colonne photo dans laquelle il place le chemin vers les photos, et une colonne pdf dans laquelle il met les chemins vers un fichier pdf décrivant l’objet correspondant à chaque ligne.

id

nom

description

photo

pdf

1

Marais

blabla

media/photos/photo_1.png

media/docs/paysage-1.pdf

2

Plage

blibli

media/photos/photo_2.png

media/docs/paysage-2.pdf

3

Lande

bloblo

media/photos/photo_3.png

media/docs/paysage-3.pdf

Note

Dans cet exemple, on voit que les noms des fichiers des photos et des PDF sont normés. Nous conseillons de suivre cet exemple, car cela permet d’utiliser la calculatrice de QGIS pour créer ou mettre à jour les données des colonnes de média pour l’ensemble de la couche de manière automatisée.

Résultat

Voici les règles d’affichage dans la popup

  • si le chemin pointe vers une image, l’image sera affichée dans la popup. Un clic sur l’image affichera l’image originale dans un nouvel onglet.

  • si le chemin pointe vers un fichier texte ou un fichier HTML, le contenu du fichier sera affiché dans la popup.

  • pour les autres types de fichiers, la popup affichera un lien vers le document, que les utilisateurs pourront télécharger en cliquant sur le lien.

Illustration

Ci-dessous, une illustration d’une popup Lizmap affichant une photo, un texte et un lien dans la popup :

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

Configurer les popups dans Lizmap

Activer les popups dans Lizmap

Via le plugin, on peut activer les popups pour une couche ou pour un groupe qui a été configuré comme « Groupe comme une couche »

Pour cela il suffit de cliquer sur la case à cocher Activer les popups de l’onglet Couches du plugin Lizmap. Pour les groupes comme une couche, il faut activer l’option pour le groupe et pour toutes les couches filles qu’on souhaite voir dans la popup. Dans ce cas, seules les couches filles qui ont aussi l’option Popup activée seront visibles.

Il existe trois types de popup :

  • auto

  • lizmap

  • qgis

Dans l’application Lizmap Web Client, un clic sur un objet de la carte lancera l’ouverture de la popup si (et seulement si) :

  • la couche est cochée dans la légende, et donc visible

  • la popup a bien été activée via le plugin pour la couche ou le groupe

  • l’utilisateur a bien cliqué sur un endroit de la carte où on voit de la donnée pour l’une des couches avec les popups actives.

Note

Pour les couches ponctuelles, vous devez cliquer au milieu du point pour afficher la popup.La tolérance peut être réglée dans l’onglet « Options de carte » puis « Outils de la carte ».

Vous pouvez mettre à jour où la popup est affichée dans l’interface web dans « Options de carte » puis « Interface ». Vous pouvez choisir entre :

  • dock

  • minidock

  • map

  • bottomdock

  • right-dock

Popup automatique

Le système de popup auto de Lizmap Web Client affiche qui présente les colonnes de la table attributaire en ligne dans 2 colonnes Champ et Valeur, comme ci-dessous :

Champ

Valeur

id

1

nom

Un nom

description

Cet objet …

photo

:-)

On peut modifier un peu les informations affichées via QGIS, et aussi afficher des images ou des liens.

Configuration simple des popups

Via le plugin, si on clique seulement sur la case à cocher Activer les popups sans modifier le contenu via le bouton Contenu, alors c’est l’affichage par défaut ou mode simple qui est utilisé.

On peut néanmoins jouer sur plusieurs choses dans QGIS et via le plugin Lizmap pour paramétrer les champs qu’on veut afficher, renommer les champs, et même afficher des images, des photos ou des liens vers des documents internes ou externes.

Masquer une colonne ou modifier son nom

On peut utiliser les outils de l’onglet Champs des propriétés de la couche:

  • Pour ne pas afficher une colonne dans la popup: il faut décocher la case WMS pour les champs à masquer. Cette colonne se trouve tout à droite

  • Pour modifier le nom qui sera affiché pour la colonne : colonne Alias

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

Utilisation de médias : images, documents, etc.

Si on utilise des chemins vers les documents du répertoire media, on peut

  • afficher l’image correspondante

  • afficher le contenu texte ou HTML du fichier correspondant

  • afficher un lien vers le document

Voir aussi

Voir le chapitre Les médias dans Lizmap pour plus de détail sur l’utilisation de documents du répertoire media dans les popups.

Popup lizmap

Introduction

Si l’affichage tabulaire par défaut des popups ne vous convient pas, vous pouvez écrire un modèle de popup. Pour cela, il faut bien connaître le format HTML. Voir par exemple: http://fr.html.net/tutorials/html/

Avertissement

lorsque vous utilisez le mode lizmap, la configuration précédente ne fonctionne plus pour renommer un champ : c’est vous qui contrôlez via le modèle les affichages. La gestion des médias est encore possible, mais c’est à vous de bien la prévoir.

Mise en oeuvre

Via le bouton Configurer du plugin Lizmap, on peut modifier le modèle de la popup. En cliquant sur ce bouton, une fenêtre s’affiche avec 2 zones de texte :

  • une zone de texte éditable qui permet d’écrire le contenu

  • une zone de texte en lecture seule qui montre un aperçu de la mise en forme

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

On peut écrire du texte simple, mais il est conseillé d’écrire au format HTML pour le mettre en forme. On peut par exemple utiliser les paragraphes, les titres, etc

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

Le comportement est le suivant:

  • Si le contenu des 2 champs texte est vide, un tableau sera présenté dans la popup (modèle par défaut)

  • Si le contenu n’est pas vide, le modèle écrit dans le contenu sera utilisé à la place pour l’affichage de la popup

Lizmap Web Client sait remplacer automatiquement une variable représentant le nom d’un champ de la table attributaire par son contenu. Pour ajouter le contenu d’une colonne dans la popup, on utilise le nom de la colonne précédé d’un dollard, le tout encadré d’accolades. Par exemple:

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

Note

Si vous avez choisi un alias pour un champ, vous devez utiliser l’alias plutôt que le nom, entre crochets.

On peut aussi utiliser les valeurs des colonnes comme paramètres pour styliser le texte. Par exemple ici pour mettre le fond dans la couleur de la ligne de bus:

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

Popup QGIS

Les popups QGIS peuvent être configurées via QGIS –> Propriétés de la couche –> Infobulles –> HTML, en utilisant la même syntaxe que pour les popups lizmap. Les principaux avantages de cette approche sont :

  • Vous pouvez utiliser des variables et expressions QGIS, ce qui permet d’ajouter de l’information créé dynamiquement

  • la popup peut-être pré-visualisée dans QGIS en utilisant les infobulles

  • La configurations des popups est enregistrée dans le projet QGIS et le style de la couche, donc elle peut-être réutilisée dans d’autres projets Lizmap sans avoir à recopier la configuration.

Relations 1 à n

Il est possible d’afficher plusieurs objets (photos, documents) pour chaque entité géographique. Pour ce faire, vous devez configurer le projet QGIS et la configuration Lizmap.

Dans le porjet QGIS :

  • Utilisez 2 couches séparées pour stocker les objets géographiques principaux et les images. Par exemple « arbres » et « arbre_images ». La couche enfant doit contenir un champ référençant l’identifiant de la couche parente

  • Configurez les alias et les types de champs dans l’onglet Champs de la fenêtre des propriétés de la couche. Utilisez « Photo » pour le champ qui contiendra le chemin relatif aux images

  • Ajouter une relation dans les propriétés du projet QGIS entre la couche principale « arbres » et la couche enfant « arbre_images »

  • Ajouter des données aux couches. Vous devez utiliser un chemin relatif pour stocker le chemin des images. Ces chemins doivent faire référence à un sous-répertoire media du projet, par exemple: media/photos/feature_1_a.jpg

Dans le plugin Lizmap :

  • Dans l’onglet Couches, activez la popup pour les deux couches. Vous pouvez configurer la popup si vous avez besoin de mises en page spécifiques (voir la documentation sur les popups)

  • Pour la couche parente, activez l’option « Afficher les enfants relatifs sous chaque objet (utiliser les relations) »

  • Ajoutez les deux couches dans l’onglet Table attributaire

  • Vous pouvez éventuellement activer l’édition pour les deux couches, pour permettre aux utilisateurs Web de créer de nouveaux objets et d’uploader des images

  • Enregistrez et publiez votre projet et la configuration de Lizmap

Affichez les enfants de manière compacte

Vous pouvez changer la manière dont les enfants sont affichés et les faire ressembler à une table. Pour cela, vous devez adapter le code HTML de votre couche enfant et utiliser quelques classes pour le manipuler.

  • « lizmap_merged » : Vous devez attribuer cette classe à votre table.

  • lizmapPopupHeader : If you want to have a better display of your headers, you will need to put this class in the “<tr>” who contains them

  • lizmapPopupHidden : This class permit you to hide some elements of your children that you want to hide when there are used as a child but you still want to see them if you display their popup as a main Popup

Voici un exemple :

<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

Créer des thèmes simples

Depuis la version 2.10 de Lizmap Web Client, il possible de créer des thèmes pour toutes les cartes d’un répertoire ou pour chaque carte. Cette fonctionnalité doit être activée par l’administrateur et s’appuie sur le dossier média Les médias dans Lizmap.

Le principe est le suivant :

  • le dossier media contient un dossier themes

  • le dossier themes contient un dossier default pour le theme de toute les cartes du répertoire

  • le dossier themes peut contenir une dossier par projet pour le theme spécifique au projet

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

Afin de faciliter la création d’un theme pour un répertoire ou une carte, lizmap permet de récupérer le thème par défaut de l’application via la requête : index.php/view/media/getDefaultTheme

Cette requête renvois un fichier zip contenant le theme par défaut avec la structure suivantes :

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

Une fois que vous avez récupéré le contenu du thème par défaut, vous pouvez :

  • remplacer les images

  • modifier les fichiers CSS

Avertissement

Les fichiers et les dossiers doivent avoir la permission d’écriture (755:644)

To preview your results just add &theme=yourtheme at the end of your URL (e.g. https://demo.lizmap.3liz.com/index.php/view/map/?repository=montpellier&project=montpellier&theme=yourtheme).

Une fois que votre thème est prêt, il vous suffit de le publier avec le dossier media et les projets.

Ajouter votre propre JavaScript

Objectif

C’est pratique pour divers usages avancés. Par exemple, vous pouvez éviter que des personnes ne téléchargent des éléments de la page en faisant un clic droit dessus, et bien sûr bien plus encore.

Note

Ceci est disponible depuis la version 2.11 de Lizmap. Pour les versions précédentes, vous devez ajouter votre code directement dans le fichier lizmap/www/js/map.js.

  • Dans votre répertoire, (par ex. /home/data/repo1/myproject.qgs) vous devez avoir ces répertoires :

    media
    |-- js
      |-- myproject
    
  • Tout le code javascript que vous copiez dans le répertoire /home/data/rep1/media/js/myproject/ sera executé par Lizmap, à condition que :

  • vous l’autorisiez, via l’interface d’admin de Lizmap, en ajoutant le privilège « Autoriser les thèmes pour ce répertoire » dans le formulaire de modification du répertoire

Évènements Javascript disponibles

Le code Javascript peut utiliser plusieurs événements déclenchés par Lizmap Web Client. Voici une liste de tous les événements disponibles, avec les propriétés retournées.

Évènements Lizmap Web Client disponibles

Nom de l’évènement

Description

Propriétés retournées

treecreated

Déclenché quand l’arbre de couche a été créé dans le panneau de légende

mapcreated

Déclenché quand la carte OpenLayers a été créé

layersadded

Déclenché quand les couches OpenLayers ont été ajoutées

uicreated

Déclenché quand l’interface a été déclenché

dockopened

Déclenché quand un dock est ouvert (panneau de gauche)

id

dockclosed

Déclenché quand un dock est fermé (panneau de gauche)

id

minidockopened

Déclenché quand un mini-dock (conteneur de droite pour les outils) est ouvert

id

minidockclosed

Déclenché quand un mini-dock est fermé

id

bottomdockopened

Déclenché quand le dock inférieur est ouvert

id

bottomdockclosed

Déclenché quand le dock inférieur est fermé

id

lizmapbaselayerchanged

Déclenché quand le fond de carte a été changé

layer

lizmapswitcheritemselected

Déclenché quand une couche a été surlignée dans le panneau de légende

name | type | selected

layerstylechanged

Déclenché quand le style d’une couche a été changé

featureType

lizmaplocatefeaturecanceled

Déclenché quand l’utilisateur a désactivé l’outil de localisation par couche

featureType

lizmaplocatefeaturechanged

Déclenché quand l’utilisateur a sélectionné un élément dans l’outil de localisation par couche

featureType | featureId

lizmappopupdisplayed

Déclenché quand le contenu de la popup est affichée

lizmappopupdisplayed_inattributetable

Déclenché quand le contenu de la popup est affichée dans la table d’attribut (panneau en bas à droite)

lizmapeditionformdisplayed

Déclenché quand un formulaire d’édition est affiché

layerId | featureId | editionConfig

lizmapeditionfeaturecreated

Déclenché quand une entité de couche a été créée avec l’outil d’édition

layerId

lizmapeditionfeaturemodified

Déclenché quand une entité de couche a été modifiée avec l’outil d’édition

layerId

lizmapeditionfeaturedeleted

Déclenché quand une entité de couche a été supprimée avec l’outil d’édition

layerId | featureId

attributeLayersReady

Lancé lorsque toutes les couches à afficher dans l’outil Table attributaire ont été définis

layers

attributeLayerContentReady

Lancé lorsqu’une table pour une couche a été affichée dans le dock inférieur

featureType

layerfeaturehighlighted

Lancé lorsqu’un objet géographique a été mis en surbrillance dans la table attributaire (rectangle gris). Le déclenchement manuel de cet événement force l’actualisation des tables enfants s’il en existe pour la couche

sourceTable | featureType | fid

layerfeatureselected

Lancez cet événement pour déclencher la sélection d’un objet géographique pour une couche, en transmettant l’identifiant de l’entité. Une fois la sélection effectuée, l’événement layerSelectionChanged est renvoyé en retour.

featureType | fid | updateDrawing

layerfeaturefilterselected

Lancez cet événement pour déclencher le filtrage d’une couche pour les entités sélectionnées. Vous devez sélectionner des objets géographiques avant de déclencher cet événement. Une fois le filtre appliqué, Lizmap déclenche l’événement layerFilteredFeaturesChanged en retour.

featureType

layerFilteredFeaturesChanged

Lancé lorsqu’un filtre a été appliqué à la carte pour une couche. Cet événement déclenche également le redessin de la carte et du contenu des tables attributaires.

featureType | featureIds | updateDrawing

layerFilterParamChanged

Lancé lorsque les paramètres des requêtes WMS ont changé pour une couche. Par exemple quand un STYLE ou un FILTER a été modifié pour la couche.

featureType | filter | updateDrawing

layerfeatureremovefilter

Lancez cet événement pour supprimer tous les filtres appliqués à la carte. Une fois cela fait, l’événement layerFilteredFeaturesChanged est renvoyé et le contenu de la carte et le contenu des tables d’attributs sont actualisés.

featureType

layerSelectionChanged

Lancé lorsque la sélection a été modifiée pour une couche. Cela déclenche également la redéfinition du contenu de la table attributaire et du contenu de la carte

featureType | featureIds | updateDrawing

layerfeatureselectsearched

Lancez cet événement pour sélectionner tous les objets géogrpahiques correspondant aux lignes affichées dans la table attributaire, qui peuvent être filtrées visuellement par l’utilisateur en entrant du texte dans le champs de saisie de recherche.

featureType | updateDrawing

layerfeatureunselectall

Lancez cet événement pour supprimer toutes les objets géographiques de la sélection pour une couche. Une fois cela fait, Lizmap répond avec l’événement layerSelectionChanged

featureType | updateDrawing

lizmapexternalsearchitemselected

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

entité

Certaines variables sont également disponibles.

Variables Lizmap Web Client disponibles

Nom de la variable

Description

lizUrls.media

URL pour pointer sur un media

lizUrls.params.repository

Nom du répertoire actuel

lizUrls.params.project

Nom du projet en cours

Exemples

Voici un exemple très simple qui permet de désactiver le clique droit dans Lizmap. Ajoutez simplement un fichier nommé, par ex. disableRightClick.js contenant le code suivant :

lizMap.events.on({
   uicreated: function(e) {
      $('body').attr('oncontextmenu', 'return false;');
   }
});
  • Si vous voulez que ce code soit exécuté pour tous les projets de votre répertoire, vous devez copier le fichier dans le répertoire /home/data/rep1/media/js/default/ plutôt que dans /home/data/rep1/media/js/myproject/.

Voici un exemple très utile qui vous permet d’envoyer un identifiant de connexion (et/ou d’autres données utilisateur) à la colonne PostgreSQL à l’aide de l’outil d’édition.

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();
                  }
               }
            }
      }

   }

});

Dans le répertoire lizmap-web-client/lizmap/install/qgis/media/js/ vous trouverez des exemples de code JavaScript adaptables ; enlevez l’extension « .example » and copiez-les dans votre répertoire « media/js/default/ » pour l’activer. Vous pouvez également trouver des exemples dans le dépôt 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"
     })
);

Configurer l’impression

Pour proposer l’impression sur la carte en ligne, il faut avoir activer l’outil d’impression dans l’onglet Carte du plugin (Configurer la carte) et que le projet QGIS possède au moins un composeur d’impression.

Le composeur d’impression doit contenir au moins une carte.

Vous pouvez y ajouter :

  • une image pour la flèche du nord

  • une image pour le logo de votre structure

  • une légende qui sera fixe pour toutes les impressions (avant la version 2.6)

  • une échelle, de préférence numérique pour l’affichage

  • une carte de localisation soit une carte pour laquelle vous aurez activé et configuré la fonction d”Aperçu

  • des étiquettes

Vous pouvez permettre à l’utilisateur de modifier le contenu de certaines étiquettes (titre, description, commentaire, etc). Pour ce faire il vous suffit d’ajouter un identifiant à vos étiquettes dans le composeur. Lizmap demandera automatiquement dans le navigateur web de saisir ces champs. Si une étiquette est pré-saisie dans QGIS, le champs sera aussi pré-saisie dans le navigateur web. Si vous cochez “Rendu HTML” pour votre étiquette dans QGIS, vous aurez une étiquette multiligne dans Lizmap.

Enfin la fonction d’impression s’appuiera sur les échelles de la carte que vous aurez défini dans l’onglet Carte du plugin (Configurer la carte).

Note

Il est possible d’exclure des composeurs d’impression de la publication Web. Par exemple, si le projet QGIS contient 4 composeurs, l’administrateur du projet peut en exclure 2 via les propriétés du projet QGIS, onglet Serveur OWS. Alors ne seront présentés dans Lizmap que les composeurs publiés.

Permettre l’impression de fond externe

L’onglet Fonds du plugin Lizmap permet de sélectionner et d’ajouter des fonds externes (Configurer les fonds cartographiques). Ces fonds externes ne faisant pas partie du projet QGIS, la fonction d’impression ne les intègrera pas par défaut.

Pour pallier ce manque Lizmap propose un moyen simple d’imprimer un groupe ou une couche à la place du fond externe.

Pour ajouter à l’impression une couche qui remplace un fond externe, il suffit d’ajouter au projet QGIS un groupe ou une couche dont le nom fait partie de la liste suivante :

  • osm-mapnik pour OpenStreetMap

  • osm-mapquest pour MapQuest OSM

  • osm-cyclemap pour OSM CycleMap

  • google-satellite pour Google Satellite

  • google-hybrid pour Google Hybrid

  • google-terrain pour Google Terrain

  • google-street pour Google Streets

  • bing-road pour Bing Road

  • bing-aerial pour Bing Aerial

  • bing-hybrid pour Bing Hybrid

  • ign-scan pour IGN Scan

  • ign-plan pour IGN Plan

  • ign-photo pour IGN Photos

Puis ajoutez le(s) calque(s) que vous souhaitez imprimer comme base.

Note

L’utilisation de cette méthode doit se faire dans le respect des licences des fonds externes utilisés (Configurer les fonds cartographiques).

Pour les couches de fond OpenStreetMap, il est possible d’utiliser un fichier XML pour que GDAL exploite les services de tuiles OpenStreetMap. Son utilisation est décrite dans la documentation de GDAL http://www.gdal.org/frmt_wms.html ou dans cet article http://www.3liz.com/blog/rldhont/index.php?post/2012/07/17/OpenStreetMap-Tiles-in-QGIS (attention, le code EPSG doit être 3857).

Par contre si cette couche doit remplacer un fond externe, celle-ci doit-être accessible à QGIS-Server mais ne doit pas être accessible à l’utilisateur dans Lizmap-Web-Client. Elle doit donc être masquée. Voir le chapitre Masquer certaines couches.

Optimiser Lizmap

Concepts généraux

La vitesse de rendu est crucial pour un SIG Web, beaucoup plus que pour une application bureautique :

  • les internautes s’attendent à ce que tout soit disponible presque immédiatement

  • chaque utilisateur peut envoyer des requêtes à la même application ; si vous avez des dizaines ou des centaines d’utilisateurs, vous pouvez facilement comprendre que l’optimisation de votre application Web est une tâche importante.

Vous devez penser à une publication Web pour de nombreux utilisateurs plutôt que l’affichage d’une carte pour un seul utilisateur.

Par défaut, pour chaque couche QGIS que vous ajoutez à votre projet Lizmap, vous pouvez choisir à partir du plugin Lizmap si vous souhaitez activer ou désactiver la visibilité du calque (case à cocher Activée ?) au démarrage de l’application. Vous devez faire attention de ne pas abuser de cette fonctionnalité, car si le projet contient, par exemple, 30 couches, Lizmap au démarrage enverra une requête au serveur QGIS pour chacune d’elles. Si la case à cocher Image non tuilée ? est cochée, cela demandera 30 images de la taille de la fenêtre de votre navigateur. Sinon, Lizmap, via OpenLayers, demandera 30 séries de tuiles (environ 250 par 250 pixels). Chaque tuile est une image et est créée en fonction de la taille totale de la fenêtre et du niveau de zoom. Par conséquent, les utilisateurs suivants vont zoomer dans la même zone, les tuiles déjà générées seront réutilisées. Les tuiles peuvent être mises en cache avec deux systèmes non exclusifs :

  • côté serveur, sur la machine où QGIS Server et Lizmap sont installés. Si la tuile a été demandée et générée plus tôt, et non expirée, Lizmap la réutilisera et l’enverra au client, évitant ainsi une nouvelle demande à QGIS Server

  • côté client : les tuiles seront sauvegardées dans le cache du navigateur, et réutilisées jusqu’à leur expiration. Cela évite à la fois la demande à QGIS Server et du trafic Internet.

Le cache du serveur doit être généré. Dans Lizmap < 3, la seule façon de créer les tuiles est de zoomer et de naviguer dans toute la carte, et d’attendre que toutes les tuiles aient été affichées. Ceci est évidemment irréalisable pour des projets couvrant une grande surface, avec de nombreux niveaux de zoom. dans Lizmap >= 3 nous avons développé un outil de ligne de commande pour générer toutes les tuiles, ou une sélection d’entre elles.

Afin d’optimiser les performances, il est donc important de comprendre comme Lizmap utilise les tuiles a afficher.

Disons que vous avez un écran de 1280 par 768 pixels. Si vous avez toutes vos couches tuilées, Lizmap doit donc montrer environ 5 par 3 = 15 tuiles (de 256 par 256 pixels chacune) par couche, et plus pour un écran plus grand, ce qui est maintenant commun. Si les tuiles environnantes ne sont que partiellement visibles, le nombre total sera encore plus grand. Une moyenne de 20 tuiles par couche est une estimation raisonnable. Avec 30 couches, comme dans notre exemple, cela signifiera un total d’environ 20 par 30 = 600 tuiles (donc 600 requêtes au serveur Lizmap) par utilisateur, à chaque démarrage de Lizmap et pour chaque zoom & déplacement. Si vous avez 10 utilisateurs simultanés, cela devient assez lourd pour le serveur, si le cache n’a pas été généré auparavant, et que QGIS Server doit donc les créer. Le temps requis pour chaque tuile dépendra fortement de la performance du serveur et de la complexité du projet.

La taille de chaque tuile va dépendre de:

  • le type de données (raster ou vecteur simple, ou combinaison de plusieurs couches)

  • le format d’image choisi (PNG, JPEG)

Une tuile standard est à peut près d’environ 30 Kb. Dans notre exemple, le client va donc télécharger environ 20 par 30 = 600 Ko par couche, ce qui, pour 30 couches, donnera un total d’environ 18 Mo, ce qui est lourd à la fois pour le serveur (beaucoup de bande passante consommée) et pour les utilisateurs (délai important, même avec une connexion raisonnablement rapide).

Ces calculs montrent clairement que pour obtenir de bonnes performances en webmapping, vous devez faire des choix et simplifier autant que possible.

Si l’on regarde, par exemple, l’approche adoptée par Google Maps ou des services similaires, il est évident que, outre des serveurs puissants, ils ont simplifié le plus possible : une seule série de tuiles comme couche de fond, et très peu de couches (et pas toutes en même temps). Même si vous ne pouvez pas créer une carte aussi simple, il est important de savoir quelles couches doivent absolument être affichées au premier affichage de la carte et quels compromis sont acceptables pour vos utilisateurs.

Si votre projet a 50 couches à activer et désactiver, la grande majorité de vos utilisateurs ne sélectionneront jamais la plupart d’entre elles. Bien sûr, il existe des cas d’utilisation réels où des couches individuelles doivent être affichées de façon sélective, et il n’est donc pas possible de les regrouper pour réduire le nombre de couches affichées.

Pour optimiser votre application autant que possible, nous vous proposons de :

  • Créez des projets QGIS distincts, et donc des cartes Lizmap différentes, pour différents objectifs, regroupant ainsi les données dans des thèmes logiques. Par exemple, une carte sur le développement urbain avec peut-être 10 couches et une sur l’environnement, avec environ 5 couches, est généralement plus lisible, et beaucoup plus rapide, qu’un seul projet complexe avec toutes les données. L’ajout d’une petite image pour chaque projet aidera les utilisateurs à sélectionner le projet pertinent à première vue. Vous pouvez également partager certaines couches entre différents projets, via le mécanisme d’intégration dans QGIS.

  • Utilisez l’option Seulement des cartes dans l’interface Web d’administration. Cette option permet à l’utilisateur de passer automatiquement d’une carte à une autre, via le bouton Accueil, en conservant autant que possible la localisation et le niveau de zoom. Dans ce cas, la page d’accueil de Lizmap avec la liste des projets et leurs vignettes n’est pas affichée, et l’utilisateur est dirigé automatiquement vers l’un des projets, au choix de l’administrateur.

  • Ne pas afficher tous les calques au démarrage (désactivez la case à cocher Activée ? Comme décrit ci-dessus). Seules les couches très importantes doivent être visibles par défaut, et les utilisateurs doivent activer uniquement la couche dont ils ont besoin. Cela permet une réduction sensible du nombre de requêtes et du trafic réseau total.

  • Créez des groupes de couches et utilisez l’option * Groupe comme une couche ? * dans le plugin Lizmap. Généralement, une série de couches du même thème général peuvent être affichée ensemble, avec un choix approprié de styles. Dans ce cas, Lizmap affichera seulement une case à cocher pour l’ensemble du groupe, et surtout il ne demandera qu’une seule série de tuiles pour tout le groupe, réduisant ainsi le nombre de tuiles et de requêtes au serveur, et le volume total de données à télécharger. La légende du groupe sera affichée.

  • Utilisez l’option Image non tuilée ? pour certaines couches. Dans ce cas, Lizmap va requêter une seule image par couche, d’à peu près la taille de la fenêtre du navigateur, plutôt qu’un ensemble de tuiles. Cela va permettre de grandement réduire le nombre de requêtes vers le serveur. Dans l’exemple ci-dessus, sans l’optimisation décrite, si toutes les couches sont affichées, chaque utilisateur va requêter 30 images (une par couche) pour chaque zoom ou déplacement, plutôt que 480. La taille totales des données à télécharger est cependant à peu près la même. Par contre, il est peu probable que différents utilisateurs requêtent exactement la même image, par conséquent utiliser un cache n’a pas d’intérêt dans ce cas, et est évité par Lizmap (les deux options sont mutuellement exclusives). Le choix optimal (tuile unique ou tuiles multiples) se fait selon le type de couche. Par exemple, un fond de carte complexe, créé en combinant 15 couches, sera optimisé en regroupant ces dernières dans un groupe (Groupe comme une couche?), tuilé et mis en cache. Une couche simple linéaire, comme un ensemble de lignes de bus, peut être affiché avec une tuile unique.

  • Utilisez l’option Cacher les cases à cocher des groupes : ceci permet d’éviter que les utilisateurs ne cliquent sur un groupe avec par exemple 20 couches sans que ça leur soit vraiment utile, ceci provoquant un grand nombre de requêtes vers le serveur. Dans tout les cas, il est bon d’éviter d’avoir des groupes de plus de 5-10 couches.

  • Optimiser les données et le projet QGIS, Comme mentionné ci-dessus, publier une carte sur internet va changer votre point de vue : comme dit précédemment, vous devez avoir à l’esprit que de nombreux utilisateurs peuvent requêter votre serveur en même temps, et donc afin d’éviter une surcharge il est crucial de :

    • créer un index spatial pour toutes vos couches vectorielles

    • faire une pyramide de toutes vos couches rasters (sauf les très petites)

    • n’afficher les données qu’à l’échelle appropriée : par exemple, afficher la couche détaillé d’un bâtiment à l’échelle 1:500 000 n’a pas d’intérêt, puisque l’image est quasi illisible, et surcharge fortement le serveur

    • utiliser des versions simplifiées d’une couche pour l’afficher à différentes échelles. Vous pouvez ensuite grouper la couche originale (afin qu’elle soit affichée à l’échelle 1: 1 000 par exemple) avec ses versions simplifiées (qui elles seront affichées aux échelles 1:10 000, 1:50 000; etc. par exemple) et utiliser Groupe comme une couche ? permettant ainsi à l’utilisateur d’utiliser la donnée appropriée à chaque échelle

    • faire attention à la reprojection “à la volée” (ALV). Si, par exemple, vous affichez des données en Lambert 93 (EPSG:2154) sur un fond de carte OpenStreetmap ou Google (en Pseudo Mercator, EPSG:3857), QGIS Server nécessite de reprojeter les couches rasters et vectorielles avant de générer la carte. Ceci peut impacter le temps du rendu pour les couches grandes et complexes. En France, vous pouvez éviter la reprojection en utilisant les fonds de carte du Géoportail IGN directement en EPSG:2154

    • d’être attentif au fait que certaines options de rendu ( par exemples les labels, les expressions, etc.) peuvent demander beaucoup de ressources au serveur

    • si vous utilisez PostGIS, optimisez le : créer toujours un index spatial, des indexes pour les données filtrées et pour les clés étrangères, utilisez les paramètres appropriées pour la configuration PostgreSQL, si possible une connexion par socket UNIX plutôt qu’en TCP/IP (pour ceci utilisez des services), etc.

    • d’utiliser un format d’image approprié. Pour les fonds de carte, pour lesquels la transparence n’est pas nécessaire, JPEG est souvent la meilleur option : les tuiles seront plus légères et donc plus rapides à télécharger. Pour les autre couches, essayez le format PNG avec moins de profondeur (16 bit ou 8 bit) : pour certains symboles, le rendu visuel peut être le même avec des tuiles plus légères. Contrôlez si la qualité d’image vous semble acceptable dans votre cas

  • Améliorer votre serveur. C’est peut être utile mais c’est sans intérêt si vous n’optimisez pas votre projet comme expliquez ci-dessus. Dans tout les cas, un serveur avec peu de ressources (par exemple 2 Gb RAM, 2 cœurs à 2,2 GHz) ne sera pas suffisant. Le minimum raisonnable est un quad-core rapide avec 8Gb RAM. Évitez d’installer QGIS Server et Lizmap sur Windows, c’est plus compliqué et plus lent.

Note

In Lizmap 3 you’ll find several improvements that will help optimizing your installation:: * a tool for the preparation of the server cache, through the use of a WMTS protocol. In addition, this will allow to use the cached layers as WMTS layers in QGIS desktop * avoiding the automatic download of the legends at startup, and at every zoom level; this will be done exclusively on demand, if the legend is displayed, thus saving one request per layer for each zoom * code optimization.

En détail : comment activer les différents caches

L’onglet Couches du plugin Lizmap permet d’activer pour chaque couche ou groupe en tant que couche la mise en cache des images générées. Cette fonctionnalité n’est pas compatible avec l’option image non tuilée.

  • Activer le cache côté serveur

Lizmap Web Client sait créer dynamiquement un cache des tuiles sur le serveur. Ce cache représente le stokage sur le serveur des images déjà générées par QGIS-Server. L’application Lizmap-Web-Client génère automatiquement le cache au fur et à mesure que les tuiles sont demandées. Activer le cache permet d’alléger fortement la charge sur le serveur, puisqu’on ne redemande pas à QGIS-Server les tuiles qui ont déjà été rendues.

Pour l’activer il faut :

  • cocher la case Cache Serveur ?

  • préciser le temps d’expiration du cache serveur en secondes : Expiration (secondes)

The Metatile option allows you to specify image size in addition for generating a tile. The principle of Metatile is to request the server for a bigger image than hoped, to cut it to the size of the request and return it to the Web client. This method avoids truncated labels at the edges and discontinuities between tiles, but is more resource intensive. The default value is 5,5, an image whose width and height are equal to 5 times the width and height request. This option is useless for rasters.

  • Activer le cache côté client

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.

Nous conseillons de mettre la valeur maximale (1 mois soit 24 x 3600 x 30 = 2592000 secondes), sauf bien sûr pour les couches dont la donnée change souvent.

Note

  • Le cache doit être activé seulement une fois le rendu bien maîtrisé, lorsqu’on souhaite passer le projet en production.

  • Les 2 modes de cache Serveur et Client sont complètement indépendants l’un de l’autre. Mais bien sûr, il est intéressant d’utiliser les 2 en même temps pour optimiser l’application et libérer les ressources du serveur.

Centraliser le cache via l’intégration de groupes et couches d’un projet parent

Dans QGIS, il est possible d’intégrer dans un projet des groupes ou des couches depuis un autre projet (qu’on appellera « parent »). Cette technique est intéressante, car elle permet de définir les propriétés des couches une seule fois dans un projet, par exemple pour les fonds de carte (Dans les projets « fils » qui intègrent ces couches, il n’est pas possible de modifier les propriétés).

Lizmap utilise cette fonctionnalité pour centraliser le cache des tuiles. Pour tous les projets fils qui utilisent des couches intégrées du projet parent, Lizmap demandera à QGIS Server les tuiles du projet parent, et non des projets fils. Le cache sera donc centralisé au niveau du projet parent, et tous les projets fils qui utilisent les couches bénéficieront du cache mis en commun.

Pour pouvoir utiliser cette fonctionnalité, il faut

  • publier le projet QGIS parent avec Lizmap

    • il faut bien choisir l’emprise annoncée dans l’onglet Serveur Ows des propriétés du projet, car cette emprise devra être réutilisée à l’identique dans les projets fils.

    • il faut configurer le cache pour les couches à intégrer. De même, bien noter les options choisies ici (format d’image, metatile, expiration) pour les utiliser telles quelles dans les projets fils.

    • Il est possible de masquer le projet dans la page d’acceuil de Lizmap via la case à cocher Masquer le projet dans Lizmap-Web-Client de l’onglet Carte du plugin.

  • ouvrir le projet fils, et intégrer des couches ou des groupes dans ce projet, par exemple une orthophotographie. Ensuite il faut :

    • vérifier que l”emprise annonceé dans les propriétés du projet QGIS / Serveur OwS est exactement la même que celle du projet parent

    • il faut configurer le cache pour la couche intégrée avec exactement les mêmes options que celles choisies dans le projet parent : format d’image, expiration, metatile

    • il faut renseigner l’identifiant Lizmap du Répertoire source du projet parent (celui configuré dans l’interface d’administration de Lizmap-Web-Client)

    • le code du « Projet source » (le nom du projet QGIS parent sans l’extension .qgs) est renseigné automatiquement pour les couches et les groupes intégrés.

  • Publier le projet fils vers l’application Lizmap Web Client, comme d’habitude.

Masquer certaines couches

Vous pouvez exclure des couches de votre publication via l’onglet Serveur OWS des propriétés du projet QGIS. Dans ce cas là les couches ne seront plus accessible dans Lizmap. Avec cette méthode vous ne pouvez pas utiliser une couche dans la fonction de localisation et ne pas l’afficher dans la carte.

Pour pallier ce manque Lizmap propose un moyen simple pour ne pas afficher certaines couches.

Pour ne pas afficher une ou plusieurs couches du projet QGIS dans la légende de la carte en ligne, il suffit de mettre ces couches dans un groupe nommé « hidden ». Toutes les couches présentes dans ce groupe ne seront pas visibles dans l’application Web.

Cette fonctionnalité peut servir pour :

Afficher la table attributaire pour les couches Lizmap

Principe

Lizmap est conçu pour montrer des données spatiales sur la carte principale, et vous pouvez proposer aux utilisateurs de voir les données d’un objet avec la fonctionnalité « popup » (une petite popup contenant les données des objets est affichée quand un utilisateur cliquesur la carte). Voir Configurer les popups dans Lizmap

Parfois ça ne suffit pas, et en tant qu’éditeur de cartes, vous souhaiteriez que vos utilisateurs puissent voir toutes les données d’une couche spécifique, de la même façon que vous pouvez le faire dans QGIS en ouvrant la table attributaire. Depuis Lizmap 2.11, vous pouvez proposez cette fonctionnalité pour chaque couche vectorielle publiée dans votre carte. (Cette fonctionnalité a été grandement améliorée depuis Lizmap 3.0. De nombreuses fonctionnalités décrites ci-dessous n’existe que pour Lizmap 3.0)

Activer l’outil de table attributaire pour une couche vectorielle

Dans l’onglet Outils de la boîte de dialogue du plugin Lizmap, il y a un groupe nommé « Table attributaire » qui contient un tableau et des champs de formulaire permettant l’ajout et la suppression de couches vectorielles.

Lizmap Web Client utilise le Web Feature Service (WFS) afin d’obtenir la donnée d’une couche vectorielle dans QGIS et l’afficher dans l’interface web. C’est pourquoi la première chose à faire quand vous voulez montrer la donnée d’une couche est de ** publier la couche vectorielle à travers le WFS**. Pour y parvenir, ouvrez la fenêtre Propriétés du projet…, allez dans l’onglet Serveur OWS, cochez pour cette couche la case « publié » dans la tableau Capacité WFS, et sauvegardez le projet. Vous pouvez aussi préciser le nombre de décimales afin de réduire la taille des données à envoyer depuis le WFS (gardez 8 seulement pour une carte publiée en degré, et gardez 1 pour les projections de carte en mètres)

Une fois la couche publiée en WFS, vous pouvez l’ajouter dans la partie « Table attributaire » du plugin Lizmap. Des options sont disponibles pour préciser les fonctionnalités proposées à l’utilisateur :

  • Couche : Choisissez une des couches vectorielles (spatiale ou non). Cela peut être n’importe quel format de couche vectorielle : GeoJSON, Shapefile, PostGIS, CSV, etc.

  • Identifiant unique : L’outil table attributaire nécessite de définir chaque objet comme unique. Nous vous recommandons fortement d’ajouter un champ avec des valeurs uniques si votre couche n’en possède pas encore. En général le champ avec valeur unique contient des entiers. Si la couche ne possède pas ce type de champs, vous pouvez aisément le créer avec la Calculatrice de champ. Choisissez le champ qui convient avec la liste déroulante.

  • Champs à masquer : Il existe 2 façons de masquer des champs dans la table attributaire publiée.

    • Dans la boîte de dialogue Propriétés de la couche de la couche vectorielle dans QGIS, dans l’onglet Champs, vous pouvez décocher la case de la colonne WFS pour les champs à ne pas publier. Ceci signifie que ces champs ne seront pas publiés via le protocol WFS. C’est la façon la plus simple et la plus sûre de restreindre la publication de certains champs (pour interdire l’accès à des données sensibles par exemple)

    • Vous pouvez utiliser l’option Champs à masquer pour masquer les champs données dans la table attributaire. Les champs masqués seront invisibles pour l’utilisateur final, mais toujours disponible pour Lizmap Web Cleint. Vous devez utiliser cette option pour masquer le champ avec des valeurs uniques. Si vous utilisez la première méthode (décocher la colonne WFS), l’identifiant unique ne sera pas utilisable par Lizmap, et certaines fonctionnalités de la table attributaire ne fonctionneront pas correctement.

Utiliser les relations entre couches avec l’outil de table attributaire

Dans QGIS, vous pouvez configurer des relations entre des couches, dans la boîte de dialogue Propriétés du projet. Si vous publiez dans Lizmap plus d’une couche dans l’outil table attributaire, et si des couches ont une relation, les utilisateurs finaux pourront voir les tables enfants en-dessous leur table parent, et un clic sur une ligne dans la table parent déclenchera le filtre sur le contenu des tables enfants.

Par exemple, vous pourriez avoir une couche avec des villes, et une couche enfant avec des bâtiments publics. Cliquer sur une ville dans la table attributaire déclenchera le rafraichissement du contenu de la table enfant des bâtiments publics présentant uniquement ceux de la ville cliquée.

Vous pouvez utiliser des relations « plusieurs-à-plusieurs » (N:M) dans QGIS depuis la version 2.14 mais à ce jour Lizmap ne les utilisent pas automatiquement. Vous devez aussi définir les relations dans le plugin Lizmap. Dans de nombreux cas, les relations N:M sont très pratiques. Par exemple, vous pouvez avoir les trois couches vectorielles suivantes dans votre projet :

  • Lignes de tramway : cette couche nommée « Lignes » contient une objet par ligne de tram, avec un champ à identifiant unique nommé tram_id

  • Arrêts de tramway : cette couche nommée « Arrêts » contient une objet par arrêt de tram, avec un champ à identifiant unique nommé stop_id

  • Table de correspondance entre les lignes et les arrêts : cette couche nommée « Pivot » est une table pivot entre les lignes et les arrêts de tram, puisque un arrêt peut être pour plus d’une ligne, et une ligne dessert plusieurs arrêts. Elle contient les champs suivant : tram_id, stop_id et order ce dernier définissant l’ordre de l’arrêt sur la ligne.

Vous pouvez définir 2 relations dans les propriétés du projet QGIS : une entre Lignes et Pivot utilisant le champ tram_id, et une entre Arrêts et Pivot utilisant le champ stop_id.

Dans Lizmap, nous avons ajouté un moyen simple de configurer une relation N:M. Vous pouvez simplement

  • Créer les deux relation décrites ci-dessus dans la boite de dialogue des propriétés du projet QGIS, onglet Relations

  • Ajoutez les couches Lignes et Arrêts dans l’outil de table attributaire

  • Ajoutez la couche Pivot dans l’outil de table attributaire avec l’option Table pivot ? cochée

Lizmap Web Client gérera ensuite la relation comme une relation N:M

  • La table pivot sera affichée sous chaque table attributaire parent et affichera uniquement les enfants correspondant.

  • La fonction de filtre basée sur l’attribut des couches déclenchera les filtres en cascade sur le pivot et les autres parents. Par exemple, si l’utilisateur utilise le filtre pour n’afficher qu’une ligne de tramway, Lizmap n’affichera aussi que les arrêts correspondants sur la carte et dans la table attributaire pour Arrêts.

Tables attributaires et édition

A faire

L’édition de données dans Lizmap

Principe

Depuis la version 2.8, il est possible de permettre aux utilisateurs d”éditer des données spatiales et attributaires depuis l’interface Lizmap-Web-Client, pour les couches Spatialite ou PostGreSQL du projet QGIS. Le plugin Lizmap permet d’ajouter une ou plusieurs couches et de choisir pour chacune quelles actions seront possible dans l’interface web:

  • création d’élements

  • modification des attributs

  • modification de la géométrie

  • suppression d’éléments

Le formulaire web présenté à l’utilisateur pour renseigner la table attributaire prend en charge les Outils d’éditions proposés dans l’onglet Champs des propriétés de la couche vectorielle QGIS. On peut donc configurer une liste déroulante, masquer une colonne, la rendre non-éditable, utiliser une case à cocher, un champ texte, etc. Toute la configuration se fait à la souris, dans QGIS et dans le plugin Lizmap.

De plus, Lizmap Web Client détecte automatiquement le type de colonne (entier, réel, chaîne de caractère, etc.) et ajoute les vérifications et les contrôles nécessaires sur les champs.

Exemples d’utilisation

  • Une commune souhaite permettre aux citoyens de recenser les problèmes visibles sur la voirie: poubelles non ramassées, lampadaires en panne, épaves à enlever. L’administrateur du projet QGIS crée une couche dédiée à ce recueil de données et affiche à tous la donnée.

  • Un bureau d’étude souhaite permettre aux partenaires d’un projet de remonter des remarques sur des zones du projet. Il permet l’ajout de polygones dans une couche dédiée.

Configurer l’outil d’édition

Pour permettre l’édition de données dans Lizmap Web Client, il faut

  • Au moins une couche vectorielle de type PostGis ou Spatialite dans le projet QGIS

  • Configurer les outils d’éditions pour cette couche dans l’onglet Champs des propriétés de la couche. Ce n’est pas obligatoire mais recommandé pour contrôler les données saisies par les utilisateurs.

  • Ajouter la couche dans l’outil via le plugin

Voici le détail des étapes:

  • Si nécessaire, créer une couche dans votre base de données, du type de géométrie souhaité (point, ligne, polygone, etc.)

    • pensez à ajouter une clé primaire : c’est indispensable !

    • cette colonne de clé primaire doit être de type auto-incrémenté. Par exemple serial pour PostGresql.

    • pensez à ajouter un index spatial : c’est important pour les performances

    • créer autant de champs dont vous avez besoin pour les attributs : utiliser si possible des noms de champ simples !

Veuillez vous référer à la documentation de QGIS pour voir comment créer une couche spatiale dans une base de données PostGIS ou Spatialite: http://docs.qgis.org/html/fr/docs/user_manual/index.html

  • Configurer les outils d’édition pour les champs de votre couche

    • Ouvrir les propriétés de la couche en double-cliquant sur le nom de la couche dans la légende

    • Aller à l’onglet Champs

    • Choisir l”Outil d’édition via la liste déroulante pour chacun des champs de la couche

      • Pour masquer un champ, choisir Cachée. L’utilisateur ne verra pas ce champ dans le formulaire. Aucun contenu n’y sera écrit. Utilisez-le pour la clé primaire

      • Pour afficher un champ en lecture seule, choisir Immuable

      • Cas particulier de l’option Valeur relationnelle. Vous pouvez utiliser cette option pour une carte Lizmap. Pour que les utilisateurs aient accès aux informations de la couche externe qui contient les données, il faut activer la publication de la couche en WFS dans l’onglet Serveur OWS de la boîte de dialogue Propriétés du projet dans QGIS.

      • etc.

    • ** Évolutions QGIS 2** :

      • Pour masquer des colonnes dans la popup de Lizmap, il faut maintenant décocher la case dans la colonne WMS pour chaque champs à cacher (cette colonne est juste après Alias )

      • Lizmap Web Client ne sait pas encore utiliser le mode « Conception par glisser/déposer » pour la génération des formulaires. Il faut donc seulement utiliser le mode Autogénérer pour les couches d’édition.

Note

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.

Note

Pour rendre le champ obligatoire vous devez le définir comme NOT NULL dans les propriétés de la table, au niveau de la base de donnée.

Note

Faites attention si votre couche contient des valeurs Z ou M, actuellement Lizmap les définira à « 0 » qui est la valeur par défaut à l’enregistrement dans la base de données.

  • Ajouter la couche dans le tableau « Édition de couches » situé dans l’onglet « Outils » du plugin Lizmap:

    • Sélectionner la couche dans la liste déroulante

    • Cocher les actions que vous souhaitez activer parmi:

      • Créer

      • Modifier les attributs

      • Modifier la géométrie

      • Supprimer

    • Ajouter la couche dans la liste via le bouton « Ajouter la couche ».

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

Réutiliser les données des couches d’édition

Les couches que vous avez sélectionnées pour l’outil d’édition sont des « couches comme les autres », ce qui implique:

  • Les styles et les étiquettes de QGIS s’appliquent sur ces couches. On peut donc créer des styles et des étiquettes qui dépendent d’une valeur d’une des colonnes de la couche.

  • Si on souhaite proposer l’outil d’édition, mais ne pas permettre aux utilisateurs de voir les données de la couche en ligne ( et donc les ajouts des autres utilisateurs) : on peut simplement masquer la ou les couches d’édition en les mettant dans un répertoire hidden. Voir Masquer certaines couches

  • Les couches sont imprimables si elles ne sont pas masquées.

  • Les données sont enregistrées dans une couche du projet. L’administrateur peut donc récupérer ces données et les utiliser par la suite.

Note

Pour bien centraliser les choses, nous conseillons d’utiliser une base de données PostGIS pour stocker les données. Pour les couches Spatialite, il faut faire attention à ne pas écraser le fichier Spatialite stocké dans le répertoire Lizmap sur le serveur par celui que vous avez en local: pensez à toujours faire une sauvegarde du fichier du serveur avant une nouvelle synchronisation de votre répertoire local.

Note

Utilisation du cache: Si vous souhaitez utiliser le cache serveur ou client pour les couches d’édition, faites-le en toute connaissance de cause : les données ne seront pas visibles par les utilisateurs tant que le cache ne sera pas expiré. Nous conseillons de ne pas activer le cache pour les couches d’édition

Note

Uniquement dans Lizmap 3

Ajouter des images et des fichiers pour les attributs

Utilisez le dossier media/upload par rapport à un projet

Avec Lizmap 3, il est maintenant possible de téléverser vos fichiers, telles que des images, pour chaque objet, dans l’édition en ligne ; pour y parvenir, vous devez :

  • Configurez l’édition pour la couche, avec un ou plusieurs champs ayant le type pour édition « Photo » ou « Nom de fichier ». Par exemple, prenons comme nom de champ « species_picture »

  • Créez un répertoire à la racine du fichier de projet QGIS : media/ et un sous-dossier media/upload (bien sûr vous devez le faire localement sur votre ordinateur ainsi que sur le serveur).

  • Donnez à l’utilisateur Apache (en général www-data) le droit d’écriture sur le répertoire upload, afin qu’il puisse créer des fichiers et répertoires dans media/upload :

    chmod 775 -R media/upload && chown :www-data -R media/upload
    
  • Vérifiez votre fichier php.ini pour voir si vos variables post_max_size et max_upload_size sont correctement configurées (par défaut, php n’autorise des fichiers téléversés que jusqu’à 2 Mo)

Lizmap va ensuite créer les répertoires pour stocker les fichiers, en tenant compte du nom de la couche, du nom du champ, etc. Par exemple, un fichier sera stocké dans le répertoire media/upload/PROJECT_NAME/LAYER_NAME/FIELD_NAME/FILE_NAME.EXT et une image dans media/upload/environment/observations/species_picture/my_picture.png.

Bien sûr vous pourrez afficher l’image (ou tout autre fichier) dans la popup, puisqu’elle sera stockée dans le répertoire media, Voir Utilisation dans les popups

Utilisez un dossier de destination spécifique

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

  • environnement

    • trees.qgs

    • trees.qgs.cfg

    • media

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

Couches filtrées - Filtrer les données en fonction des utilisateurs

Présentation de la fonctionnalité

Habituellement, la gestion des droits d’accès aux projets Lizmap se fait par répertoire. La configuration se fait dans ce cas via l’interface d’administration de Lizmap Web Client. Voir Définir les droits pour chaque groupe. Cela permet de masquer complètement certains projets en fonction des groupes d’utilisateurs, mais oblige une gestion par répertoire et projet.

Au contraire, la fonctionnalité de filtrage présentée ici permet de publier un seul projet QGIS, et de filtrer les données affichées sur la carte en fonction de l’utilisateur connecté. Il est possible de filtrer uniquement les couches vectorielles, car Lizmap se base sur une colonne de la table attributaire.

Le filtrage se base sur l’identifiant du groupe de l’utilisateur actuellement connecté à l’application Web. Il est actif pour toutes les requêtes vers le serveur QGIS, et concerne donc :

  • les images des couches vectorielles affichées sur la carte

  • les popups

  • les listes de la fonction Localiser par couche. Voir Ajouter la fonction de localisation

  • les listes déroulantes des formulaires d’édition issues de Valeur relationnelle. Voir L’édition de données dans Lizmap

  • les fonctionnalités à venir (affichage de la table attributaire, fonctions de recherche, etc.)

Un tutoriel vidéo est disponible à cette adresse : https://vimeo.com/83966790

Configuration de l’outil de filtre de donnée

Pour utiliser l’outil de filtrage des données dans Lizmap Web Client, il faut :

  • utiliser QGIS 2 et supérieur sur le serveur

  • avoir accès à l’interface d’administration de Lizmap Web Client

Voici le détail des étapes pour configurer cette fonctionnalité :

  • Connaître les identifiants des groupes d’utilisateurs configurés dans l’interface d’administration de Lizmap Web Client. Pour cela, il faut aller dans l’interface d’administration, SYSTÈME ‣ Groupes d’utilisateurs : l’identifiant apparaît entre parenthèse derrière le nom de chaque groupe (sous le titre Groupes des nouveaux utilisateurs)

  • Pour toutes les couches vectorielles dont on souhaite filtrer les données, il suffit d”ajouter une colonne textuelle qui contiendra pour chaque ligne l’identifiant du groupe (et pas le nom !!) qui a le droit de visualiser cette ligne.
    • Remplir cette colonne pour chaque ligne de la table attributaire avec l’identifiant du groupe qui a le droit de voir la ligne (via la calculatrice par exemple).

    • Il est possible de mettre all comme valeur dans certaines lignes pour désactiver le filtre : tous les utilisateurs verront les données de ces lignes.

    • Si la valeur contenue dans cette colonne pour une ligne ne correspond pas à un des groupes d’utilisateurs, alors la donnée ne sera affichée pour aucun utilisateur.

  • Ajouter la couche dans le tableau Filtrer les données par utilisateur situé dans l’onglet Outils du plugin Lizmap :

    • Sélectionner la couche dans la liste déroulante

    • Sélectionnez le champ qui contient l’identifiant du groupe pour la couche

    • Ajoutez la couche dans la liste avec le bouton « Ajoutez la couche »

    • Pour supprimer une couche de la table, cliquez sur celle-ci et sur le bouton « supprimer la couche ».

  • Désactivez le cache client et le cache serveur pour toute les couches filtrées. Autrement les données affichées ne seront pas mise à jour entre chaque connexions ou déconnexions !

Time Manager - Animation de couches de vecteurs temporels

Vous pouvez créer des animations pour vos vecteurs, du moment que vous avez au moins une couche avec une colonne ayant des dates/heures valides. Vous devez sélectionner à partir du plugin :

  • au moins une couche avec date/heure

  • la colonne avec date/heure

  • le nombre et le type d’unité de temps pour chaque étape de l’animation

  • la durée, en millisecondes, de chaque étapes (par défaut cela affiche des blocs de 10 jours pour chaque seconde)

  • un champ à afficher comme label quand la souris est au dessus des objets

  • optionnellement, un ID et un titre pour les groupes d’objets

Quand c’est prêt, votre application web affichera le symbole d’une montre; En cliquant dessus, cela ouvrira un petit panneau qui vous permettra de vous déplacer entre chaque étape, ou de démarrer l’animation entière. Au démarrage, l’application chargera entièrement la table, ainsi si vous avez des milliers d’objets, vous pourriez être contraint d’attendre plusieurs secondes avant que l’application soit disponible.

Un tutoriel vidéo est disponible ici : https://vimeo.com/83845949. Il montre toutes les étapes pour utiliser cette fonctionnalité

Site de démonstration : http://demo.lizmap.3liz.com/index.php/view/?repository=rep6

Note

Plusieurs formats différents pour les dates/heures/ sont acceptés (ceux supportés par la bibliothèque JS DateJS). Vous pouvez vérifier si votre format est supporté en allant sur la page http://www.datejs.com/

Les statistiques avec la 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

Vous pouvez facilement le configurer avec le plugin Lizmap dans Qgis à partir de l’onglet Dataviz.

../_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: Pour ajouter un graphique, vous devez le configurer dans cette zone de l’onglet.

  • 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.

  • « Champ Y secondaire » : Vous pouvez ajouter une champ Y secondaire, cela ne fonctionne pas avec tous les types de graphiques, seulement les histogrammes 2D.

  • « Champ couleur2 ? » : Vous pouvez choisir la couleur du 2nd champ Y de la même manière que vous avez choisi celle du 1er champ Y.

  • 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.

Lorsque tout est configuré, vous devez cliquer sur le bouton « Ajouter la couche » situé en bas de la fenêtre.

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

Options de la couche

  • l’atlas est actif ou non dans votre projet

  • vous devez choisir la couche sur laquelle vous voulez réaliser votre atlas

  • sélectionnez le champ de clé primaire, ce doit être un entier

  • cochez si vous voulez afficher la description de la couche dans le dock de votre atlas

  • choisissez le champ qui contient le nom de vos entités, il sera affiché à la place de la clé primaire dans la liste des entités

  • votre atlas sera trié en fonction de ce champ

  • Vous pouvez choisir de mettre en surbrillance l’entité sélectionnée par l’atlas, elle changera chaque fois qu’elle passe à une nouvelle entité

  • Choisissez entre un zoom sur l’entité ou en faire le centre de votre carte

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

  • cochez si vous voulez activer le filtre sur l’entité sélectionnée par l’atlas, cela masquera toutes les autres entités de la couche et affichera uniquement celle sélectionnée

Options de l’atlas :

  • Vérifiez si vous voulez ouvrir l’outil Atlas lorsque vous ouvrez votre projet

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

  • Vous pouvez sélectionner la durée entre chaque étape lorsque votre atlas est en mode de lecture automatique

  • cochez si vous voulez lancer le mode de lecture automatique quand vous ouvrez le projet

Changer l’image par défaut d’un projet

Par défaut, l’image suivante est affiché pour un projet :

../_images/mapmonde.png

Vous pouvez modifier cette image par défaut en ajoutant dans le dossier contenant le projet une image .png dont le nom est exactement le même que le projet avec l’extension. Par exemple : si le projet s’appelle montpellier.qgs, vous pouvez ajouter une image nommée montpellier.qgs.png. Notez bien que l’image porte aussi l’extensio du projet.