18.11. Vectorcalculator

Notitie

In deze les zullen we zien hoe we nieuwe attributen toevoegen aan een vectorlaag, gebaseerd op een rekenkundige uitdrukking, met behulp van de vectorcalculator.

We weten al hoe we de raster calculator moeten gebruiken om nieuwe lagen te maken met behulp van rekenkundige uitdrukkingen. Een soortgelijk algoritme is beschikbaar voor vectorlagen, en genereert een nieuwe laag met dezelfde attributen van de invoerlaag, plus een aanvullende met het resultaat van de ingevoerde uitdrukking. Het algoritme heet Veld calculator en heeft het volgende dialoogvenster voor parameters.

../../../_images/field_calculator.png

Notitie

In nieuwere versies van Processing is de interface aanzienlijk gewijzigd, hij is krachtiger en eenvoudiger te gebruiken.

Hier zijn enkele voorbeelden van het gebruik van dat algoritme.

Laten we eerst de bevolkingsdichtheid berekenen van blanke mensen in elke polygoon, wat een census weergeeft. We hebben twee velden in de attributentabel die we daarvoor kunnen gebruiken, namelijk WHITE en SHAPE_AREA. We moeten ze alleen delen en vermenigvuldigen met 1 miljoen (om de dichtheid per vierkante km te verkrijgen), dus we kunnen de volgende formule in het overeenkomstige veld gebruiken

( "WHITE" / "SHAPE_AREA" ) * 1000000

Het dialoogvenster voor de parameters zou moeten worden gevuld zoals hieronder weergegeven.

../../../_images/density1.png

Dit zal een nieuw veld genereren, genaamd WHITE_DENS

Laten we nu de ratio berekenen tussen de velden MALES en FEMALES om een nieuw veld te maken dat aangeeft of de mannelijk bevolking numeriek domineert boven de vrouwelijke bevolking.

Voer de volgende formule in

"MALES" / "FEMALES"

Deze keer zou het venster met de parameters er zo uit moeten zien voordat op de knop OK wordt gedrukt.

../../../_images/ratio.png

In een eerdere versie zou, omdat beide velden van het type integer zijn, het resultaat worden afgebroken tot een integer. In dit geval zou de formule : 1.0 * "MALES" / "FEMALES" moeten zijn, om aan te geven dat we een getal floating point als resultaat willen hebben.

We kunnen voorwaardelijke functies gebruiken om een nieuw veld met tekststrings male of female te krijgen in plaats van de waarden voor de ratio, met behulp van de volgende formule:

CASE WHEN  "MALES" > "FEMALES"  THEN 'male' ELSE 'female' END

Het venster voor de parameters zou er zo uit moeten zien.

../../../_images/predominance.png

Een Python veldcalculator is beschikbaar in de “Advanced Python field calculator”, waarover we hier niet in detail treden

../../../_images/advanced.png