ArcGIS for Desktop - Tips voor Experts

Egge-Jan Pollé
Spatial Join: meerdere attribuutwaarden wegschrijven naar één kolom
Stel: je hebt een dataset met nationale parken en je wilt weten in welke gemeenten die parken liggen. Het antwoord waar je naar op zoek bent moet ongeveer deze vorm hebben:
Het nationale park De Alde Feanen ligt in 2016 in de gemeenten: Tytsjerksteradiel, Heerenveen, Leeuwarden, Smallingerland.
Hoe doe je dat? In deze blog laten we zien hoe je deze vraag kunt beantwoorden in ArcGIS for Desktop met de Spatial Join geoprocessing tool en een stukje Python.
Begin in het dialoogvenster Spatial Join met het invullen van de eerste twee velden:
- Target Features: nationaleparken ← dit zijn twintig polygonen, waaronder enkele multipolygonen
- Join Features: gemeenten2016 ← inclusief water; handig! Nationaal park de Oosterschelde bestaat immers voornamelijk uit water
Geef vervolgens de naam en de locatie op voor de Output Feature Class, bijvoorbeeld 'nationaleparken_sj' en zorg ervoor dat de Join Operation op de default waarde - JOIN_ONE_TO_ONE - blijft staan. Je wilt immers elk vlak van een nationaal park maar één keer terugkrijgen, en niet meerdere keren; dus niet voor elke overlappende gemeente een apart vlakobject.
Field Map of Join Features
En hoe zorg je er nou voor dat er meerdere gemeentenamen aan een nationaal park gekoppeld worden?
Klik in het gedeelte Field Map of Join Features met de rechtermuisknop op de kolom Gemeentenaam om het dialoogvenster Output Field Properties te openen.
- Begin in dit dialoog met het aanpassen van de Length van de kolom, van 30 naar bijvoorbeeld 400 karakters. Waarom? Als de kolom te smal is dan passen de achter elkaar geplakte gemeentenamen er niet in en zal je analyse vastlopen op een ERROR 001156...
- Stel vervolgens de Merge Rule in op Join en de Delimiter, het scheidingsteken, op een komma en een spatie. (Nee, die spatie is niet zichtbaar in de schermafdruk, maar hij staat er wel.)
Klik op OK en bekijk de kolom Gemeentenaam in de resultaattabel:
En om dit resultaat in twintig mooie volzinnen uit te schrijven kun je de volgende code in het Python scherm uitvoeren:
with arcpy.da.SearchCursor("nationaleparken_sj",["naam","Gemeentenaam"]) as cursor:
for row in cursor:
print("Het nationale park {0} ligt in 2016 in de gemeenten: {1}.".format(row[0], row[1]))
Probeer het maar eens uit.