Editing — Edit a layer from the web interface

Regola

E” possibile permettere agli utenti di modificare i dati spaziali e degli attributi dall’interfaccia Lizmap Web Client per i livelli PostgreSQL. Il plugin Lizmap permette di aggiungere uno o più livelli e di scegliere quali azioni per ciascuno saranno possibili nell’interfaccia web:

  • creare elementi

  • modificare attributi

  • modificare la geometria

  • cancellare elementi

Il form web presentato all’utente per popolare la tabella degli attributi supporta gli strumenti di modifica disponibili nella scheda campi delle proprietà dei livelli vettoriali di QGIS. È possibile configurare un menu a tendina, nascondere una colonna, renderla non modificabile, utilizzare una casella di controllo, un’area di testo, ecc. Tutta la configurazione è fatta con il mouse, in QGIS e nel plugin Lizmap.

Inoltre, Lizmap Web Client rileva automaticamente il tipo di colonna (intero, reale, stringa, ecc.) e aggiunge i controlli necessari sui campi.

Esempi

  • Una città desidera che i cittadini identifichino i problemi visibili sulla strada: spazzatura non raccolta, lampioni rotti, relitti da rimuovere. L’amministratore del progetto QGIS crea un livello dedicato alla raccolta dei dati e li visualizza a tutti.

  • Un ufficio di ingegneria vuole permettere ai partner del progetto di tracciare delle osservazioni sulle aree del progetto. Permette l’aggiunta di poligoni in un livello dedicato.

Prerequisiti

Per consentire la modifica dei dati in Lizmap Web Client, è necessario:

  • Far memorizzare il livello vettoriale in PostgreSQL.

  • Il livello vettoriale non deve avere spazi nei nomi dei campi.

  • Configura lo strumento di editing per il livello in Proprietà del livello ‣ Modulo attributi. Questo non è richiesto ma raccomandato per controllare i dati inseriti dagli utenti. Vedi Personalizzare il form di edit per maggiori informazioni su layout, widget, espressioni, vincoli in un form.

  • Il livello deve essere pubblicato come WFS (vedi WFS/OAPI) e la chiave primaria deve essere pubblicata anche nelle Proprietà del livello.

  • Nonostante si voglia modificare il livello, non c’è bisogno di usare le caselle di controllo Update, Insert e Delete nella tabella WFS nella scheda QGIS Server. Lizmap non usa WFS-T. Lizmap effettuerà la modifica direttamente sul datasource. La configurazione viene fatta solo nel pannello descritto di seguito.

  • Conseguentemente a quanto sopra:

Nota

Fate attenzione se il vostro livello contiene dei valori Z o M, sfortunatamente Lizmap li imposterà a «0» che è il valore di default quando si salva nel database.

Configurazione del plugin

Ecco i passi dettagliati:

  • Se necessario, create un livello nel vostro database con il tipo di geometria desiderato (punto, linea, poligono, ecc.)

    • pensate ad aggiungere una chiave primaria: è essenziale!

    • la colonna chiave primaria deve essere di tipo auto-incrementale. Per esempio serial in PostgreSQL.

    • pensare di aggiungere un indice spaziale: questo è importante per le prestazioni

    • creare tanti campi quanti ne servono per gli attributi: se possibile, usare nomi di campi semplici!

Please refer to the QGIS documentation to see how to create a spatial layer in a PostgreSQL database.

../../_images/interface-add-edition-layer.jpg
  • Per abilitare un livello con capacità di editing:

    1. Fai clic sul pulsante add_layer_svg.

    2. Seleziona il livello nell’elenco a discesa

    3. Controlla le azioni che vuoi attivare:
      • Create

      • Modifica attributi

      • Modifica geometria

      • Cancella

    4. Opzionale, puoi aggiungere una lista di gruppi che sono autorizzati a modificare, separati da una virgola.

    5. Lo snap può essere attivato se si seleziona almeno un livello nella lista dei livelli.
      • Il livello deve essere pubblicato come WFS (vedi WFS/OAPI) e la chiave primaria deve essere pubblicata anche nelle Proprietà del livello.

    6. Se un livello sopra è selezionato, almeno una casella di controllo deve essere utilizzata:
      • Vertici

      • Segmenti

      • Intersezioni

    7. È possibile impostare la tolleranza per lo snap.

  • Per modificare un livello nella tabella, selezionalo e clicca sul pulsante edit_layer_svg o fai doppio clic sulla riga.

  • Per rimuovere un livello dalla tabella, selezionalo e clicca sul pulsante remove_layer_svg.

  • Per spostare un livello in alto o in basso, selezionatelo e cliccate sui pulsanti down_layer_svg o up_layer_svg. L’ordine cambierà anche in Lizmap.

  • I campi saranno visualizzati con il loro alias se è definito. Vedi Aggiungere un alias ad un campo.

Configuring the form

The form in Lizmap is inherited from the Layer Properties. Read the Personalizzare il form di edit.

Riutilizzare i dati dei livelli di editing

I livelli che avete selezionato per lo strumento di modifica sono «livelli come gli altri», il che significa:

  • Si possono creare stili ed etichette che vengono applicati a questi livelli. Si possono creare stili ed etichette che dipendono da un valore di una colonna del livello.

  • Se si vuole proporre lo strumento di editing, ma non permette agli utenti di visualizzare i dati del layer online (e quindi le aggiunte di altri utenti): si può semplicemente nascondere i layer di editing mettendoli in una directory nascosta. Vedi Mascherare i singoli livelli.

  • I livelli sono stampabili se non sono mascherati.

  • I dati sono memorizzati in un livello del progetto. L’amministratore può recuperare questi dati e utilizzarli in seguito.

Nota

Utilizzo della cache: se si vuole utilizzare la cache del server o del client per la modifica dei livelli, lo si faccia consapevolmente: i dati non saranno visibili agli utenti finché la cache non sarà scaduta. Suggeriamo di non abilitare la cache per la modifica dei livelli.

Aggiungere file e immagini per gli elementi

Utilizzare la cartella media/upload relativa al progetto

È possibile caricare i vostri file, comprese le immagini, per ogni elemento, durante l’editing online; per ottenere questo, è necessario:

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

  • Crea una cartella alla radice del file del progetto QGIS: media/ e una sottocartella media/upload (ovviamente devi farlo localmente nel tuo computer e lato server).

  • Dare all’utente del webserver (di solito www-data) il permesso di scrittura sulla cartella di upload, in modo che possa creare file e cartelle in media/upload:

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

  • Controlla il tuo php.ini per vedere se le variabili post_max_size e upload_max_filesize sono impostate correttamente (per default, PHP permette di caricare solo file fino a 2 Mbyte)

Lizmap creerà poi delle cartelle per memorizzare i dati, a seconda del nome del livello, del nome del campo, ecc. Per esempio, un file verrebbe memorizzato nella cartella media/upload/PROJECT_NAME/LAYER_NAME/FIELD_NAME/FILE_NAME.EXT e un’immagine in media/upload/environment/observations/species_picture/my_picture.png.

Ovviamente sarete in grado di visualizzare questa immagine (o qualsiasi altro file) nel popup, poiché sarà memorizzata nella cartella media. Vedi Uso nel pop-up.

Utilizzare una cartella di destinazione specifica

Si può sovrascrivere la cartella di destinazione predefinita media/upload/PROJECT_NAME/LAYER_NAME/FIELD_NAME/FILE_NAME.EXT impostando manualmente il percorso dove memorizzare i media, relativamente al progetto. Per farlo, devi usare il widget di modifica del campo External resource e configurarlo con:

  • un Percorso predefinito scritto relativo al progetto. Per esempio ../media/images/ se vuoi memorizzare i file di questo campo in una cartella media situata accanto alla cartella del progetto. Puoi anche scegliere di impostare un percorso all’interno della cartella media del progetto. Per esempio media/my_target_folder/.

  • selezionare la casella di controllo Percorso relativo, con l’opzione predefinita :guilabel:`Relativo al percorso del progetto

  • se il campo deve memorizzare un’immagine, si dovrebbe anche spuntare la casella Visualizzatore di documenti integrato, con il tipo Image.

Questo permette di memorizzare i file multimediali e le immagini inviate in una cartella centralizzata, per esempio una directory media allo stesso livello delle cartelle dei repository Lizmap:

  • media

    • images <– per memorizzare le immagini in questa cartella, usare ../media/images/

    • pdf

  • ambiente

    • trees.qgs

    • trees.qgs.cfg

    • media

      • tree_pictures/ <– per memorizzare le immagini in questa cartella, usare: media/tree_pictures/

Use a WebDAV remote storage

It is possible to store your files in a remote server that supports the WebDAV protocol (e.g. Nextcloud). To achieve this you must:

  • Configure the Attachments edit widget for the chosen field as follow:

    1. In the Storage type field, select the WebDAV Storage option

    2. In the External Storage` section, on the Store URL field, add an expression which indicates the full URL of the remote path for the file. The expression string must:

    • start with the remote storage URL of the root folder of the WebDAV server

    • include or not any destination subfolder

    • end with the file_name(@selected_file_path) expression

    1. Update the Authentication section with your user name and password (optional, read below about authentication)

    ../../_images/webdav-configure-attachment-widget.jpg

    For example, if you want to upload a file in your WebDAV server https://webdav/dav in the subfolder pictures/2024/ then the full expression will be:

    'https://webdav/dav/pictures/2024/'||file_name(@selected_file_path)

    You can also upload a file directly in the root folder, simply change the expression above in 'https://webdav/dav/'||file_name(@selected_file_path)

    Suggerimento

    You can configure different fields on the same layer or in different layers to upload files to your remote storage under different subfolders.

  • Configure your Lizmap installation to recognize your WebDAV storage. To do so in your var/config/profiles.ini.php edit the [webdav:default] section:

    [webdav:default]
    baseUri=https://webdav/dav/
    enabled=1
    user=mywebdavuser
    password=mywebdavpassword
    

    where:

    • baseUri is the root folder of your WebDAV server. It must end with / and it must be the same as indicated in the Attachment widget

    • enabled set it to 1 switch on the WebDAV configuration, or to 0 to switch it off

    • user, WebDAV baseUri authentication user, same as same as configured in the Authentication section of External storage

    • password, WebDAV baseUri authentication password, same as above

    Nota

    user and password fields are not mandatory, depends on how you intend to manage the WebDAV storage.

    Nota

    Configure multiple WebDAV servers on the same Lizmap installation is not supported, so you can configure only one WebDAV endpoint per installation.

    Avvertimento

    To get files from remote storage the baseUri will be exposed on the web client.

    Avvertimento

    If an user upload two files with the same name the first file could be overwritten. This behaviour cannot be controlled by Lizmap since it concerns the configuration and the structure of the WebDAV server.

    Suggerimento

    To prevent files from being overwritten you can set the Store URL by placing a uuid in front of the file name, for example: 'https://webdav/dav/pictures/2024/'||uuid('WithoutBraces')||'_'||file_name(@selected_file_path)

After you had done the two configuration steps above you are able to:

Avvertimento

Unfortunately, this feature is not yet compatible with Lizmap Cloud.