ArcGIS Arcade bietet sich an vielen Stellen innerhalb von ArcGIS als schlanke und hilfreiche Skriptsprache an, die einsatzfertige Funktionen beinhaltet und grundlegende ArcGIS-Konzepte wie Feature, Layer und WebMap versteht.
In diesem Blogbeitrag zeigen wir Ihnen anhand zweier Beispiele die Vorteile von ArcGIS Arcade.
Beispiel 1: Verbesserte Performanz
Die «Point in Polygon» Aufgabe ist ein richtiger Klassiker der geographischen Informationswissenschaft. Den theoretischen Hintergrund dieser Aufgabe können wir aus dem Wikipedia-Artikel entnehmen und für die technische Umsetzung in ArcGIS Pro finden wir sogar einen technischen Support-Artikel. Darin wird vorgeschlagen für die Aufgabe das Werkzeug «Zusammenfassen innerhalb» oder «Räumliche Verbindung» zu verwenden. Dabei resultieren jedoch jeweils neue Feature-Klassen in der Geodatabase. Aus Gründen der Performanz würden wir eigentlich eine direkte Lösung (ohne Erzeugung einer neuen Polygon-Feature-Klasse) bevorzugen.
Mithilfe von ArcGIS Arcade können wir diese Anforderungen stemmen. Dafür wird folgender ArcGIS Arcade Ausdruck im Geoverarbeitungswerkzeug Feld Berechnen verwendet und auf der Polygon-Feature-Klasse angewendet.

Innerhalb des Arcade Ausdrucks wird per $datastore auf die Geodatabase der Polygon-Feature-Klasse zugegriffen. Darin befindet sich ebenfalls die Punkt-Feature-Klasse «baumkataster». Mittels FeatureSetByName() wird diese Punkt-Feature-Klasse initialisiert. Mit der Funtktion Intersect() werden nun alle Bäume des FeatureSets geprüft, ob sie sich im jeweiligen Polygon des Quartiers befinden und gezählt (Zeile 3). Für knapp 75’000 Features und 34 Polygonen-Features dauert die Ausführung des Feldberechnungs-Tools mit Arcade 2 Sekunden (Feature-Klassen sind in Filegeodatabase gespeichert).

Zum Vergleich, die Geoverarbeitungswerkzeuge «Zusammenfassen(innerhalb)» und «Räumliche Verbindung» benötigen 12 bzw. 3 Sekunden.
Natürlich lässt sich der ArcGIS Arcade Ausdruck auch als Python-Code ausführen und kann so in einen automatisierten Workflow eingebettet werden. Eine weitere Möglichkeit wäre den ArcGIS Arcade Ausdruck als Attribut-Regel der Polygon-Feature-Klasse zu definieren bspw. für eine Batch-Berechnung.

Abbildung 3: Python-Code zum Ausführen des Geoverarbeitungswerkzeug “Feld Berechnen” mit ArcGIS Arcade Ausdruck.
Beispiel 2: Räumliche Analysen on-the-fly und ohne Datenmanipulation im MapViewer
Für Standorte von Kindertagestätten sollen folgende Fragen mit ArcGIS Arcade im MapViewer beantworten werden:
- Wie viele Autoparkplätze befinden sich im Umkreis von 100 m um den Standort?
- Wie hoch ist die Anzahl gebührenpflichtiger (Weisse Zone) und gebührenfreier (Blaue Zone) Parkplätze für den jeweiligen Standort?
- Gibt es eine Haltestelle des öffentlichen Verkehrs, die näher als 200 m Luftlinie entfernt ist und wenn ja, wie heißt diese?
Die Antworten auf diese Fragen wollen wir übersichtlich und direkt im Popup-Fenster des jeweiligen Standorts anzeigen lassen. Das Ergebnis kann unter folgendem Link angeschaut werden:
Die Frage 1 und 2 können direkt mit einem ArcGIS Arcade Ausdruck zusammengefasst werden. Dabei wollen wir per ArcGIS Arcade auf den Web-Feature-Layer «Parkplätze Zürich» zugreifen, welcher in derselben WebMap eingebunden ist, wie die Standorte unserer Kindertagesstätten.
Mittels «$map» können wir auf Feature-Layer derselben WebMap zugreifen und diese als FeatureSet im ArcGIS Arcade Ausdruck initialisieren.

Die Ausgabe des ArcGIS Arcade Ausdrucks soll als Tortendiagramm erfolgen. Dafür wählen wir als Ausgabe-type ‘media’ und ‘piechart’. Syntax-Vorlagen solcher Ausgaben findet man im ArcGIS Arcade Editor unter dem Reiter Templates.

Widmen wir uns nun der Frage 3: Hierfür benutzen wir wieder die geometrischen Funktionen Intersect() und Buffer(). Jedoch soll nun zusätzlich die nächste aller potenziellen Haltestellen identifiziert werden. Dafür wird die Distanz zwischen dem Standort und den potenziellen Haltestellen berechnet mittels Distance().
Zudem definieren wir eine Hilfs-Funktion «naechsteHaltestelle» (Zeilen 10-22), mit deren Hilfe wir durch die potenziellen Haltestellen iterieren und so die nächstgelegene identifizieren. Außerdem wollen wir den Fall abdecken, dass keine Haltestelle näher als 200 m zum Standort befindet, wofür eine if-else-Schlaufe verwendet werden kann.

Wichtig: Bei der Verwendung geometrischer Funktionen mit Feature-Services sollte man sich bewusst sein, dass ArcGIS Arcade Ausdrücke sicher Client-seitig auf Abruf ausgeführt werden. Dadurch erhöht sich die Performanz der Web-Applikation. Andererseits werden Linien- und Polygon-Feature-Services je nach Zoom-Stufe generalisiert (in vereinfachter geometrischer Form) im Client dargestellt. Dies kann bei geometrischen Funktionen zu unterschiedlichen Resultaten auf unterschiedlichen Zoom-Stufen führen. Basierend auf dem Projektionssystem der Hintergrundkarte sollte entschieden werden, ob geometrische Funktionen auf einer geodätischen oder kartesischen mathematischen Grundlage ausgeführt werden. ArcGIS Arcade stellt für die betroffenen Funktionen jeweils beide zur Verfügung, etwa BufferGeodetic() und Buffer(). Weitere Infos hierzu finden Sie hier ->.
