Outdated version of the documentation. Find the latest one here.

` `

Lavorare con la tabella degli attributi

The attribute table displays information on features of a selected layer. Each row in the table represents a feature (with or without geometry), and each column contains a particular piece of information about the feature. Features in the table can be searched, selected, moved or even edited.

Foreword: Spatial and non-spatial tables

QGIS allows you to load spatial and non-spatial layers. This currently includes tables supported by OGR and delimited text, as well as the PostgreSQL, MSSQL, SpatiaLite, DB2 and Oracle provider. All loaded layers are listed in the Layers Panel. Whether a layer is spatially enabled or not determines whether you can interact with it on the map.

Non-spatial tables can be browsed and edited using the attribute table view. Furthermore, they can be used for field lookups. For example, you can use columns of a non-spatial table to define attribute values, or a range of values that are allowed, to be added to a specific vector layer during digitizing. Have a closer look at the edit widget in section Fields Properties to find out more.

Introducing the attribute table interface

To open the attribute table for a vector layer, activate the layer by clicking on it in the Pannello dei Layer. Then, from the main Layer menu, choose openTable Open Attribute Table. It is also possible to right-click on the layer and choose openTable Open Attribute Table from the drop-down menu, or to click on the openTable Open Attribute Table button in the Attributes toolbar.

This will open a new window that displays the feature attributes for the layer (figure_attributes_table). According to the setting in Settings ‣ Options ‣ Data sources menu, the attribute table will open in a docked window or a regular window. The total number of features in the layer and the number of currently selected/filtered features are shown in the attribute table title, as well as if the layer is spatially limited.

../../../_images/vectorAttributeTable.png

Tabella degli attributi per il layer regions

I pulsanti nella parte superiore della finestra della tabella degli attributi forniscono le seguenti funzionalità:

Icona

Etichetta

Azione

Scorciatoie da tastiera

toggleEditing

Attivare/disattivare modalità modifica

Attivare modalità modifica

Ctrl+E
multiEdit

Attivare modalità modifica multipla

Aggiornare più campi di molte geometrie

 
saveEdits

Salva modifiche

Salva le modifiche in corso

Ctrl+S
draw

Ricarica la tabella

   
newTableRow

Aggiungi geometria

Aggiungi un nuovo oggetto senza geometria

 
deleteSelected

Eliminare geometrie selezionate

Rimuovi le geometrie selezionate dal layer

 
expressionSelect

Seleziona le geometrie usando un’espressione

   
selectAll

Seleziona tutto

Seleziona tutte le geometrie del layer

Ctrl+A
invertSelection

Inverti la selezione

Inverti la selezione corrente del layer

Ctrl+R
deselectAll

Deseleziona tutto

Deseleziona tutte le geometrie del layer corrente

Ctrl+Shift+A
filterMap

Filtra/Seleziona le geometrie usando un modulo

  Ctrl+F
selectedToTop

Sposta la selezione in cima

Sposta le righe selezionate in cima alla tabella

 
panToSelected

Spostare mappa alle righe selezionate

  Ctrl+P
zoomToSelected

Zoom mappa alle righe selezionate

  Ctrl+J
copySelected Copy selected rows to clipboard   Ctrl+C
editPaste

Incolla le geometrie dagli appunti

Inserisci nuove geometrie da quelle copiate

Ctrl+V
newAttribute

Nuovo campo

Aggiungi un nuovo campo ai dati originari

Ctrl+W
deleteAttribute

Eliminare campo

Rimuovi un campo dall’origine dati

Ctrl+L
calculateField

Aprire il calcolatore di campo

Aggiornare il campo per molte geometrie in una riga

Ctrl+I
conditionalFormatting

Formattazione condizionale

Abilitare formattazione tabella

 

Tabella Attributo 1: Strumenti disponibili

Nota

A seconda del formato dei dati e della libreria OGR creata con la versione di QGIS, alcuni strumenti potrebbero non essere disponibili.

Sotto questi pulsanti c’è un pulsante (abilitato solo in modalità modifica), che ti consente di applicare rapidamente filtri e calcoli a tutti o parte degli elementi nel vettore. Per i calcoli usa le stesse ref:expressions <vector_expressions> del calculateField Calcolatore di campi (vedi Modifica dei valori nella tabella degli attributi).

Suggerimento

Skip WKT geometry

If you want to use attribute data in external programs (such as Excel), use the copySelected Copy selected rows to clipboard button. You can copy the information without vector geometries if you deactivate the checkbox Copy geometry in WKT representation from attribute table option in Settings ‣ Options ‣ Data Sources menu.

Visualizzazione Tabella e Visualizzazione Modulo

QGIS fornisce due modi di visualizzazione per manipolare facilmente i dati nella tabella degli attributi:

  • the openTable Table view, displaying values of multiple features in a tabular mode, each row representing a feature and each column a field;
  • and the formView Form view which shows identifiers of features in a first panel and displays only the attributes of the clicked identifier in the second one. Form view uses the layer fields configuration (see Fields Properties).

You can switch from one mode to the other by clicking the convenient icon at the bottom right of the dialog.

Puoi anche specificare la modalità di Vista predefinita all’apertura della tabella degli attributi nel menu Impostazioni ‣ Opzioni ‣ Sorgente dei dati. Può essere ‘Ricorda ultima vista’, ‘Vista tabella’ o ‘Vista modulo’.

../../../_images/attribute_table_views.png

Tabella degli Attributi nei formati di visualizzazione Modulo (in alto) e Tabella (in basso)

Configuring the columns

Fai click con il pulsante destro del mouse in un’intestazione di colonna quando sei è in visualizzazione tabella per accedere agli strumenti che ti consentono di definire ciò che può essere visualizzato e come nella tabella degli attributi.

Hiding and organizing columns and enabling actions

Facendo click con il pulsante destro del mouse in un’intestazione di colonna, puoi scegliere di nasconderla dalla tabella degli attributi. Per modificare contemporaneamente il comportamento di più colonne, mostrare una colonna o cambiare l’ordine delle colonne, scegli Organizza colonne .... Nella nuova finestra di dialogo puoi:

  • selezionare/deselezionare le colonne da visualizzare o nascondere

  • trascinare e rilasciare gli oggetti per riordinare le colonne nella tabella degli attributi. Si noti che questa modifica riguarda la visualizzazione della tabella e non modifica l’ordine dei campi nell’origine dati del layer

  • abilitare una nuova colonna virtuale Azioni che visualizza in ciascuna riga una casella a discesa o un elenco di pulsanti di azioni per ciascuna riga, per ulteriori informazioni sulle azioni, vedi Proprietà Azioni.

Resizing columns widths

La larghezza delle colonne può essere impostata tramite un click destro sull’intestazione della colonna e selezionare:

  • Imposta larghezza... per immettere il valore desiderato. Per impostazione predefinita, il valore corrente viene visualizzato nel widget

  • DimensioneAuto per ridimensionare al meglio la colonna.

Può essere modificata anche trascinando il limite a destra della colonna con il mouse tenendo premuto il tasto sinistro. La nuova dimensione della colonna viene mantenuta per il layer e viene ripristinata all’apertura successiva della tabella degli attributi.

Sorting columns

La tabella può essere ordinata su qualsiasi colonna, facendo click sull’intestazione della colonna. Una piccola freccia indica l’ordine di ordinamento (verso il basso significa scendere i valori dalla riga superiore in basso, verso l’alto significa valori ascendenti dalla riga superiore in basso). Puoi anche ordinare le righe con l’opzione di ordinamento del menu contestuale dell’intestazione di colonna e scrivere un’espressione, ad esempio per ordinare la riga con più colonne puoi scrivere concat(col0, col1).

Nella visualizzazione modulo, l’identificatore degli elementi può essere ordinato utilizzando l’opzione sort Ordina tramite anteprima espressione.

Suggerimento

Sorting based on columns of different types

Trying to sort an attribute table based on columns of string and numeric types may lead to unexpected result because of the concat("USE", "ID") expression returning string values (ie, 'Borough105' < 'Borough6'). You can workaround this by using eg concat("USE", lpad("ID", 3, 0)) which returns 'Borough105' > 'Borough006'.

Formatting of table cells using conditions

Conditional formatting settings can be used to highlight in the attribute table features you may want to put a particular focus on, using custom conditions on feature’s:

  • geometria (ad esempio, identificazione delle geometrie multi-parti, piccole aree o in una estensione limitata della mappa ...);

  • or field value (e.g., comparing values to a threshold, identifying empty cells...)

Puoi abilitare il pannello di formattazione condizionale cliccando in alto a destra nella finestra attributi in visualizzazione tabella (non disponibile in visualizzazione modulo).

Il nuovo pannello consente all’utente di aggiungere nuove regole per modificare la visualizzazione del radioButtonOnCampo o radioButtonOffRiga intera. L’aggiunta di una nuova regola apre un modulo per definire:

  • il nome della regola;

  • una condizione che utilizza una qualsiasi delle funzioni del expression builder

  • la formattazione: può essere scelta da un elenco di formati predefiniti o creata in base a proprietà come:

    • colori di sfondo e testo;

    • uso dell’icona;

    • grassetto, corsivo, sottolineato o testo barrato;

    • carattere.

../../../_images/attribute_table_conditional_formating.png

Formattazione condizionale di una tabella degli attributi

Interagire con le geometrie nella tabella degli attributi

Selezionare geometrie

Nella vista tabella, ogni riga nella tabella degli attributi visualizza gli attributi di una specifica geometria nel layer. Selezionando una sola riga si seleziona una geometria e allo stesso modo, selezionando una geometria nella mappa (in caso di geometria del layer attivato), viene selezionata la corrispondente riga nella tabella degli attributi. Se viene modificato un insieme di geometrie selezionate nella mappa (o nella tabella degli attributi), la selezione viene aggiornata anche nella tabella degli attributi (o nella visualizzazione della mappa).

Le righe possono essere selezionate facendo clic sul numero di riga sul lato sinistro della riga. È possibile contrassegnare più righe tenendo premuto il tasto Ctrl. Una selezione continua può essere effettuata tenendo premuto il tasto Shift e facendo click su più intestazioni di riga sul lato sinistro delle righe. Sono selezionate tutte le righe tra la posizione corrente del cursore e la riga cliccata. Spostando la posizione del cursore nella tabella degli attributi, facendo clic su una cella nella tabella, non cambia la selezione di riga. Cambiare la selezione nella finestra principale non sposta la posizione del cursore nella tabella degli attributi

Nella impostazione visualizzazione della tabella degli attributi, le geometrie vengono identificate per default nel pannello di sinistra per il valore del loro campo visualizzato (vedere Scheda Suggerimenti). Questo identificatore può essere sostituito utilizzando l’elenco a discesa nella parte superiore del pannello, selezionando un campo esistente o utilizzando un’espressione personalizzata. Puoi inoltre scegliere di ordinare l’elenco delle geometrie dal menu a discesa.

Fai click su un valore nel pannello di sinistra per visualizzare gli attributi della geometria nella destra. Per selezionare una geometria, devi fare click all’interno del simbolo quadrato a sinistra dell’identificatore. Per impostazione predefinita, il simbolo diventa giallo. Come nella visualizzazione tabella, puoi eseguire la selezione di più geometrie utilizzando le combinazioni di tasti precedentemente esposte.

Oltre a selezionare le geometrie con il mouse, è possibile eseguire la selezione automatica in base all’attributo della geometria utilizzando gli strumenti disponibili nella barra degli strumenti della tabella degli attributi, ad esempio (vedi la sezione Selezione automatica e la successiva per ulteriori informazioni e casi d’uso):

  • expressionSelect Seleziona con espressione....

  • formSelect Seleziona geometrie per valore....

  • deselectAll Deseleziona tutto

  • selectAll Seleziona tutte le geometrie

  • invertSelection Inverti la selezione delle geometrie.

È anche possibile selezionare le geometrie utilizzando Filtering and selecting features using forms.

Filtrare geometrie

Una volta che hai selezionato le geometrie nella tabella degli attributi, potresti voler visualizzare solo questi record nella tabella. Questo può essere fatto facilmente utilizzando la voce Mostra gli elementi selezionati dall’elenco a discesa in basso a sinistra della finestra di dialogo della tabella degli attributi. Questa lista offre i seguenti filtri:

  • Mostra tutti gli elementi

  • Mostra gli elementi selezionati

  • Mostra gli elementi visibili nella mappa

  • Mostra gli elementi modificati ed i nuovi

  • Filtro campo: consente all’utente di eseguire il filtro in base al valore di un campo: scegliere una colonna da un elenco, digitare un valore e premere Enter per filtrare. Quindi, nella tabella degli attributi vengono visualizzati solo gli elementi corrispondenti.

  • Advanced filter (Expression) - Opens the expression builder dialog. Within it, you can create complex expressions to match table rows. For example, you can filter the table using more that one field. See Espressioni for more information.

È inoltre possibile filtrare elementi utilizzando Filtering and selecting features using forms.

Nota

Filtrare records fuori dalla tabella degli attributi non consente di eliminare gli elementi dal layer; essi sono semplicemente momentaneamente nascosti dalla tabella e si possono selezionare sulla mappa ovvero si può rimuovere il filtro. Per filtri che nascondono gli elementi dal layer, utilizzare il Query Builder.

Suggerimento

Aggiornare il filtraggio della sorgente dati con Mostra gli elementi visibili nella mappa

Quando per motivi di prestazione, gli elementi visualizzati nella tabella degli attributi sono limitati nella visualizzazione mappa alla sua apertura (vedi Data Source Options per come fare), selezionando Mostra gli elementi visibili nella mappa su una nuova estensione di visibilità della mappa si aggiorna la precedente restrizione spaziale.

Filtering and selecting features using forms

Facendo clic su filterMap Seleziona/filtra usando un modulo o premento Ctrl+F la finestra di dialogo della tabella degli attributi passerà alla visualizzazione modulo e tutti i widget verranno sostituiti con la loro variante di ricerca

Da questo punto in poi, questa funzionalità degli strumenti è simile a quella descritta nelle Seleziona geometrie per valore.., in cui è possibile trovare le descrizioni di tutti gli operatori e selezionarne le modalità.

Inoltre, nel caso della tabella degli attributi, c’è anche in basso a sinistra un guilabel:Filtra elementi che consente di configurare le modalità di selezione e di creare un Filtro avanzato (Espressione).

../../../_images/tableFilteredForm.png

Filtro tramite modulo della tabella degli attributi

Se ci sono elementi già selezionati, puoi reimpostare il filtro usando l’elenco a discesa accanto al pulsante in basso a destra Filtra elementi. Le opzioni sono:

  • Filtra all’interno (“AND”)

  • Estendi filtro (“OR”)

To clear the filter, either select Show all features option mentioned in Filtrare geometrie, or click the clear the expression and click [Apply].

Using action on features

Gli utenti hanno diverse possibilità di manipolare elementi con il menu contestuale come:

  • Select all (Ctrl+A) the features
  • Copy the content of a cell in the clipboard with Copy cell content.
  • Zoom to feature without having to select it beforehand
  • Open form. It toggles attribute table into form view with a focus on the clicked feature
../../../_images/copyCellContent.png

Copiare il contenuto di una cella

Se vuoi utilizzare i dati degli attributi in programmi esterni (ad esempio Excel, LibreOffice, QGIS o un’applicazione Web personalizzata), seleziona una o più righe e utilizza il pulsante copySelected Copia le righe selezionate negli appunti o premi Ctrl+C.

Nel menu Impostazioni ‣ Opzioni... ‣ Sorgente dei dati, puoi definire il formato da incollare con le opzioni in Copia geometrie come:

  • Testo normale, nessuna geometria,

  • Testo normale, geometria WKT,

  • GeoJSON

Puoi anche visualizzare un elenco di azioni in questo menu contestuale. Questa opzione è attivata nella scheda Proprietà vettore ‣ Azioni. Vedi Proprietà Azioni per ulteriori informazioni sulle azioni.

Saving selected features as new layer

The selected features can be saved as any OGR-supported vector format and also transformed into another coordinate reference system (CRS). In the contextual menu of the layer, from the Layers Panel, click on Save as to define the name of the output file, its format and CRS (see section Creating new layers from an existing layer). To save the selection ensure that the checkbox Save only selected features is selected. It is also possible to specify OGR creation options within the dialog.

Modifica dei valori nella tabella degli attributi

La modifica dei valori degli attributi può essere eseguita:

  • digitando il nuovo valore direttamente nella cella, se la tabella degli attributi è in visualizzazione tabella o modulo. Le modifiche vengono quindi effettuate per cella, elemento per elemento;

  • using the field calculator: update in a row a field that may already exist or to be created but for multiple features; it can be used to create virtual fields.
  • using the quick field calculation bar: same as above but for only existing field
  • o utilizzando la modalità multi edit: aggiorna in una riga più campi per più geometrie

Using the Field Calculator

The calculateField Field Calculator button in the attribute table allows you to perform calculations on the basis of existing attribute values or defined functions, for instance, to calculate length or area of geometry features. The results can be written to a new attribute field, a virtual field, or they can be used to update values in an existing field.

Il calcolatore campo è disponibile su qualsiasi layer che supporta la modifica. Quando fai click sull’icona del calcolatore del campo, si apre la finestra di dialogo (vedi figure_field_calculator). Se il layer non è in modalità di modifica, viene visualizzato un avviso e l’utilizzo del calcolatore provoca il cambiamento di stato del layer in modalità di modifica prima del calcolo.

Based on the Expression Builder dialog, the field calculator dialog offers a complete interface to define an expression and apply it to an existing or a newly created field. To use the field calculator dialog, you first must select whether you want to only update selected features, create a new attribute field where the results of the calculation will be added or update an existing field.

../../../_images/fieldcalculator.png

Calcolatore Campo

If you choose to add a new field, you need to enter a field name, a field type (integer, real, date or string) and if needed, the total field length and the field precision. For example, if you choose a field length of 10 and a field precision of 3, it means you have 6 digits before the dot, then the dot and another 3 digits for the precision.

Un breve esempio illustra come funziona il calcolatore di campo quando si utilizza la scheda Espressione. Vogliamo calcolare la lunghezza in km del layer railroads dal dataset di esempio di QGIS:

  1. Carica lo shapefile railroads.shp in QGIS e premi openTable Apri tabella attributi.

  2. Fai clic su toggleEditing Attiva modifiche e apri la finestra di dialogo calculateField Calcolatore di campi.

  3. Seleziona la casella di controllo Crea un nuovo campo per salvare i calcoli in un nuovo campo.

  4. Aggiungi lunghezza come Nome campo in uscita e real come Tipo campo in uscita, e definisci la Lunghezza campo in uscita a 10 e la Precisione a 3.

  5. Ora fai doppio clic sulla funzione $lenght nel gruppo Geometria per aggiungerlo nella casella di espressione del Calcolatore campo.

  6. Complete the expression by typing / 1000 in the Field calculator expression box and click [Ok].
  7. Puoi ora trovare un nuovo campo lunghezza nella tabella degli attributi.

Creating a Virtual Field

A virtual field is a field based on an expression calculated on the fly, meaning that its value is automatically updated as soon as the underlying parameter changes. The expression is set once; you no longer need to recalculate the field each time underlying values change. For example, you may want to use a virtual field if you need area to be evaluated as you digitize features or to automatically calculate a duration between dates that may change (e.g., using now() function).

Nota

Uso dei Campi Virtuali

  • I campi virtuali non sono permanenti negli attributi del layer, nel senso che sono solo salvati e disponibili nei file di progetto dove sono stati creati.

  • Un campo può essere impostato virtuale solo alla sua creazione e l’espressione utilizzata non può più essere modificata: è necessario eliminare e ricreare quel campo.

Using the Quick Field Calculation Bar

While Field calculator is always available, the quick field calculation bar on top of the attribute table is only visible if the layer is in edit mode. Thanks to the expression engine, it offers a quicker access to edit an already existing field.

In quick field calculation bar, you simply need to:

  • select the existing field name in the drop-down list
  • fill the textbox with an expression you directly write or build using the expression expression button
  • and click on [Update All], [Update Selected] or [Update Filtered] button according to your need.

Editing multiple fields

A differenza degli strumenti precedenti, la modalità modifica multipla consente di modificare più attributi di diversi elementi simultaneamente. Quando il layer viene impostato in modifica, sono disponibili strumenti di modifica multipla:

  • using the multiEdit Toggle multi edit mode button from the toolbar inside the attribute table dialog,
  • o selezionando il menu Modifica ‣ multiEdit Modifica gli attributi delle geometrie selezionate

Per modificare più campi di una riga:

  1. select the features you want to edit;

  2. from the attribute table toolbar, click the multiEdit button. This will toggle the dialog to its form view. Feature selection could also be made at this step;

  3. at the right side of the attribute table, fields (and values) of selected features are shown. New widgets appear next to each field allowing for display of the current multi edit state:

    • multiEditMixedValues the field contains different values for selected features. It’s shown empty and each feature will keep its original value. You can reset the value of the field from the drop-down list of the widget.
    • multiEditSameValues all selected features have the same value for this field and the value displayed in the form will be kept.
    • multiEditChangedValues the field has been edited and the entered value will be applied to all the selected features. A message appears at the top of the dialog, inviting you to either apply or reset your modification.

    Facendo click su uno di questi widget puoi o impostare il valore corrente per il campo o ripristinare il valore originale, il che significa che puoi ripristinare le modifiche campo per campo.

  4. make the changes to the fields you want and click on Apply changes in the upper message text or any other feature in the left panel.

Le modifiche verranno applicate a tutte le geometrie selezionate. Se non è selezionata alcuna geometria, l’intera tabella viene aggiornata con le tue modifiche. Le modifiche vengono eseguite come un singolo comando di modifica. Quindi, premendo Annulla vengono ripristinate contemporaneamente le modifiche degli attributi per tutte le geometrie selezionate.

Nota

A differenza dello strumento dalla tabella degli attributi, premendo l’opzione Modifica ‣ Modifica gli attributi delle geometrie selezionate viene fornita una finestra di dialogo per definire le modifiche degli attributi. Di conseguenza, è necessario selezionare le geometrie prima dell’esecuzione.

../../../_images/attribute_multiedit.png

Modifiche di campi per più geometrie

Nota

La modalità di modifica multipla è disponibile solo per i moduli generati automaticamente o personalizzati drag and drop (vedi Customize a form for your data); non è supportato da moduli personalizzati UI.

Creare una relazione uno a molti o molti a molti

Le relazioni sono una tecnica utilizzata spesso nelle banche dati. Il concetto è che le geometrie (righe) di layer diversi (tabelle) possono appartenersi a vicenda.

Introducing 1-N relations

Come esempio hai un livello con tutte le regioni dell’Alaska (poligono) con alcuni attributi sul suo nome e il tipo regione e un ID univoco (che funge da chiave primaria).

Poi hai caricato un altro layer di punti o una tabella con informazioni sugli aeroporti che si trovano nelle regioni e desideri anche tenere traccia di questi. Se vuoi aggiungerli al layer regioni, devi creare rapporti uno a molti utilizzando chiavi esterne, in quanto in molte regioni esistono più aeroporti.

../../../_images/relations1.png

Regione dell’Alaska con areoporti

Layers in 1-N relations

QGIS non fa differenza tra una tabella e un layer vettoriale. Fondamentalmente, un layer vettoriale è una tabella con una geometria. Quindi puoi aggiungere la tua tabella come un layer vettoriale. Per mostrare la relazione 1-n, puoi caricare lo shapefile airports e lo shapefile airports che contiene un campo chiave esterna (fk_region) al layer regions. Ciò significa che ogni aeroporto appartiene esattamente ad una regione, mentre ogni regione può avere un certo numero di aeroporti (una tipica relazione uno a molti).

Foreign keys in 1-N relations

Oltre agli attributi già esistenti nella tabella degli attributi degli aeroporti, avrai bisogno di un altro campo ` fk_region`` che funge da chiave esterna (se hai un database, probabilmente vorrai definire un vincolo su di esso).

Questo campo fk_region conterrà sempre un id di una regione. Può essere visto come un puntatore alla regione a cui appartiene. E si può progettare un modulo di modifica personalizzato per l’editing e QGIS si fa carico della sua definizione. Funziona con diverse fonti dati (quindi puoi anche usarlo con shapefile e csv) e tutto quello che devi fare è dire a QGIS le relazioni tra le tue tabelle.

Defining 1-N relations (Relation Manager)

The first thing we are going to do is to let QGIS know about the relations between the layers. This is done in Project ‣ Project Properties.... Open the Relations tab and click on [Add Relation].

  • name is going to be used as a title. It should be a human readable string, describing, what the relation is used for. We will just call say Airports in this case.
  • referencing layer also considered as child layer, is the one with the foreign key field on it. In our case, this is the airports layer
  • referencing field will say, which field points to the other layer so this is fk_region in this case
  • referenced layer also considered as parent layer, is the one with the primary key, pointed to, so here it is the regions layer
  • referenced field is the primary key of the referenced layer so it is ID
  • id will be used for internal purposes and has to be unique. You may need it to build custom forms. If you leave it empty, one will be generated for you but you can assign one yourself to get one that is easier to handle.
../../../_images/relations2.png

Gestore delle relazioni

Forms for 1-N relations

Ora che QGIS sa la relazione, sarà usato per migliorare il modulo che genera. Poiché non abbiamo modificato il modulo predefinito (autogenerato) aggiungerà semplicemente un nuovo widget nel nostro modulo. Quindi, selezioniamo la regione del layer nella legenda e utilizziamo lo strumento di identificazione. A seconda delle impostazioni, il modulo si potrebbe aprire direttamente o dovrai scegliere di aprirlo nella finestra di dialogo di identificazione in azioni.

../../../_images/relations3.png

Finestra di dialogo identificazione relazione regioni con aeroporti

As you can see, the airports assigned to this particular region are all shown in a table. And there are also some buttons available. Let’s review them shortly

  • Il pulsante toggleEditing serve per attivare la modalità di modifica. Tieni presente che cambia la modalità di modifica del layer aeroportuale, anche se siamo nel modulo di un elemento del layer regione. Ma la tabella rappresenta le geometrie del layer aeroportuale.

  • The signPlus button will add a new feature to the airport layer. And it will assign the new airport to the current region by default.
  • The remove button will delete the selected airport permanently.
  • Il simbolo link aprirà una nuova finestra di dialogo in cui è possibile selezionare qualsiasi aeroporto esistente che verrà assegnato alla regione corrente. Questo può essere utile se si è creato accidentalmente l’aeroporto sulla regione sbagliata.

  • Il simbolo unlink scollegherà gli aeroporti selezionati dalla regione corrente, lasciandoli non assegnati (la chiave esterna viene impostata su NULL).

  • The two buttons to the right switch between table view and form view where the later let’s you view all the airports in their respective form.

If you work on the airport table, a new widget type is available which lets you embed the feature form of the referenced region on the feature form of the airports. It can be used when you open the layer properties of the airports table, switch to the Fields menu and change the widget type of the foreign key field ‘fk_region’ to Relation Reference.

Se ora guardi alla finestra di dialogo delle geometrie, vedrai che il modulo della regione è incorporato all’interno del modulo aeroportuale e avrà anche una combinazione di opzioni di scelta, che ti consentono di assegnare l’attuale aeroporto ad un’altra regione.

../../../_images/relations4.png

Finestra di dialogo identificazione aeroporti in relazione con regioni

Introducing many-to-many (N-M) relations

N-M relations are many-to-many relation between two tables. For instance, the airports and airlines layers: an airport receives several airline companies and an airline company flies to several airports.

In such case, we need a pivot table to list all airlines for all airports. In QGIS, you should setup two one-to-many relations as explained above:

  • una relazione tra la tabella delle compagnie aeree e la tabella pivot;

  • e una seconda tra la tabella degli aeroporti e la tabella pivot.

When we add a new child (i.e. a company to an airport), QGIS will add a new row in the pivot table and in the airlines table. If we link a company to an airport, QGIS will only add a row in the pivot table.

In case you want to remove a link, an airline or an airport, QGIS won’t remove the row in the pivot table. The database administrator should add a ON DELETE CASCADE instruction in the foreign key constraint:

ALTER TABLE location.airlines
ADD CONSTRAINT location_airlines_airports_id_fkey
   FOREIGN KEY (id)
      REFERENCES location.airports(id)
         ON DELETE CASCADE;

Nota

Combining N-M relation with automatic transaction group

Dovresti abilitare la modalità Crea automaticamente la transizione dei gruppi quando possibile in Project Proprietà ‣ Sorgente dei dati ‣ se stai lavorando in tale contesto. QGIS dovrebbe essere in grado di aggiungere o aggiornare le righe in tutte le tabelle (compagnie aeree, aeroporti e tabelle pivot).

Finally, adding such relations in a form is done in the same way that for a one-to-many relation. The Relations panel in the Fields properties of the vector layer will let the user add the relation in the form. It will appear as a Many to many relation.