Édition

Principe

It is possible to allow users to edit spatial and attribute data from the Lizmap Web Client interface for PostgreSQL layers. The Lizmap plugin allows you to add one or more layers and choose what actions for each will be possible in the web interface:

  • 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

  • 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

  • Have vector layer stored in PostgreSQL.
  • The vector layer mustn’t have space in field names.
  • Configure the editing tool for the layer in Layer Properties ‣ Attributs Form. This is not required but recommended to control the data entered by users. See Personnaliser le formulaire d’édition for more information about layout, widgets, expressions, constraints in a form.
  • 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 !

Please refer to the QGIS documentation to see how to create a spatial layer in a PostgreSQL database: 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

It is possible to upload your files, including images, for each feature, during online editing; to achieve this, you need to:

  • Configure edition for the layer, with one or more fields with the edit type Photo or File. For example, let say the field name is photo

  • Create a folder at the root of the QGIS project file : media/ and a subfolder media/upload (obviously you need to do that locally in your computer and server side).

  • Give to the webserver user (usually www-data) write permission on the upload folder, so that it can create files and folders in 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 will then create folders to store the data, depending on the layer name, field name, etc. For example, a file would be stored in the folder media/upload/PROJECT_NAME/LAYER_NAME/FIELD_NAME/FILE_NAME.EXT and an image in 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

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