Dynamische attributen

Bereken oppervlakte, maak labels of reken met tijd

📘

Dynamische attributen

Dynamische attributen zijn samengestelde attributen die op basis van bestaande objecten en attribuutwaarden berekeningen uitvoeren. Dit kan bijvoorbeeld gebruikt worden voor een combinate van twee attributen om te labelen, het berekenen van een oppervlakte of lengte of berekeningen met tijd. In deze handleiding wordt uitgelegd hoe dit ingesteld dient te worden.

Dynamisch attribuut toevoegen aan dataset

  1. Ga naar de gewenste dataset.
  2. Open het tabblad 'Attributes'.
  3. Klik op 'Add' om een attribuut toe te voegen.

Er wordt nu een modal geopend.

  1. Geef een attribuutnaam op.
  2. Kies een alias.
  3. Kies voor het Type 'Computed'.
  4. In het veld 'ComputedQuery' kan een berekening worden opgevoerd. In het volgende hoofdstuk geven we een aantal voorbeelden.
  5. Met de knop 'Test Query' kan in de ingevulde berekening worden getest, er wordt een willekeurig resultaat getoond als de berekening geldig is.
  6. Klik op 'Create' om het attribuut toe te voegen.
Figuur 1 - Toevoegen van een attribuut.

Figuur 1 - Toevoegen van een attribuut.

Het dynamische attribuut wordt on-the-fly berekend. Is de dataset bijvoorbeeld muteerbaar? Dan wordt na elke wijziging het dynamisch attribuut opnieuw berekend.

Voorbeeld berekeningen

Een aantal voorbeelden welke gebruikt kunnen worden voor dynamische attributen.

Let op! Bij berekeningen zoals optellen/aftrekken en delen/vermenigvuldigen dienen numerieke (type 'Numeric' of 'Double') attributen gebruikt te worden. Attributen van het type 'Integer' werken hierbij niet.

BerekeningQuery
OppervlakteST_Area(geom)
Lengte lijnsegmentenST_Length(geom)
Omtrek berekenenST_Perimeter(geom)
X-coördinaatST_X(geom)
Y-coördinaatST_Y(geom)
Bereken bounding boxST_Extent(geom)
Bereken centroïdeST_Centroid(geom)
AfrondenROUND(attribuutnaam of berekening)
Attributen optellen/aftrekken (numeriek)"attribuutnaam" + "attribuutnaam" - "attribuutnaam"
Attributen delen/vermenigvuldigen (numeriek)"attribuutnaam" / "attribuutnaam" * "attribuutnaam"
Attributen combineren, witruimte toevoegen en statisch label toevoegenattribuutnaam || ' ' || attribuutnaam || ' ' || 'label'
Leeftijd in dagen berekenen op basis van datumAGE(attribuutnaam)

Naast bovenstaande mogelijkheden kan je op basis van standaard SQL, en aangevuld met PostGIS-functies uitgebreide query's opbouwen. Het kan echter wel zijn dat een complexere query kan leiden tot fouten of problemen op je dataset, dus controleer goed de query die je instelt!


Conditionele / voorwaardelijke berekeningen

Je kan binnen de dynamische attributen ook gebruik maken van condities (bijv. of een bepaalde waarde groter is of kleiner dan een andere waarde of datum). Zie hieronder een voorbeeld met datums:

Datum voor of na vandaag

CASE WHEN <attribuut> is null THEN 'Geen datum' WHEN <attribuut>::date = now()::date THEN 'Vandaag' WHEN <attribuut>::date < now()::date THEN 'Voor vandaag' ELSE 'Na vandaag' END

Vervang in bovenstaande query het veld _<attribuut>_ voor de naam van het attribuut welke de datum bevat.

Meer mogelijkheden voor conditionele waardes met PostgreSql zijn beschreven op de volgende pagina: https://www.postgresql.org/docs/current/functions-conditional.html

Meer informatie

De queries die je kan invoeren bij de dynamische queries zijn gebaseerd op de SQL-syntax zoals ondersteund wordt door PostgreSql en PostGIS. Meer mogelijkheden en documentatie is te vinden op onderstaande bronnen:


🚧

Hergebruik van dynamische attributen

Met dynamische attributen is het mogelijk complexe query's op te bouwen op basis van veel verschillende veldwaardes. Het is echter niet mogelijk om gebruik te maken van eerder aangemaakte dynamische attributen in een ander dynamisch attribuut. Je kan natuurlijk wel het deel van de query dat je wilt hergebruiken overnemen in een ander dynamisch attribuut met een grotere of uitgebreidere query.