QGIS heeft zogenaamde ‘invoerformulieren’ (forms) om het aanpassen van de attribuutwaarden van een object te vergemakkelijken. Dit artikel gaat over het gebruik van die formulieren. We gaan uit van een BAG-extract met alleen de pand-omtrekken en voegen zelf de attribuutkolommen toe.
We beginnen met een shapefile met een aantal panden erin. Er zijn geen verder attribuutgegevens aanwezig. Met behulp van de Python Plugin ‘Table Manager’ van Borys Jurgiel is het eenvoudig om kolommen toe te voegen aan een shape bestand. Gewoon de naam en het type van de kolom aangeven. Eventueel kan ook de kolomvolgorde worden aangepast:
Op deze manier hebben we een shape file gemaakt met een aantal kolommen om ons fictieve ‘zonnepanelen’-onderzoek te kunnen doen. We willen per huis weten of een bewoner geinteresseerd is in zonnepanelen, en zo ja meteen opnemen wat voor type dak het huis heeft, wat het type en de zichtrichting is van het dak en zo nog wat gegevens.
Natuurlijk kun je nu de attribuuttabel openen en handmatig de waarden gaan aanpassen in deze Excel-achtige tabel:
Maar QGIS heeft ook ‘invoer’-formulieren. Hiermee kun je door op een object te klikken een eigen invoerformulier krijgen voor dat object.
Begin met het aanvinken van de mogelijkheid daartoe in de Settings/Opties dialoog. Kies het ‘Map tools’ tabje en vink het vinkje aan met ‘Open feature form, if a single feature is identified’.
Om de huizen-kaartlaag aan te gaan passen: maak deze kaartlaag in de Legenda aktief, en start het aanpassen door te klikken op het potloodje of door in het ‘Layer’-menu ‘Toggle editing’ te selecteren. Selecteer nu de infotool (blauwe cirkel met i-tje erin), en klik op een pand. Omdat je in de aanpas/edit-modus zit, zal je nu niet de info krijgen van het pand, maar zal er een ‘invoerformulier’ verschijnen voor het aangeklikte object:
Standaard geeft QGIS je dan voor elk attribuut een tekstregel als invoerveld. QGIS zorgt er bijvoorbeeld wel al voor dat je niet een tekst-string kunt invoeren in een kolom die als numeriek is gedefineerd.
Maar nog mooier is natuurlijk als je op een ja/nee vraag gewoon iets kunt aanvinken. Bij een datumveld een kalendertje te zien krijgt, of een keuzemenu als je bijvoorbeeld uit 4 verschillende mogelijkheden moet kiezen.
Om dat in te stellen vraag je van de laag de eigenschappen op, en kies je de tab ‘Velden/Fields’. Je ziet hierin de namen en typen van alle attribuutvelden, EN de mogelijkheid om het type invoerveld te wijzigen.
In onderstaande screendump zorg ik bijvoorbeeld dat de FID kolom helemaal niet te zien is (Hidden), dat ik voor het invoeren van een naam gewoon tekst kan invoeren, en voor het invoeren van de datum een kalender krijg. Bij wens komt een vinkje/checkbox en voor het daktype krijg ik een ‘Value map’. Dat is een keuzemenu waarbij ik kan kiezen uit welke waarden ik kan kiezen: zelf de mogelijkheden geven, of alleen al aanwezige mogelijkheden of… kijk maar bij de mogelijkheden.
Wanneer je nu een invoerformulier oproept, zal het er zo uitzien:
Handiger toch? En het kan nog mooier, Nathan Woodrow heeft al eens geschreven over ‘Custom feature forms with Python logic’. Daarmee kun je het formulier nog intelligenter maken: bijvoorbeeld checks invoeren die een waarde check doen op basis van een database query, of het laten verschijnen of verdwijnen van een aantal velden op basis van het aanvinken van een waarden of …
Hierover wil ik later nog eens een artikel schrijven.
Leave a comment
Thanks for the shout out 🙂
How did you do the Dial Range thing. I have never seen that option before.
It’s just in the list of possible edit widgets. But it is not very workable: you do not get any feedback about current value you are setting nor can you see the value…