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
- Ga naar de gewenste dataset.
- Open het tabblad 'Attributes'.
- Klik op 'Add' om een attribuut toe te voegen.
Er wordt nu een modal geopend.
- Geef een attribuutnaam op.
- Kies een alias.
- Kies voor het Type 'Computed'.
- In het veld 'ComputedQuery' kan een berekening worden opgevoerd. In het volgende hoofdstuk geven we een aantal voorbeelden.
- Met de knop 'Test Query' kan in de ingevulde berekening worden getest, er wordt een willekeurig resultaat getoond als de berekening geldig is.
- Klik op 'Create' om het attribuut toe te voegen.

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.
Berekening | Query |
---|---|
Oppervlakte | ST_Area(geom) |
Lengte lijnsegmenten | ST_Length(geom) |
Omtrek berekenen | ST_Perimeter(geom) |
X-coördinaat | ST_X(geom) |
Y-coördinaat | ST_Y(geom) |
Bereken bounding box | ST_Extent(geom) |
Bereken centroïde | ST_Centroid(geom) |
Afronden | ROUND(attribuutnaam of berekening) |
Attributen optellen/aftrekken (numeriek) | "attribuutnaam" + "attribuutnaam" - "attribuutnaam" |
Attributen delen/vermenigvuldigen (numeriek) | "attribuutnaam" / "attribuutnaam" * "attribuutnaam" |
Attributen combineren, witruimte toevoegen en statisch label toevoegen | attribuutnaam || ' ' || attribuutnaam || ' ' || 'label' |
Leeftijd in dagen berekenen op basis van datum | AGE(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:
- Relevante handleiding PostgreSql:
- Vergelijkingen: https://www.postgresql.org/docs/current/functions-comparison.html
- Berekeningen: https://www.postgresql.org/docs/current/functions-math.html
- Tekstfuncties: https://www.postgresql.org/docs/current/functions-string.html
- Conditionele functies: https://www.postgresql.org/docs/current/functions-conditional.html
- Handleiding PostGIS
- Ruimtelijke functies: https://postgis.net/docs/manual-3.5/reference.html
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.
Updated 10 days ago