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

` `

Werken met de attributentabel

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 Paneel Lagen. 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

Attributentabel voor de laag regions

De knoppen boven in het venster van de attributentabel bieden de volgende functionaliteiten:

Pictogram

Label

Doel

Standaard snelkoppeling

toggleEditing

Bewerken aan/uitzetten

Schakel functionaliteiten voor Bewerken in

Ctrl+E
multiEdit

Schakelen naar modus Meervoudige bewerkingen

Meerdere velden van veel objecten bijwerken

 
saveEdits

Bewerkingen opslaan

Huidige aanpassingen opslaan

Ctrl+S
draw

De tabel opnieuw laden

   
newTableRow

Object toevoegen

Object zonder geometrie toevoegen

 
deleteSelected

Geselecteerde objecten verwijderen

Geselecteerde objecten op de laag verwijderen

 
expressionSelect

Selecteer objecten m.b.v. reguliere expressie

   
selectAll

Alles selecteren

Alle objecten op de laag selecteren

Ctrl+A
invertSelection

Selectie omdraaien

De huidige selectie van de laag omdraaien

Ctrl+R
deselectAll

Alles deselecteren

Alle objecten op de huidige laag deselecteren

Ctrl+Shift+A
filterMap

Objecten filteren/selecteren met behulp van formulier

  Ctrl+F
selectedToTop

Geselecteerde naar boven verplaatsen

Geselecteerde rijen naar boven in de tabel verplaatsen

 
panToSelected

Kaart naar de geselecteerde rijen verschuiven

  Ctrl+P
zoomToSelected

Kaart naar de geselecteerde rijen zoomen

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

Objecten vanaf klembord plakken

Nieuwe objecten vanuit gekopieerde invoegen

Ctrl+V
newAttribute

Nieuw veld

Nieuw veld aan de gegevensbron toevoegen

Ctrl+W
deleteAttribute

Veld verwijderen

Een veld uit de gegevensbron verwijderen

Ctrl+L
calculateField

Veldberekening openen

Veld voor veel objecten in een rij bijwerken

Ctrl+I
conditionalFormatting

Voorwaardelijke opmaak

Opmaak voor de tabel inschakelen

 

Tabel Attribuut 1: Beschikbare gereedschappen

Notitie

Afhankelijk van de indeling van de gegevens en de bibliotheek van OGR die is gebouwd met uw versie van QGIS, zouden sommige gereedschappen niet beschikbaar kunnen zijn.

Onder deze knoppen staat de werkbalk Veldberekening (alleen ingeschakeld in de modus Bewerken), die het mogelijk maakt berekeningen snel toe te passen op ofwel alle of de geselecteerde attributen in de tabel. Deze werkbalk gebruikt dezelfde expressies als calculateField Veldberekening (zie Attribuutwaarden bewerken).

Tip

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.

Tabelweergave vs Formulierweergave

QGIS verschaft twee weergaven om eenvoudig gegevens in de attributentabel te bewerken:

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

U kunt ook de modus Standaard weergave specificeren voor het openen van de attributentabel in het menu Extra ‣ Opties ‣ Gegevensbronnen. Het kan de ‘Laatste weergave onthouden’, ‘Tabelweergave’ of ‘Formulierweergave’.

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

Attributentabel in formulierweergave (boven) vs tabelweergave (onder)

Configuring the columns

Klik met rechts, in tabelweergave, op een kolomkop om toegang te krijgen tot gereedschappen die u helpen te configureren wat kan worden weergegeven in de attributentabel en hoe.

Hiding and organizing columns and enabling actions

Door met rechts te klikken op een kolomkop kunt u er voor kiezen om die te verbergen in de attributentabel. In één keer het gedrag van verscheidene kolommen wijzigen, het verbergen van een kolom opheffen of de volgorde van de kolommen wijzigen, kies Kolommen beheren.... In het nieuwe dialoogvenster kunt u:

  • kolommen selecteren/deselecteren die u wilt weergeven of verbergen

  • items slepen en neerzetten om de volgorde van de kolommen in de attributentabel te wijzigen. Onthoud dat deze wijziging slechts is bestemd voor het renderen van de tabel en niet de veldvolgorde in de gegevensbron van de laag wijzigt

  • een nieuwe virtuele kolom Acties inschakelen die in elke rij een keuze- of knoppenlijst weergeeft met acties voor elke rij, zie Acties voor meer informatie over acties.

Resizing columns widths

De breedte van kolommen kan worden ingesteld met een klik met rechts op de kolomkop en ofwel te selecteren:

  • Breedte instellen... om de gewenste waarde in te voeren. Standaard wordt in het widget de huidige waarde weergegeven

  • of Autom. grootte om te wijzigen naar de best passende grootte voor de kolom.

Het kan ook worden gewijzigd door met de grens aan de rechterzijde van de kolomkop te slepen. De nieuwe grootte van de kolom wordt behouden voor de laag, en herstelt zich bij het opnieuw openen van de attributentabel.

Sorting columns

De tabel kan gesorteerd worden op elke kolom, door een kolomkop te selecteren. Een kleine pijl wijst de sorteervolgorde aan (een pijltje omhoog betekent, de waarden zijn oplopend gesorteerd van boven naar beneden, pijltje omlaag betekent, de waarden zijn aflopend gesorteerd van boven naar beneden). U kunt er ook voor kiezen de rijen te sorteren met de optie Sorteren in het contextmenu van de kolomkop en een expressie te schrijven, bijv. om de rij te sorteren op meerdere kolommen, kunt u schrijven concat(col0, col1).

In formulierweergave kan de ID van de objecten worden gesorteerd met behulp van de optie sort Op expressie voor weergave sorteren.

Tip

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:

  • geometrie (bijv. identificeren van meerdelige objecten, zeer kleine gebieden of in een gedefinieerd kaartbereik...);

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

U kunt het paneel voorwaardelijke opmaak inschakelen door te klikken op conditionalFormatting aan de rechter bovenkant van het venster Attributen in de tabelweergave (niet beschikbaar in de formulierweergave).

Het nieuwe paneel stelt de gebruiker in staat om nieuwe regels toe te voegen voor de opmaak van het renderen van het radioButtonOnVeld of de radioButtonOffVolledige rij. Toevoegen van een nieuwe regel opent een formulier om te definiëren:

  • de naam van de regel;

  • een voorwaarde met behulp van een van de functies van Expressie-string bouwer;

  • de opmaak: die kan worden gekozen uit een lijst met vooraf gedefinieerde opmaak of gemaakt worden, gebaseerd op eigenschappen zoals:

    • achtergrond- en tekstkleuren;

    • gebruik van pictogram;

    • vet, cursief onderstreept, of doorgehaald;

    • lettertype.

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

Voorwaardelijke opmaak van een attributentabel

Werken met objecten in een attributentabel

Objecten selecteren

In tabelweergave geeft elke regel in de attributentabel de attributen van een uniek object in de laag weer. Selecteren van een rij selecteert het object en soortgelijk, selecteren van een object in het kaartvenster (in het geval van een laag met ingeschakelde geometrie) selecteert de rij in de attributentabel. Als de set geselecteerde objecten in het kaartvenster (of attributentabel) wordt gewijzigd, dan wordt die selectie ook overeenkomstig bijgewerkt in de attributentabel (of het kaartvenster).

Rijen kunnen worden geselecteerd door te klikken op het rijnummer aan de linkerkant. Meerdere rijen kunnen worden geselecteerd met de Ctrl toets ingedrukt gehouden. Een Opvolgende selectie kan worden gemaakt door de Shift toets in te drukken en een rijnummer aan de linkerkant. Alle rijen tussen de rij waarin zich de cursor bevindt en de aangeklikte rij worden geselecteerd. Het veranderen van de cursorpositie door in een andere cel van de tabel te klikken, zal de selectie niet aanpassen. Het wijzigen van de selectie in het kaartvenster, zal niet de cursorpositie in de attributentabel wijzigen.

In de formulierweergave van de attributentabel worden objecten standaard geïdentificeerd in het linker paneel aan de hand van hun weergegeven veld (zie Tonen). Deze identificatie kan worden vervangen met behulp van de keuzelijst aan de bovenzijde van het paneel, ofwel door een bestaand veld te kiezen of door een aangepaste expressie te gebruiken. U kunt er ook voor kiezen de lijst met objecten te sorteren vanuit de keuzelijst.

Klik op een waarde in het linker paneel om de attributen van het object in het rechter weer te geven. U dient binnen het vierkant aan de linkerkant van de identificatie te klikken om een object te selecteren. Standaard zal het symbool geel kleuren. Net zoals in de tabelweergave kunt u meervoudig selecteren van objecten uitvoeren met behulp van de reeds eerder weergegeven combinaties voor het toetsenbord.

Naast het selecteren van objecten met de muis, kunt u automatische selecties uitvoeren, gebaseerd op de attributen van het object met behulp van de beschikbare gereedschappen in de werkbalk van de attributentabel, zoals (zie gedeelte Automatisch selecteren en volgende voor meer informatie en gebruiksgevallen):

  • expressionSelect Objecten selecteren m.b.v. een reguliere expressie

  • formSelect Objecten selecteren d.m.v. waarde...

  • deselectAll Objecten uit alle lagen deselecteren

  • selectAll Alle objecten selecteren

  • invertSelection Selectie van objecten omdraaien

Het is ook mogelijk objecten te selecteren met behulp van het Filtering and selecting features using forms.

Objecten filteren

Als u eenmaal objecten hebt geselecteerd in de attributentabel, wilt u misschien alleen die records in de tabel weergeven. Dat kan eenvoudig worden gedaan met behulp van het item Geselecteerde objecten weergeven uit de keuzelijst aan de linker onderzijde van het dialoogvenster Attributentabel. Deze lijst biedt de volgende filters:

  • Alle objecten tonen

  • Geselecteerde objecten weergeven

  • Op kaart zichtbare objecten tonen

  • Gewijzigde en nieuwe objecten tonen

  • Veldfilter - stelt de gebruiker in staat te filteren, gebaseerd op de waarde van een veld: kies een kolom uit de lijst, typ een waarde en druk op Enter om te filteren. Daarna zullen alleen de overeenkomende objecten worden weergegeven in de attributentabel.

  • 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 Expressies for more information.

Het is ook mogelijk objecten te filteren met behulp van het Filtering and selecting features using forms.

Notitie

Filteren van records uit de attributentabel filtert niet de objecten uit de laag weg; zij worden eenvoudigweg tijdelijk verborgen in de tabel en er kan toegang tot verkregen worden vanuit het kaartvenster of door het filter te verwijderen. Voor filters die wel objecten van de laag verbergen, gebruik de Querybouwer.

Tip

Gegevensbron bijwerken door te filteren met Op kaart zichtbare objecten tonen

Indien om redenen van uitvoering objecten die worden weergegeven in de attributentabel ruimtelijk zijn beperkt tot het kaartvenster bij het openen (zie Instellingen voor databronnen voor een how-to), zal selecteren van Op kaart zichtbare objecten tonen op een nieuw kaartbereik de ruimtelijke beperking bijwerken.

Filtering and selecting features using forms

Klikken op filterMap Objecten met behulp van formulier filteren/selecteren of drukken op Ctrl+F in het dialoogvenster van de attributentabel zal schakelen naar de formulierweergave en alle widgets worden vervangen door hun variant om te zoeken.

Vanaf dit punt is de functionaliteit van dit gereedschap soortgelijk aan die welke werd beschreven in de Objecten selecteren d.m.v. waarde, waar u beschrijvingen kunt vinden van alle operatoren en modi voor selecteren.

Meer nog, in het geval van de attributentabel, is er ook een knop Objecten filteren die het mogelijk maakt objecten te filteren in plaats van ze te selecteren (door een Geavanceerd filter (Expressie) te maken voor de gebruiker).

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

Attributentabel gefilterd door het filterformulier

Indien er al gefilterde objecten zijn, kunt u het filter verfijnen met behulp van de keuzelijst naast de knop Objecten filteren. De opties zijn:

  • Filteren binnen (“AND”)

  • Filter uitbreiden (“OR”)

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

Using action on features

Gebruikers hebben verscheidene mogelijkheden om objecten te bewerken met het contextmenu, zoals:

  • 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

Knop Celinhoud kopiëren

Indien u gegevens van attributen wilt gebruiken in externe programma’s (zoals Excel, LibreOffice, QGIS of een eigen webtoepassing), selecteer één of meer rij(en) en gebruik de knop copySelected Geselecteerde rijen naar klembord kopiëren of druk op Ctrl+C.

In het menu Extra ‣ Opties ‣ Databronnen kunt u uit de keuzelijst de opmaak definiëren die moet worden geplakt met Objecten kopiëren als:

  • Platte tekst, geen geometrie,

  • Platte tekst, WKT-geometrie,

  • GeoJSON

U kunt ook een lijst met acties weergeven in dit contextmenu. Dit wordt ingeschakeld op de tab Laageigenschappen ‣ Acties. Bekijk Acties voor meer informatie over acties.

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.

Attribuutwaarden bewerken

Bewerken van waarden van attributen kan worden gedaan door:

  • het direct typen van de nieuwe waarde in de cel, zowel; in de tabel als in de formulierweergave. Wijzigingen worden daarom per cel uitgevoerd, object na object;

  • 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
  • of met behulp van de modus Meervoudige bewerkingen: meerdere velden voor meerdere objecten bijwerken in een rij.

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.

Veldberekening is beschikbaar op elke laag die bewerken ondersteunt. Wanneer u op het pictogram Veldberekening klikt opent het dialoogvenster (zie figure_field_calculator). Als de laag niet in de modus Bewerken staat, wordt een waarschuwing weergegeven en het gebruiken van Veldberekening zal er voor zorgen dat de laag in de modus Bewerken wordt gezet vóórdat de berekening wordt uitgevoerd.

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

Veldberekening

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.

Een kort voorbeeld illustreert het gebruik van Veldberekening bij het gebruiken van de tab Expressie. We willen de lengte van de laag railroads van de voorbeeld dataset van QGIS berekenen in km:

  1. Laad het shapefile railroads.shp in QGIS en selecteer openTable Attributentabel openen.

  2. Klik op toggleEditing Bewerken aan/uitzetten en open het dialoogvenster calculateField Veldberekening.

  3. Selecteer het keuzevak checkbox Nieuw veld aanmaken om berekeningen op te slaan in het nieuwe veld.

  4. Voeg lengte toe als resultaatveld, selecteer Decimaal getal (real) als veldtype en geef een veldlengte op van 10 en een precisie van 3.

  5. Dubbelklik nu op de functie $length in de groep Geometrie om die toe te voegen als $length in het vak voor de expressie van de Veldberekening.

  6. Complete the expression by typing / 1000 in the Field calculator expression box and click [Ok].
  7. U zult nu een nieuw veld lengte in de attributentabel terugvinden.

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

Notitie

Virtuele velden gebruiken

  • Virtuele velden staan niet permanent in de attributen van de laag, wat betekent dat zij alleen worden opgeslagen en beschikbaar zijn in het projectbestand waarin zij zijn gemaakt.

  • Een veld kan alleen als virtueel worden ingesteld bij het maken ervan en de gebruikte expressie kan later niet worden gewijzigd: u zult het veld moeten verwijderen en dat veld opnieuw aan moeten maken.

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

Anders dan met de vorige gereedschappen, staat de modus Meervoudige bewerkingen toe dat meerdere attributen van verschillende objecten tegelijkertijd worden bewerkt. Wanneer de laag is geschakeld naar de modus Bewerken, zijn mogelijkheden voor Meervoudige bewerkingen toegankelijk:

  • using the multiEdit Toggle multi edit mode button from the toolbar inside the attribute table dialog,
  • of door selecteren van het menu Bewerken ‣ multiEdit Attributen van geselecteerde objecten aanpassen.

Om meerdere velden in één rij te bewerken:

  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.

    Klikken op een van deze widgets stelt u in staat ofwel de huidige waarde voor het veld in te stellen of de originele waarde te herstellen, wat betekent dat u wijzigingen kunt terugdraaien op een veld-na-veld-basis.

  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.

Wijzigingen zullen worden toegepast op alle geselecteerde objecten. Indien er geen object is geselecteerd wordt de gehele tabel met uw wijzigingen bijgewerkt. Aanpassingen worden gemaakt als één enkele opdracht tot bewerken. Het drukken op undo Ongedaan maken zal dus de wijzigingen aan de attributen voor alle objecten in één keer terugdraaien.

Notitie

Anders dan het gereedschap vanuit de attributentabel zal drukken op de optie Bewerken ‣ Attributen van geselecteerde objecten aanpassen u een modeldialoogvenster verschaffen om wijzigingen aan de attributen in te vullen. Daarom is het selecteren van objecten vereist vóór het uitvoeren.

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

Velden van meerdere objecten bewerken

Notitie

Modus Meervoudige bewerkingen is alleen beschikbaar voor automatisch gegenereerde en formulieren van Slepen en neerzetten (zie Customize a form for your data); het wordt niet ondersteund in aangepaste formulieren voor de UI.

Een tot veel- of veel-tot-veel-relaties maken

Relaties zijn een techniek die veel gebruikt wordt in databases. Het concept is dat objecten (rijen) van verschillende lagen (tabellen) aan elkaar kunnen behoren.

Introducing 1-N relations

Als voorbeeld heeft u een laag met alle regio’s van Alaska (polygoon) die verschillende attributen verschaft over de naam ervan en het regiotype en een unieke ID (die dient als primaire sleutel).

Dan krijgt u een andere laag met punten of tabel met informatie over vliegvelden die in de regio’s liggen en u wilt ook deze bijhouden. Als u ze wilt toevoegen aan de laag van de regio’s, dient u een één tot veel-relatie te maken met behulp van secundaire sleutels, omdat er meerdere vliegvelden in de meeste regio’s liggen.

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

Regio Alaska met vliegvelden

Layers in 1-N relations

QGIS maakt geen verschil tussen een tabel en een vectorlaag. In feite is een vectorlaag een tabel met een geometrie. Dus kunt u uw laag tabel als een vectorlaag toevoegen. U kunt, om de 1-N-relatie te demonstreren, het shapefile regions laden en de csv-tabel airports dat een veld voor een secundaire sleutel (fk_region) voor de laag regions heeft. Dit betekent dat elk vliegveld tot precies één regio behoort terwijl elke regio een onbepaald aantal vliegvelden kan hebben (een typische een tot veel-relatie).

Foreign keys in 1-N relations

In aanvulling op de reeds bestaande attributen in de attributentabel van de vliegvelden heeft u nog een ander veld fk_region nodig dat optreedt als een secundaire sleutel (als u een database heeft, wilt u er waarschijnlijk een voorwaarde aan verbinden).

Dit veld fk_region zal altijd een ID van een regio bevatten. Het kan worden gezien als een verwijzing naar de regio waartoe het behoort. En u kunt een aangepaste vorm voor bewerken ontwerpen en QGIS zorgt dan voor de instellingen. Het werkt voor verschillende providers (dus u kunt het ook gebruiken met shape- en csv-bestanden) en alles wat u hoeft te doen is QGIS de relaties tussen uw tabellen te vertellen.

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

Relatiebeheer

Forms for 1-N relations

Nu QGIS van de relatie weet zal het worden gebruikt om de formulieren te verbeteren die het genereert. Als we de standaard methode voor het formulier niet wijzigden (automatisch gegenereerd) zal het eenvoudigweg een nieuw widget in ons formulier maken. Dus laten we de laag regions selecteren in de legenda en het gereedschap Objecten identificeren gebruiken. Afhankelijk van uw instellingen zou het formulier direct kunnen openen of u moet het kiezen om het openen in het dialoogvenster Identificatieresultaten onder Acties.

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

Dialoogvenster Identificatieresultaten regions met relatie naar vliegvelden

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

  • De knop toggleEditing is voor het aan of uitzetten van het bewerken. Onthoud dat het de modus Bewerken voor de laag airports schakelt, hoewel we in het objectformulier van een object uit de laag regions staan. maar de tabel geeft objecten weer uit de laag airports.

  • 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.
  • Het symbool link zal een nieuw dialoogvenster openen waar u een bestaand vliegveld kunt selecteren dat dan zal worden toegevoegd aan de huidige regio. Dit kan handig zijn als u per ongeluk eerder het vliegveld in de verkeerde regio maakte.

  • Het symbool unlink zal het geselecteerde vliegveld loskoppelen van de huidige regio en het daarna als niet toegewezen beschouwen (de secundaire sleutel wordt op NULL gezet).

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

Als u nu kijkt naar het dialoogvenster van het object, zult u zien dat het formulier van de regio nu is ingebed in het formulier van de vliegvelden en zelfs een combinatievak zal hebben, wat u in staat stelt het huidige vliegveld aan een andere regio toe te wijzen.

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

Dialoogvenster Identificatieresultaten airports met relatie naar regio’s

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:

  • een relatie tussen de tabel luchtvaartmaatschappijen en de draaitabel;

  • en een tweede tussen de tabel vliegvelden en de draaitabel.

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;

Notitie

Combining N-M relation with automatic transaction group

U zou de modus voor transacties in moeten schakelen in Projecteigenschappen ‣ Databronnen ‣ bij het werken met een dergelijke context. QGIS zou in staat moeten zijn rij(en) in alle tabellen (luchtvaartmaatschappijen, vliegvelden en de draaitabel) toe te voegen en bij te werken.

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.