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 Personalizzare il form di edit per maggiori informazioni su layout, widget, espressioni, vincoli in un form.
. Questo non è richiesto ma raccomandato per controllare i dati inseriti dagli utenti. VediIl 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:
Le credenziali non devono utilizzare il sistema di autenticazione fornito da QGIS per un livello con capacità di editing. Le credenziali devono essere o nel file di progetto QGS o nel file di servizio PostgreSQL (consigliato, più sicuro perché le credenziali non sono memorizzate nel progetto QGIS) :
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.
Per abilitare un livello con capacità di editing:
Fai clic sul pulsante .
Seleziona il livello nell’elenco a discesa
- Controlla le azioni che vuoi attivare:
Create
Modifica attributi
Modifica geometria
Cancella
Opzionale, puoi aggiungere una lista di gruppi che sono autorizzati a modificare, separati da una virgola.
- 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.
- Se un livello sopra è selezionato, almeno una casella di controllo deve essere utilizzata:
Vertici
Segmenti
Intersezioni
È possibile impostare la tolleranza per lo snap.
Per modificare un livello nella tabella, selezionalo e clicca sul pulsante o fai doppio clic sulla riga.
Per rimuovere un livello dalla tabella, selezionalo e clicca sul pulsante .
Per spostare un livello in alto o in basso, selezionatelo e cliccate sui pulsanti o . 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
orFile
. For example, let say the field name isphoto
.Crea una cartella alla radice del file del progetto QGIS:
media/
e una sottocartellamedia/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 variabilipost_max_size
eupload_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 esempiomedia/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:
In the Storage type field, select the WebDAV Storage option
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
Update the Authentication section with your
user name
andpassword
(optional, read below about authentication)
For example, if you want to upload a file in your WebDAV server
https://webdav/dav
in the subfolderpictures/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 widgetenabled
set it to1
switch on the WebDAV configuration, or to0
to switch it offuser
, WebDAVbaseUri
authentication user, same as same as configured in the Authentication section of External storagepassword
, WebDAVbaseUri
authentication password, same as above
Nota
user
andpassword
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:
upload a new file from the layer edition form
delete an existing file from the layer edition form
access the file via Attribute table (see Attribute table — Configure the attribute table and the vector selection)
access the file or get a preview of the file content via Popup (see Uso nel pop-up)
Avvertimento
Unfortunately, this feature is not yet compatible with Lizmap Cloud.