Édition

Principe

Il est possible d’autoriser des utilisateurs à éditer des données spatiales et attributaires depuis Lizmap Web Client pour les couches PostgreSQL. Le plugin Lizmap vous permet d’ajouter une ou plusieurs couches et de choisir quelles actions seront permises 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 l’extension 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

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

Pré-requis

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

  • Avoir une couche vectorielle stockée dans PostgreSQL.

  • La couche vectorielle ne doit pas comporter d’espace dans les noms de champs.

  • Configurez l’outil d’édition de la couche dans Propriétés de la couche ‣ Formulaire d’attributs. Ce n’est pas obligatoire mais recommandé pour contrôler les données saisies par les utilisateurs. Voir Personnaliser le formulaire d’édition pour plus d’informations sur la disposition, les widgets, les expressions, les contraintes dans un formulaire.

  • La couche doit publiée en WFS (voir Capacités des services OGC) et la clé primaire doit aussi être publiée dans les Propriétés de la couche.

  • Bien que nous souhaitions éditer la couche, il n’est pas nécessaire d’utiliser les cases à cocher Mise à jour, Insérer et Supprimer dans la table des capacités WFS de l’onglet QGIS Server. Lizmap n’utilise pas WFS-T. Lizmap fera l’édition directement sur la source de données. La configuration se fait uniquement dans le panneau décrit plus bas.

  • Par conséquence :

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.

Configurer l’outil

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 QGIS pour voir comment créer une couche spatiale dans une base de données PostgreSQL : https://docs.qgis.org/latest/en/docs/user_manual/managing_data_source/index.html.

../../_images/interface-add-edition-layer.jpg
  • Pour ajouter une couche avec l’édition:

    1. Cliquer sur le bouton add_layer_svg.

    2. Sélectionner la couche dans la liste déroulante

    3. Cocher les actions que vous souhaitez activer parmi:
      • Créer

      • Éditer les attributs

      • Éditer la géométrie

      • Supprimer

    4. Optionnel, vous pouvez ajouter une liste des groupes qui sont autorisés pour l’édition (séparés par des virgules).

    5. L’accrochage peut-être activé si vous sélectionner au moins une couche dans la liste.
      • La couche doit publiée en WFS (voir Capacités des services OGC) et la clé primaire doit aussi être publiée dans les Propriétés de la couche.

    6. Si au moins une couche est sélectionnée ci-dessus, au moins une case à cocher doit être cochée:
      • Sommets

      • Segments

      • Intersections

    7. Il est possible de définir la tolérance pour l’accrochage.

  • Pour éditer une couche dans la table, sélectionner la et cliquer sur le bouton edit_layer_svg ou alors double-cliquer sur la ligne.

  • Pour supprimer une couche de la table, cliquez sur celle-ci puis sur le bouton remove_layer_svg.

  • Pour monter ou descendre une couche, vous devez la sélectionner et cliquer down_layer_svg ou up_layer_svg. L’ordre changera dans Lizmap également.

  • Les alias des champs seront affichés si définis . Voir Ajouter un alias sur un champ.

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

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

Ajouter des images et des fichiers pour les attributs

Utiliser le dossier media/upload par rapport à un projet

Il est possible de téléverser vos fichiers, y compris les images, pour chaque fonctionnalité, lors de l’édition en ligne ; pour cela, vous devez :

  • Configurez l’édition pour la couche, avec un ou plusieurs champs avec le :guilabel:type d'édition Photo` ou Fichier. Par exemple, disons que le nom du champ est « photo ».

  • Créez un dossier à la racine du fichier du projet QGIS : media/ et un sous-dossier media/upload (évidemment vous devez faire cela localement sur votre ordinateur et côté serveur).

  • Donnez à l’utilisateur du serveur web (généralement www-data) les droits d’écriture sur le dossier upload, afin qu’il puisse créer des fichiers et des dossiers dans media/upload :

    chmod 775 -R media/upload && chown :www-data -R media/upload

  • Vérifiez le fichier php.ini pour voir si les variables post_max_size et upload_max_filesize sont correctement définies (par défaut, PHP n’autorise que le téléchargement de fichiers que jusqu’à 2 Mo)

Lizmap va ensuite créer des dossiers pour stocker les données, en fonction du nom de la couche, du nom du champ, etc. Par exemple, un fichier sera stocké dans le dossier 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

Vous pouvez remplacer le dossier de destination par défaut media/upload/PROJECT_NAME/LAYER_NAME/FIELD_NAME/FILE_NAME.EXT en définissant manuellement le chemin où stocker les médias, par rapport au projet. Pour ce faire, vous devez utiliser le widget d’édition de champ Pièce jointe, et le configurer avec :

  • un Chemin par défaut écrit relativement au projet. Par exemple ../media/images/ si vous souhaitez stocker les fichiers de ce champ dans un dossier media situé à côté du dossier du projet. Vous pouvez également choisir de définir un chemin à l’intérieur du dossier media du projet. Par exemple media/my_target_folder/.

  • cochez la case Chemin relatif, avec l’option par défaut Relative to project path.

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

Cela permet de stocker les fichiers médias et les images envoyés dans un dossier centralisé, par exemple un répertoire media au même niveau que les dossiers des dépôts de Lizmap :

  • media

    • images <– Pour stocker les images dans ce dossier, utilisez ../media/images/.

    • pdf

  • environnement

    • trees.qgs

    • trees.qgs.cfg

    • media

      • tree_pictures/ <– pour stocker les images dans ce dossier, utilisez : media/tree_pictures/”.