15.2. Werken met de attributentabel
De attributentabel geeft informatie over de objecten van een geselecteerde laag weer. Elke regel in de tabel geeft één object (met of zonder geometrie) weer en elke kolom bevat een bepaald stukje informatie over het object. Objecten in de tabel kunnen worden opgezocht, geselecteerd, verplaatst of zelfs bewerkt.
15.2.1. Voorwoord: Ruimtelijke en niet ruimtelijke tabellen
QGIS stelt u in staat ruimtelijke en niet-ruimtelijke lagen te laden. Dit omvat momenteel ook tabellen die worden ondersteunt door OGR en gescheiden tekst, als ook de providers PostgreSQL, MSSQL, SpatiaLite en Oracle. Alle geladen lage worden vermeld in het paneel Lagen. Of een laag ruimtelijk ingeschakeld is of niet bepaalt of u interactie kunt uitvoeren op de kaart.
Niet ruimtelijke tabellen kunnen gebladerd worden en ze kunnen worden bewerkt met de tabelweergave voor de attributen. Verder kunnen zij worden gebruikt voor het opzoeken van velden. Als voorbeeld kunt u kolommen van een niet ruimtelijke tabel gebruiken om waarden voor attributen te definiëren of een bereik van toegestane waarden die mogen worden toegevoegd aan een specifieke vectorlaag tijdens het digitaliseren. Bekijk de widget voor bewerken in Eigenschappen Formulier attributen wat nader voor meer informatie.
15.2.2. Introductie van de interface van de Attributentabel
Activeer, om de attributentabel voor een vectorlaag te openen, de laag door deze te selecteren in het Paneel Lagen. Open dan de attributentabel vanuit het menu , kies . Het is ook mogelijk door met de rechter muisknop op een laag in de legenda te klikken en te kiezen uit het contextmenu of door te klikken op de knop Attributentabel openen op de werkbalk Attributen. Als u liever met sneltoetsen werkt: F6 zal de attributentabel openen. Shift+F6 zal de attributentabel openen, maar gefilterd tot de geselecteerde objecten en Ctrl+F6 zal de attributentabel openen, maar gefilterd tot de zichtbare objecten.
Dit zal een nieuw venster openen dat de attributen voor de objecten van de laag weergeeft (figure_attributes_table). Overeenkomstig de instelling in het menu , zal de attributentabel openen in een vastgezet venster of een normaal venster. Het totale aantal objecten op de laag en het aantal momenteel geselecteerde/gefilterde objecten wordt weergegeven in de titel van de attributentabel en ook of de laag ruimtelijk beperkt is.
De knoppen boven in het venster van de attributentabel bieden de volgende functionaliteiten:
Pictogram |
Label |
Doel |
Standaard snelkoppeling |
---|---|---|---|
Bewerken aan/uitzetten |
Schakel functionaliteiten voor Bewerken in |
Ctrl+E |
|
Schakelen naar modus Meervoudige bewerkingen |
Meerdere velden van veel objecten bijwerken |
||
Bewerkingen opslaan |
Huidige aanpassingen opslaan |
||
De tabel opnieuw laden |
|||
Object toevoegen |
Object zonder geometrie toevoegen |
||
Geselecteerde objecten verwijderen |
Geselecteerde objecten op de laag verwijderen |
||
Geselecteerde objecten naar klembord knippen |
Ctrl+X |
||
Geselecteerde objecten naar klembord kopiëren |
Ctrl+C |
||
Objecten vanaf klembord plakken |
Nieuwe objecten vanuit gekopieerde invoegen |
Ctrl+V |
|
Objecten selecteren m.b.v. reguliere expressie |
|||
Alles selecteren |
Alle objecten op de laag selecteren |
Ctrl+A |
|
Selectie omdraaien |
De huidige selectie van de laag omdraaien |
Ctrl+R |
|
Alles deselecteren |
Alle objecten op de huidige laag deselecteren |
Ctrl+Shift+A |
|
Objecten filteren/selecteren met behulp van formulier |
Ctrl+F |
||
Geselecteerde naar boven verplaatsen |
Geselecteerde rijen naar boven in de tabel verplaatsen |
||
Kaart naar de geselecteerde rijen verschuiven |
Ctrl+P |
||
Kaart naar de geselecteerde rijen zoomen |
Ctrl+J |
||
Nieuw veld |
Nieuw veld aan de gegevensbron toevoegen |
Ctrl+W |
|
Veld verwijderen |
Een veld uit de gegevensbron verwijderen |
||
Kolommen schikken |
Velden in de attributentabel weergeven/verbergen |
||
Veldberekening openen |
Veld voor veel objecten in een rij bijwerken |
Ctrl+I |
|
Voorwaardelijke opmaak |
Opmaak voor de tabel inschakelen |
||
Attributentabel vast zetten |
Maakt het mogelijk de attributentabel vast te zetten/los te maken |
||
Acties |
Vermeldt de aan de laag gerelateerde acties |
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 Veldberekening (zie Attribuutwaarden bewerken).
15.2.2.1. Tabelweergave vs Formulierweergave
QGIS verschaft twee weergaven om eenvoudig gegevens in de attributentabel te bewerken:
De Tabelweergave geeft waarden van meerdere objecten weer in een tabulaire modus, elke rij geeft een object weer en elke kolom een veld. Een klik met rechts op de kolomkop stelt u in staat de weergave van de tabel te configureren terwijl een kik met rechts op een cel interactie met het object verschaft.
De Formulierweergave geeft identificaties voor objecten weer in een eerste paneel en geeft alleen de attributen van de aangeklikte identificatie weer in het tweede paneel. Er is een keuzemenu aan de bovenzijde van het eerste paneel waar de “identificatie” kan worden gespecificeerd met een attribuut (Voorbeeld kolom) of een Expressie. Het keuzemenu bevat ook de laatste 10 expressies om die opnieuw te kunnen gebruiken. Formulierweergave gebruikt de configuratie van de velden van de laag (see Eigenschappen Formulier attributen).
U kunt door de identificaties van de objecten bladeren met de pijlen aan de onderzijde van het eerste paneel. De attributen van de objecten worden in het tweede paneel bijgewerkt terwijl u daar naartoe gaat. Het is ook mogelijk om het actieve object in het kaartvenster te identificeren of te verplaatsen door op een van de knoppen aan de onderzijde te drukken:
U kunt van de ene naar de andere modus schakelen door te klikken op het corresponderende pictogram aan de rechteronderzijde van het dialoogvenster.
U kunt ook de modus Standaard weergave specificeren voor het openen van de attributentabel in het menu . Het kan de ‘Laatste weergave onthouden’, ‘Tabelweergave’ of ‘Formulierweergave’ zijn.
15.2.2.2. De kolommen configureren
Klik met rechts op een kolomkop in de Tabelweergave om toegang te krijgen tot gereedschappen die u helpen beheren:
Breedte kolommen wijzigen
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 de widget de huidige waarde weergegeven
Alle kolombreedten instellen… op dezelfde waarde
of Autom. grootte om te wijzigen naar de best passende grootte voor de kolom.
Automatische grootte alle kolommen
Een grootte van een kolom kan ook worden gewijzigd door de begrenzing aan de rechterkant van de kop te slepen. De nieuwe grootte van de kolom wordt voor de laag behouden, en hersteld bij het opnieuw openen van de attributentabel.
Kolommen verbergen en beheren en acties inschakelen
Door met rechts te klikken op een kolomkop, kunt u kiezen voor Kolom verbergen in de attributentabel (in modus “Tabelweergave”). Voor meer geavanceerd beheer, druk op de knop Kolommen beheren… op de werkbalk van het dialoogvenster of kies Kolommen beheren… in het contextmenu van een kolomkop. In het nieuwe dialoogvenster kunt u:
kolommen selecteren/deselecteren die u wilt weergeven of verbergen: een verborgen kolom zal verdwijnen uit elke instantie van het dialoogvenster van de attributentabel totdat hij actief wordt hersteld.
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 toevoegen die in elke rij een keuzemenu of knoppenlijst met ingeschakelde acties weergeeft. Bekijk Acties voor meer informatie over acties.
Kolommen sorteren
De tabel kan worden gesorteerd op elke kolom, door te klikken op de kolomkop. Een kleine pijl geeft de sorteervolgorde aan (naar beneden wijzend betekent aflopende waarden vanaf de bovenste rij naar beneden, naar boven wijzend betekent oplopende waarden vanaf de bovenste rij naar beneden). U kunt er ook voor kiezen de rijen te sorteren met de optie Sorteren… van het contextmenu van de kolomkop en een expressie schrijven. Om bijvoorbeeld de rijen 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 Op expressie voor weergave sorteren.
Tip
Sorteren gebaseerd op kolommen van verschillende typen
Een attributentabel proberen te sorteren op kolommen van tekenreeksen of numerieke typen zou kunnen leiden tot onverwachte resultaten omdat de expressie concat("USE", "ID")
waarden als tekenreeksen teruggeeft (d.i, 'Borough105' < 'Borough6'
). U kunt daar omheen werken door bijv. concat("USE", lpad("ID", 3, 0))
te gebruiken, dat 'Borough105' > 'Borough006'
teruggeeft.
15.2.2.3. Opmaken van tabelcellen met voorwaarden
Instellingen voor voorwaardelijke opmaak kunnen worden gebruikt om objecten in de attributentabel, waarop u een bijzonder focus wilt zetten, te accentueren met behulp van aangepaste voorwaarden op de object:
geometrie (bijv. identificeren van meerdelige objecten, zeer kleine gebieden of in een gedefinieerd kaartbereik…);
of veldwaarde (bijv. waarden vergelijken met een drempel, lege cellen identificeren…).
U kunt het paneel Voorwaardelijke opmaak inschakelen door te klikken op aan de rechterbovenkant 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 Veld of de Volledige 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.
15.2.3. Werken met objecten in een attributentabel
15.2.3.1. 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 linkerpaneel 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 linkerpaneel 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):
Het is ook mogelijk objecten te selecteren met behulp van Objecten filteren en selecteren met formulieren.
15.2.3.2. 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 linkeronderzijde van het dialoogvenster Attributentabel. Deze lijst biedt de volgende filters:
Geselecteerde objecten tonen - hetzelfde als het gebruiken van Attributentabel openen (Geselecteerde objecten) vanuit het menu Kaartlagen of de Werkbalk Attributen of te drukken op Shift+F6
Op kaart zichtbare objecten tonen - hetzelfde als het gebruiken van Attributentabel openen (Zichtbare objecten) vanuit het menu Kaartlagen of de Werkbalk Attributen of te drukken op Ctrl+F6
Bewerkte en nieuwe objecten tonen - hetzelfde als het gebruiken van Attributentabel openen (Bewerkte en nieuwe objecten) vanuit het menu Kaartlagen of de Werkbalk Attributen
Veldfilter - stelt de gebruiker in staat te filteren op basis van een waarde van een veld: kies een kolom uit een lijst, typ of selecteer een waarde en druk op Enter om te filteren. Daarna worden alleen de objecten die overeenkomen met de expressie
num_field = value
ofstring_field ilike '%value%'
weergegeven in de attributentabel. U kunt Case sensitive selecteren om minder mogelijkheden in teksttekenreeksen toe te staan.Geavanceerd filter (Expressie) - Opent het dialoogvenster voor de Expressie-string bouwer. Daarin kunt u complexe expressies maken waaraan rijen van de tabel moeten voldoen. U kunt, bijvoorbeeld, de tabel filteren met behulp van meer dan één veld. Indien toegepast verschijnt de expressie van het filter aan de onderzijde van het formulier.
opgeslagen expressies frequent gebruikt voor het filteren van uw attributentabel.
: een sneltoets naar
Het is ook mogelijk objecten te filteren met formulieren.
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.
15.2.3.3. Filterexpressies opslaan
Expressies die u gebruikt voor het filteren van de attributentabel kunnen worden opgeslagen voor toekomstig gebruik. Bij het gebruiken van de items Veldfilter of Geavanceerd filter (expressie) wordt de gebruikte expressie weergegeven in een widget Tekst aan de onderzijde van het dialoogvenster van de attributentabel. Druk op Expressie opslaan met tekst als naam naast het vak om de expressie in het project op te slaan. Drukken op het keuzemenu naast de knop maakt het mogelijk de expressie op te slaan met een aangepaste (Expressie opslaan als…). Wanneer een opgeslagen expressie wordt weergegeven, wordt de knop geactiveerd en het keuzemenu daarvan stelt u in staat om Expressie bewerken en een naam te geven, of Opgeslagen expressie verwijderen.
Opgeslagen filterexpressies worden opgeslagen in het project en zijn beschikbaar via het menu Opgeslagen filterexpressies van de attributentabel. Zij zijn anders dan de gebruikersexpressies, die worden gedeeld door alle projecten van het actieve gebruikersprofiel.
15.2.3.4. Objecten filteren en selecteren met formulieren
Klikken op Objecten met behulp van formulier filteren/selecteren of drukken op Ctrl+F in het dialoogvenster van de attributentabel zal dat schakelen naar de formulierweergave en elk widget vervangen door zijn variant om te zoeken.
Vanaf dit punt is de functionaliteit van dit gereedschap soortgelijk aan die welke werd beschreven in Objecten selecteren d.m.v. waarde, waar u beschrijvingen kunt vinden van alle operatoren en modi voor selecteren.
Bij het selecteren / filteren van objecten in de attributentabel is er een knop Objecten filteren die het mogelijk maakt filters te definiëren en te verfijnen. Gebruiken ervan activeert de optie Geavanceerd filter (Expressie) en geeft de overeenkomende expressie voor het filteren weer in een bewerkbaar tekstwidget aan de onderzijde van het formulier.
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”)
Selecteer, om het filter op te heffen, ofwel de optie Alle objecten tonen uit de keuzelijst aan de linkeronderzijde, of maak de expressie leeg en klik op Apply of druk op Enter.
15.2.4. Acties op objecten gebruiken
Gebruikers hebben verscheidene mogelijkheden om objecten te bewerken met het contextmenu, zoals:
Alles selecteren (Ctrl+A) alle objecten selecteren;
De inhoud van een cel naar het klembord te kopiëren met Celinhoud kopiëren;
Naar object inzoomen zonder het eerst te hebben geselecteerd;
Naar object verplaatsen zonder het eerst te hebben geselecteerd;
Flitsmogelijkheid, om het in het kaartvenster te accentueren;
Formulier openen: Het schakelt de attributentabel naar formulierweergave met de focus op het aangeklikte object.
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 Geselecteerde rijen naar klembord kopiëren of druk op Ctrl+C.
In het menu Objecten kopiëren als:
kunt u uit de keuzelijst de opmaak definiëren die moet worden geplakt metPlatte 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 Acties voor meer informatie over acties.
. Bekijk15.2.4.1. Geselecteerde objecten als nieuwe laag opslaan
De geselecteerde objecten kunnen worden opgeslagen in alle door OGR ondersteunde vectorindelingen en ook worden omgezet naar een ander Coördinaten ReferentieSysteem (CRS). In het contextmenu van de laag uit het paneel Lagen, klik op om vervolgens een naam voor het uitvoer gegevensbestand op te geven, de gewenste indeling en het CRS (zie het gedeelte Nieuwe lagen uit een bestaande laag maken). U zult zien dat het keuzevak is geselecteerd. Het is ook mogelijk om opties voor het maken van OGR op te geven in het dialoogvenster.
15.2.5. 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;
met Veldberekening: bijwerken van een rij van een veld dat al kan bestaan of dat kan worden gemaakt, maar voor meerdere objecten. Het kan worden gebruikt om virtuele velden te maken;
met de werkbalk Snelle veldberekening: hetzelfde als hierboven maar alleen voor bestaande velden;
of met de modus Meervoudige bewerkingen: meerdere velden voor meerdere objecten bijwerken in een rij.
15.2.5.1. Veldberekening gebruiken
De knop Veldberekening in de attributentabel geeft de mogelijkheid om berekeningen uit te voeren van bestaande waarden van attributen of gedefinieerde functies, bijvoorbeeld om de lengte of oppervlakte van objecten geometrie te berekenen. De resultaten kunnen worden gebruikt om een bestaand veld bij te werken of worden geschreven naar een nieuw veld (dat een virtueel veld mag zijn).
Veldberekening is beschikbaar op elke laag die bewerken ondersteunt. Wanneer u op het pictogram Veldberekening klikt opent het dialoogvenster (zie Fig. 15.71). 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.
Gebaseerd op het dialoogvenster Expressie-string bouwer, biedt het dialoogvenster Veldberekening een volledige interface om een expressie te definiëren en die toe te passen op een bestaand of nieuw gemaakt veld. U moet eerst, om Veldberekening te kunnen gebruiken, selecteren:
berekening toepassen op de gehele laag of alleen op de geselecteerde objecten
een nieuw veld voor de berekening maken of een bestaand veld bijwerken.
Als u er voor kiest een nieuw veld toe te voegen, dient een veldnaam, een veldtype (geheel getal, decimaal getal, datum of tekst) en, indien nodig, de totale veldlengte en de precisie te worden opgegeven. Als u bijvoorbeeld voor een veldlengte van 10 en een precisie van 3 kiest, betekent dit dat u ruimte heeft voor 7 tekens voor de punt, en 3 tekens voor het decimale gedeelte.
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:
Laad het shapefile
railroads.shp
in QGIS en selecteer Attributentabel openen.Klik op Bewerken aan/uitzetten en open het dialoogvenster Veldberekening.
Selecteer het keuzevak Nieuw veld aanmaken om berekeningen op te slaan in het nieuwe veld.
Stel Naam voor veld in op
length_km
Selecteer
Decimaal getal (real)
als Type voor veldStel de Lengte van veld voor uitvoer in op
10
en de Precisie op3
Dubbelklik nu op de
$length
in de groep Geometrie om de lengte van de geometrie toe te voegen aan het vak voor de expressie van de Veldberekening.Voltooi de expressie compleet door “/1000” in te typen in het vak voor de expressie van de berekening en druk op OK.
U zult nu een nieuw veld length_km in de attributentabel terugvinden.
15.2.5.2. Een virtueel veld maken
Een virtueel veld is een veld dat is gebaseerd op een direct berekende expressie, wat betekent dat zijn waarde automatisch wordt bijgewerkt zodra een onderliggende parameter wijzigt. De expressie wordt één keer ingesteld; u hoeft het veld niet langer elke keer opnieuw te berekenen als de onderliggende waarde wijzigt. U zou, bijvoorbeeld, een virtueel veld willen gebruiken als u gebieden wilt laten evalueren bij het digitaliseren van objecten of om automatisch een duur te laten bereken tussen datums die zouden kunnen wijzigen (bijv. bij het gebruiken van de functie now()
).
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 allen virtueel worden ingesteld bij het maken. Virtuele velden zijn gemarkeerd met een paarse achtergrond op de tab Velden van het dialoogvenster Laageigenschappen om ze te kunnen onderscheiden van normale fysieke of samengestelde velden. Hun expressie kan later worden bewerkt door te drukken op de knop Expressie in de kolom Opmerking. Een venster voor het bewerken van de expressie zal worden geopend om de expressie van het virtuele veld aan te kunnen passen.
15.2.5.3. De werkbalk Snelle veldberekening gebruiken
Waar Veldberekening altijd beschikbaar is, is de werkbalk Snelle veldberekening, boven in de attributentabel, alleen zichtbaar als de laag in de modus Bewerken staat. Dankzij het programma voor de expressie, biedt het snelle toegang voor het bewerken van een reeds bestaand veld:
15.2.5.4. Meerdere velden bewerken
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:
met de knop Schakelen naar modus Meervoudige bewerkingen vanaf de werkbalk binnen het dialoogvenster Attributentabel;
Notitie
Anders dan het gereedschap vanuit de attributentabel zal drukken op de optie
u een modaal dialoogvenster verschaffen om wijzigingen aan de attributen in te vullen. Daarom is het selecteren van objecten vereist vóór het uitvoeren.Om meerdere velden in één rij te bewerken:
Selecteer de objecten die u wilt bewerken.
Klik, op de werkbalk van de Attributentabel, op de knop . Dit zal het dialoogvenster naar de formulierweergave schakelen. Selecteren van objecten zou ook in deze stap gedaan kunnen worden.
Aan de rechterkant van de attributentabel worden velden (en waarden) van geselecteerde objecten weergegeven. Nieuwe widgets verschijnen naast elk veld, wat het mogelijk maakt de huidige status voor Meervoudige bewerkingen weer te geven:
Het veld bevat verschillende waarden voor de geselecteerde objecten. Het wordt leeg weergegeven en elk object behoudt zijn originele waarde. U kunt de waarde van het veld herstellen uit de keuzelijst van de widget.
Alle geselecteerde objecten hebben dezelfde waarde voor dit veld en de weergegeven waarde in het formulier zal worden behouden.
Het veld is bewerkt en de ingevoerde waarde zal worden toegepast op alle geselecteerde objecten. Er verschijnt een bericht aan de bovenzijde van het dialoogvenster dat u zal vragen uw wijziging toe te passen of te herstellen.
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.
Maak de wijzigingen in de velden die u wilt.
Klik op Wijzigingen toepassen in het bericht bovenaan of enig ander object in het linkerpaneel.
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 Ongedaan maken zal dus de wijzigingen aan de attributen voor alle objecten in één keer terugdraaien.
Notitie
Modus Meervoudige bewerkingen is alleen beschikbaar voor automatisch gegenereerde en formulieren van Slepen en neerzetten (zie Een formulier voor uw gegevens aanpassen); het wordt niet ondersteund in aangepaste formulieren voor de UI.
15.2.6. 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.
15.2.6.1. 1-N-relaties introduceren
Als voorbeeld heeft u een laag met alle regio’s van Alaska (polygoon) die verschillende attributen verschaft over de naam ervan en het type regio 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.
Lagen in 1-N-relaties
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).
Vreemde sleutels in 1-N-relaties
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 Shapefile- en csv-bestanden) en alles wat u hoeft te doen is QGIS de relaties tussen uw tabellen te vertellen.
1-N-relaties definiëren
Het eerste dat gaan we doen is om QGIS in kennis te stellen van de relaties tussen de lagen. Dit wordt gedaan in Relaties en klik op Relatie toevoegen.
. Open de tabNaam zal worden gebruikt als de titel. Het zou een door mensen te lezen tekenreeks moeten zijn, die beschrijft waar de relatie voor wordt gebruikt. We zullen het in dit geval eenvoudigweg vliegveld_relatie noemen.
Referentielaag (Ouder), ook wel beschouwd als de ouderlaag, is die waarnaar de primaire sleutel verwijst, dus hier is het de laag
regions
. U moet de primaire sleutel voor de referentielaag definiëren, dus is hetID
.Referentielaag (Kind), ook wel beschouwd als de kindlaag, is die met het veld voor de vreemde sleutel erop. In ons geval is dit de laag
airports
. Voor deze laag dient u een verwijzingsveld toe te voegen dat naar de andere laag verwijst, dus is ditfk_region
.Notitie
Soms heeft u meer dan één enkel veld nodig om objecten op een laag uniek te kunnen identificeren. Maken van een relatie met een dergelijke laag vereist een samengestelde sleutel, d.i. meer dan één enkel paar van overeenkomende velden. Gebruik de knop Nieuw veldpaar toevoegen als deel van een samengestelde sleutel om net zoveel paren toe te voegen als nodig is.
ID zal worden gebruikt voor interne doeleinden en moet uniek zijn. U zou mogelijk aangepaste formulieren moeten maken. Als u het leeg laat zal er een voor u worden gegenereerd maar u kunt er zelf een toewijzen om er een te krijgen die voor u eenvoudiger is.
Sterkte relatie stelt de sterkte in van de relatie tussen de ouder- en kindlaag. Het standaard type Associatie betekent dat de ouderlaag eenvoudig is gekoppeld aan de kindlaag, terwijl het type Compositie u in staat stelt ook de kindobjecten te dupliceren bij het dupliceren van die van de ouderlaag en bij het verwijderen van een object ook de kinderen worden verwijderd, resulterend in trapsgewijze over alle niveaus (wat betekent dat kinderen van kinderen van… ook worden verwijderd).
Op de tab Relaties kunt u ook drukken op de knop Relaties ontdekken om de beschikbare relaties van de geladen lagen op te halen. Dit is mogelijk voor lagen die zijn opgeslagen in gegevensproviders zoals PostgreSQL of SpatiaLite.
Formulieren voor 1-N-relaties
Nu QGIS van de relatie weet zal het worden gebruikt om de formulieren te verbeteren die het genereert. Als we de standaardmethode 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.
Zoals u kunt zien worden de vliegvelden die tot deze bepaalde regio zijn toegewezen weergegeven in een tabel. En er zijn ook enkele knoppen beschikbaar. Laten we die even kort bekijken:
De knop 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.
De knop is voor het opslaan van alle bewerkingen in de kindlaag (airport).
De knop laat u de geometrie van het vliegveld digitaliseren in het kaartvenster en wijst het nieuwe object standaard toe aan de huidige region. Merk op dat het pictogram zal wijzigen, overeenkomstig het type geometrie.
De knop voegt een nieuw record in de attributentabel van de laag airports in en wijst het nieuwe object standaard toe aan de huidige region. De geometrie kan later worden getekend met het gereedschap voor digitaliseren Deel toevoegen.
De knop maakt het voor u mogelijk om één of meer kind-objecten te kopiëren en te plakken in de kindlaag. Zij kunnen later worden toegewezen aan een ander ouder-object of hun attributen kunnen worden aangepast.
De knop verwijdert het/de geselecteerde vliegveld(en) permanent.
Het symbool opent een nieuw dialoogvenster waar u een bestaand vliegveld kunt selecteren dat dan zal worden toegewezen aan de huidige region. Dit zou handig kunnen zijn als u het vliegveld per ongeluk in de verkeerde region maakte.
Het symbool ontkoppelt het/de geselecteerde vliegveld(en) van de huidige region, hen effectief laten staan als niet toegewezen (de vreemde sleutel wordt ingesteld op NULL).
Met de knop kunt u op de kaart inzoomen op de geselecteerde kindobjecten.
De twee knoppen en aan de rechterkant schakelen tussen de tabel- en formulierweergave van de gerelateerde kind-objecten.
Als u de Ontwerper Slepen en neerzetten gebruikt voor het object regions, kunt u selecteren welke gereedschappen beschikbaar zijn. U kunt zelfs beslissen of een nieuw formulier moet worden geopend wanneer een nieuw object wordt toegevoegd met de optie Formulier verbergen bij toevoegen object. Onthoud dat deze optie impliceert dat attributen niet Null een geldige waarde moeten hebben om correct te werken.
In het bovenstaande voorbeeld heeft de verwijzingslaag geometrieën (en is het niet slechts een alfanumerieke tabel), dus zullen de bovenvermelde stappen een item maken in de attributentabel van de laag dat geen overeenkomend geometrisch object heeft. De geometrie toevoegen:
Selecteer het record dat eerder werd toegevoegd in het objectformulier van de verwijzingslaag.
Gebruik het gereedschap voor digitaliseren Deel toevoegen om een geometrie te verbinden met het geselecteerde record van de attributentabel.
Als u werkt met de tabel Airports is de widget Relatie-verwijzing automatisch ingesteld voor het veld fk_region
(dat werd gebruikt om de relatie te maken), bekijk widget Relatie-verwijzing.
In het formulier Airports zult u de knop zien aan de rechterkant van het veld fk_region
: als u op de knop klikt zal het formulier van de laag Regions worden geopend. Dit widget stelt u in staat eenvoudig en snel de formulieren van de gekoppelde ouderobjecten te openen.
De widget Relatie-verwijzing heeft ook een optie om het formulier van de ouderlaag in te bedden in de kindlaag. Het is beschikbaar in het menu fk_region
en selecteer de optie Ingebed formulier weergeven
.
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.
Meer nog, als u schakelt met de modus Bewerken van de laag airports, heeft het veld fk_region
ook een functie automatisch aanvullen: tijdens het typen zult u alle waarden zien van het veld id
van de laag regions. Hier is het mogelijk een polygoon te digitaliseren voor de laag regions met de knop als u kiest voor de knop Toevoegen nieuwe objecten toestaan
in het menu van de laag airports.
De kindlaag kan ook worden gebruikt in het gereedschap Objecten selecteren d.m.v. waarde om objecten van de ouderlaag te selecteren, gebaseerd op attributen van hun kinderen.
In Fig. 15.79 zijn alle regio’s, waarvan de gemiddelde hoogte van de vliegvelden groter is dan 500 meter boven zeeniveau, geselecteerd.
U zult merken dat veel verschillende functies voor samenvoegen in het formulier beschikbaar zijn.
15.2.6.2. Introduceren van relaties veel-tot-veel (N-M)
N-M-relaties zijn veel-tot-veel-relaties tussen twee tabellen. Bijvoorbeeld voor de lagen airports
en airlines
: een vliegveld ontvangt verscheidene luchtvaartmaatschappijen en een luchtvaartmaatschappij vliegt naar verscheidene vliegvelden.
Deze code voor SQL maakt de drie tabellen die we nodig hebben voor een relatie N-M in schema voor PostgreSQL/PostGIS, genaamd locations. U kunt de code uitvoeren met pgAdmin. De tabel airports slaat de laag airports
op en de tabel airlines slaat de laag airlines
op. In beide tabellen worden voor helderheid enkele velden gebruikt. Het moeilijke gedeelte is de tabel airports_airlines
. We dienen er voor te zorgen dat die alle airlines voor alle airports vermeld (of vice versa). Dit soort tabel staat bekend als een draaitabel. De voorwaarden in deze tabel forceren dat een airport alleen kan worden geassocieerd met een airline als beide al in hun lagen bestaan.
CREATE SCHEMA locations;
CREATE TABLE locations.airports
(
id serial NOT NULL,
geom geometry(Point, 4326) NOT NULL,
airport_name text NOT NULL,
CONSTRAINT airports_pkey PRIMARY KEY (id)
);
CREATE INDEX airports_geom_idx ON locations.airports USING gist (geom);
CREATE TABLE locations.airlines
(
id serial NOT NULL,
geom geometry(Point, 4326) NOT NULL,
airline_name text NOT NULL,
CONSTRAINT airlines_pkey PRIMARY KEY (id)
);
CREATE INDEX airlines_geom_idx ON locations.airlines USING gist (geom);
CREATE TABLE locations.airports_airlines
(
id serial NOT NULL,
airport_fk integer NOT NULL,
airline_fk integer NOT NULL,
CONSTRAINT airports_airlines_pkey PRIMARY KEY (id),
CONSTRAINT airports_airlines_airport_fk_fkey FOREIGN KEY (airport_fk)
REFERENCES locations.airports (id)
ON DELETE CASCADE
ON UPDATE CASCADE
DEFERRABLE INITIALLY DEFERRED,
CONSTRAINT airports_airlines_airline_fk_fkey FOREIGN KEY (airline_fk)
REFERENCES locations.airlines (id)
ON DELETE CASCADE
ON UPDATE CASCADE
DEFERRABLE INITIALLY DEFERRED
);
In plaats van PostgreSQL kunt u ook GeoPackage gebruiken. In dit geval kunnen de drie tabellen handmatig worden gemaakt met
. In GeoPackage zijn geen schema’s, dus het voorvoegsel locations is niet nodig.Voorwaarden voor secundaire sleutels in de tabel airports_airlines
kunnen niet worden gemaakt met of dus zouden zij moeten worden gemaakt met . GeoPackage ondersteunt geen argumenten ADD CONSTRAINT, dus de tabel airports_airlines
zou in twee stappen moeten worden gemaakt:
Maak de tabel met alleen het veld
ID
metMet
, typ en voer deze code voor SQL uit:ALTER TABLE airports_airlines ADD COLUMN airport_fk INTEGER REFERENCES airports (id) ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED; ALTER TABLE airports_airlines ADD COLUMN airline_fk INTEGER REFERENCES airlines (id) ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED;
Dan, in QGIS, zou u twee een-tot-veel relaties moeten instellen zoals hierboven uitgelegd:
een relatie tussen de tabel
airlines
en de draaitabel;en een tweede tussen de tabel
airports
en de draaitabel.
Een gemakkelijker manier om dit te doen (alleen voor PostgreSQL) is met Relaties ontdekken in . QGIS zal automatisch alle relaties in uw database lezen en u hoeft alleen de twee te kiezen die u nodig hebt. Vergeet niet eerst de drie tabellen in het project van QGIS in te lezen.
In het geval u een airport
of een airline
wilt verwijderen, zal QGIS het/de geassocieerde record(s) in de tabel airports_airlines
niet verwijderen. Deze taak zal door de database worden uitgevoerd als we de juiste voorwaarden specificeren bij het maken van de draaitabel, zoals in het huidige voorbeeld.
Notitie
N-M-relatie combineren met automatische transactie groep
U zou de modus voor transacties in moeten schakelen in
bij het werken met een dergelijke context. QGIS zou in staat moeten zijn rij(en) in alle tabellen (airlines, airports en de draaitabel) toe te voegen en bij te werken.Tenslotte moeten we de juiste kardinaliteit selecteren in airports
en airlines
. Voor de eerste zouden we de optie airlines (id) kiezen en voor de tweede de optie airports (id).
Nu kunt u een airport aan een airline koppelen (of een airline aan een airport) met Kindobject toevoegen of Bestaand kindobject koppelen in de subformulieren. Een record zal automatisch worden ingevoegd in de tabel airports_airlines
.
Notitie
Kardinaliteit Veel-tot één-relatie gebruiken
Soms is het verbergen van de draaitabel in een N-M-relatie niet gewenst. Voornamelijk omdat er attributen in de relatie kunnen staan die alleen waarden hebben als er een relatie is. Als uw tabellen lagen zijn (een veld geometrie hebben) zou het interessant kunnen zijn om de optie Op kaart identificeren ( ) te activeren voor de velden met secundaire sleutels in de draaitabel.
Notitie
Primaire sleutel draaitabel
Vermijd het gebruiken van meerdere velden voor de primaire sleutel in een draaitabel. QGIS gaat uit van één enkele sleutel, dus een voorwaarde als constraint airports_airlines_pkey primary key (airport_fk, airline_fk)
zal niet werken.
15.2.6.3. Polymorfische-relaties introduceren
Polymorfische relaties zijn een speciaal geval van 1-N-relaties, waar één enkele verwijzings- (document)laag de objecten bevat voor meerdere lagen waarnaar verwezen wordt. Dit verschilt van normale relaties die een verschillende verwijzingslaag vereisen voor elke laag waarnaar verwezen wordt. Één enkele verwijzings- (document)laag kan worden verkregen door een aanvullende kolom layer_field
toe te voegen in de verwijzings- (document)laag die informatie opslaat om de laag waarnaar verwezen wordt te identificeren. In zijn meest eenvoudige vorm zal de verwijzings- (document)laag eenvoudigweg de laagnaam, van de laag waarnaar verwezen wordt, in dit veld invoegen.
Om meer precies te zijn, een polymorfische relatie is een set van normale relaties die dezelfde verwijzingslaag hebben, maar hebben de laag waarnaar verwezen wordt dynamisch gedefinieerd. De polymorfische instelling van de laag wordt opgelost door een expressie te gebruiken die overeen moet komen met enkele eigenschappen van de laag waarnaar verwezen wordt, zoals de naam van de tabel, laag-ID, laagnaam.
Stel u voor dat we naar het park gaan en foto’s willen nemen van verschillende soorten plants
en animals
die we daar zien. Elke plant of dier heeft meerdere foto’s aan zich verbonden, dus als we de normale 1:N-relaties zouden gebruiken om de foto’s op te slaan, zouden we twee afzonderlijke tabellen nodig hebben, animal_images
en plant_images
. Dit zou misschien geen probleem zijn voor 2 tabellen, maar stel u voor dat we afzonderlijke foto’s willen maken van paddenstoelen, vogels etc.
Polymorfische relaties lossen dit probleem op omdat alle objecten waarnaar verwezen wordt zijn opgeslagen in dezelfde tabel documents
. Voor elk object wordt de laag waarnaar verwezen wordt opgeslagen in het veld referenced_layer
en het verwezen object-ID in het veld referenced_fk
.
Polymorfische-relaties definiëren
Eerst moeten we QGIS laten weten van de polymorfische relaties tussen de lagen. Dat wordt gedaan in Relaties en klik op de kleine pijl die naar beneden wijst naast de knop Relatie toevoegen, zodat u de optie Polymorfische relatie toevoegen kunt selecteren in het nieuw verschenen keuzemenu.
. Open de tabID zal worden gebruikt voor interne doeleinden en moet uniek zijn. U zou mogelijk aangepaste formulieren moeten maken. Als u het leeg laat zal er een voor u worden gegenereerd maar u kunt er zelf een toewijzen om er een te krijgen die voor u eenvoudiger is.
Referentielaag (Kind), ook wel beschouwd als de kindlaag, is die met het veld voor de vreemde sleutel erop. In ons geval is dit de laag
documents
. Voor deze laag dient u een verwijzingsveld toe te voegen dat naar de andere laag verwijst, dus is ditreferenced_fk
.Notitie
Soms heeft u meer dan één enkel veld nodig om objecten op een laag uniek te kunnen identificeren. Maken van een relatie met een dergelijke laag vereist een samengestelde sleutel, d.i. meer dan één enkel paar van overeenkomende velden. Gebruik de knop Nieuw veldpaar toevoegen als deel van een samengestelde sleutel om net zoveel paren toe te voegen als nodig is.
Veld laag is het veld in de verwijzingstabel dat het resultaat van de expressie voor de geëvalueerde laag opslaat, wat de verwijzingstabel is waartoe dit object behoort. In ons voorbeeld zou dit het veld
referenced_layer
zijn.Expressie veld laag evalueert naar een unieke identificatie van de laag. Dit mag zijn de laagnaam
@layer_name
, de laag-ID@layer_id
, de naam van de tabel van de laagdecode_uri(@layer, 'table')
of elk ander ding dat een laag uniek kan identificeren.Sterkte relatie stelt de sterkte in van de gemaakte relaties tussen de ouder- en kindlaag. Het standaard type Associatie betekent dat de ouderlaag eenvoudig is gekoppeld aan de kindlaag, terwijl het type Compositie u in staat stelt ook de kindobjecten te dupliceren bij het dupliceren van die van de ouderlaag en bij het verwijderen van een object ook de kinderen worden verwijderd, resulterend in trapsgewijze over alle niveaus (wat betekent dat kinderen van kinderen van… ook worden verwijderd).
Verwezen lagen ook wel beschouwd als ouderlagen, zijn die waar de primaire sleutel naartoe wijst, dus hier zouden dat de lagen
plants
enanimals
zijn. U moet de primaire sleutel definiëren van de verwezen lagen vanuit de keuzelijst, dus is hetfid
. Onthoud dat de definitie van een geldige primaire sleutel vereist dat alle verwezen lagen een veld hebben met die naam. Als er niet zo’n veld is, kunt u geen polymorfische relatie opslaan.
Eenmaal toegevoegd kan de polymorfische relatie worden bewerkt via het menu-item Polymorfische relatie bewerken.
Het voorbeeld hierboven gebruikt het volgende databaseschema:
CREATE SCHEMA park;
CREATE TABLE park.animals
(
fid serial NOT NULL,
geom geometry(Point, 4326) NOT NULL,
animal_species text NOT NULL,
CONSTRAINT animals_pkey PRIMARY KEY (fid)
);
CREATE INDEX animals_geom_idx ON park.animals USING gist (geom);
CREATE TABLE park.plants
(
fid serial NOT NULL,
geom geometry(Point, 4326) NOT NULL,
plant_species text NOT NULL,
CONSTRAINT plants_pkey PRIMARY KEY (fid)
);
CREATE INDEX plants_geom_idx ON park.plants USING gist (geom);
CREATE TABLE park.documents
(
fid serial NOT NULL,
referenced_layer text NOT NULL,
referenced_fk integer NOT NULL,
image_filename text NOT NULL,
CONSTRAINT documents_pkey PRIMARY KEY (fid)
);
15.2.7. Een externe bron opslaan en ophalen
Een veld kan als doel een bron hebben die is opgeslagen op een extern opslagsysteem. Formulier attributen kunnen worden geconfigureerd zodat zij acteren als een cliënt voor een extern opslagsysteem om deze bronnen op te slaan en op te halen, op aanvraag van de gebruiker, direct vanuit de formulieren.
15.2.7.1. Een externe opslag configureren
Voor het instellen van een externe opslag, moet u het eerst configureren vanuit de vector eigenschappen Formulier attributen en de widget Bijlage selecteren.
In de widget Bijlage moet u eerst het Type opslag selecteren:
Bestaand bestand selecteren: De doel-URL die al bestaat. Wanneer u een bron selecteert, wordt geen bewerking voor opslaan uitgevoerd, het attribuut wordt eenvoudigweg bijgewerkt met de URL.
Eenvoudig kopiëren: Slaat een kopie van de bron op een bestemming op een bestandsschijf op (wat een lokaal of een gedeeld netwerk-systeem zou kunnen zijn) en het attribuut wordt bijgewerkt met het te kopiëren pad.
WebDAV-opslag: De bron wordt gepusht naar een HTTP-server die het protocol WebDAV ondersteunt en het attribuut wordt bijgewerkt met de URL daarvan. Nextcloud, Pydio of andere software voor het hosten van bestanden ondersteunen dit protocol.
Dan moet u de parameter URL opslaan instellen, die de te gebruiken URL verschaft als een nieuwe bron moet worden opgeslagen. Het is mogelijk om een expressie in te stellen met de widget Data-bepaalde override om specifieke waarden te krijgen, overeenkomstig attributen van de objecten.
De variabele @selected_file_path zou in die expressie kunnen worden gebruikt en het absolute bestandspad weergeven van het door de gebruiker geselecteerde bestand (met bestandsselectie of slepen-en-neerzetten).
Notitie
Bij het gebruiken van de WebDAV externe opslag, als de URL eindigt op een “/”, wordt het beschouwd als een map en zal de geselecteerde bestandsnaam worden toegevoegd om de uiteindelijke URL te verkrijgen.
Als het externe opslagsysteem dat nodig heeft, is het mogelijk een authenticatie te configureren.
15.2.7.2. Een externe opslag gebruiken
Eenmaal geconfigureerd kunt u een lokaal bestand selecteren met de knop … bij het bewerken van een attribuut van een object. Afhankelijk van het geconfigureerde type opslag, zal het bestand worden opgeslagen op het externe opslagsysteem (behalve wanneer Bestaand bestand selecteren werd geselecteerd) en het veld zal worden bijgewerkt met de nieuwe URL van de bron.
Notitie
De gebruiker kan hetzelfde resultaat ook bereiken als hij een bestand sleept en neerzet in de widget Bijlage.
Gebruik de knop Annuleren om het proces van opslaan af te breken. Het is mogelijk om een viewer te configureren met een Geïntegreerde documentviewer zodat de bron automatisch zal worden opgehaald vanaf het externe opslagsysteem en wordt weergegeven direct onder de URL. Het bovenstaande pictogram geeft aan dat de bron niet kan worden opgehaald van het externe opslagsysteem. In dat geval zouden meer details kunnen verschijnen in het Paneel Logboekmeldingen.