Regeln können eine große Hilfe sein – vor allem wenn sie ein hohes Maß an Datenqualität sicherstellen und dem Bearbeitenden das Leben leichter machen.
ArcGIS Pro stellt dafür drei Arten von Attributregeln zur Verfügung: Berechnungsregeln, Beschränkungsregeln und Validierungen. In verschiedenen Blogs im letzten Jahr habe ich schon auf diese Möglichkeiten hingewiesen (siehe Weitere Blogbeiträge am Ende des Blogs) – in einer neuen Reihe möchte ich die einzelnen Arten detaillierter vorstellen und dabei auch Arcade etwas mehr in den Blick nehmen. Dieser Teil beschäftigt sich mit den Berechnungsregeln.
Berechnungsregeln
Mit Berechnungsregeln können Feldwerte eines Features oder einer Datenbankzeile neu berechnet werden. Dazu wird ein Arcade-Ausdruck in der Geodatabase mit entsprechenden Informationen hinterlegt, bei welchem Ereignis (Hinzufügen, Ändern oder Löschen) dieser Ausdruck ausgeführt werden soll. Das Ergebnis des Ausdrucks ist ein Feldwert, der einem bestimmten Feld zugewiesen wird. Mit ArcGIS Pro 2.7 ist es jetzt auch möglich, dass das Skript mehrere Werte für unterschiedliche Felder zurück liefern kann.
Im Folgenden habe ich anschauliche Beispiele für den Einsatz von Berechnungsregeln zusammengestellt. Die Datengrundlage ist für alle Beispiele eine Punkt-Feature-Class in einer File-Geodatabase, die Bäume in einer Stadt repräsentiert.
Baum-ID erzeugen
Viele Datenmodelle verlangen eine benutzerspezifische eindeutige Bezeichnung von Objekten in einer Feature-Class oder Tabelle. Die OBJECTID und die GlobalID können da oft nicht unterstützen. Dieses Beispiel zeigt eine einfache Realisierung zur Automatisierung von eindeutigen Objektbezeichnungen. Die Eindeutigkeit wird mit Hilfe einer Datenbanksequenz sichergestellt. Aber auch die Verwendung anderer Algorithmen wie z.B. der Zeit oder des Datums ist denkbar.
Jeder Baum im Baumkataster hat einen eindeutigen Code: die Baum-ID. Der Code setzt sich zusammen aus einem Prefix, einer laufenden Nummer und einem Suffix, zum Beispiel „b102939@berlin.de“. Für die Umsetzung wurde mit dem Geoverarbeitungswerkzeug „Datenbanksequenz erstellen“ in der File-Geodatabase eine Sequenz angelegt, die für die Erzeugung einer eindeutigen Nummer für die Baum-ID genutzt werden kann. Ein Arcade-Ausdruck, der mit der Funktion NextSequenceValue() jederzeit einen neuen Wert der Datenbanksequenz abrufen kann, erstellt bei jedem neuen Baum eine neue ID, fügt mit dem Befehl Concatenate die einzelnen Textbausteine zusammen und über die Berechnungsregel wird dieser Wert dem Feld baumid zugewiesen.
Im Konfigurationsbereich der Berechnungsregel wir das Feld festgelegt, auf das sich das Ergebnis der Berechnung beziehen soll.
Die Datenbanksequenz mit der Bezeichnung baumidseq wurde zuvor mit dem Geoverarbeitungswerkzeug „Datenbanksequenz erstellen“ eingerichtet. Hier der Arcade-Ausdruck, der das Resultat der Concatenate-Funktion als eine neuen Baum-ID zurück liefert.
Der Trigger legt fest, dass die Berechnung nur bei der Anlage eines neuen Objekts ausgelöst werden soll.
Mit der Erfassung eines neuen Baumes wird nun automatisch eine neue eindeutige Baum-ID erstellt und in das Feld baumid (Alias Baum-Code) eingetragen.
Koordinaten aktualisieren
Dieses Beispiel zeigt, wie Sie mit sehr geringem Aufwand sehr viel zur Datenkonsistenz beitragen können:
Für die Weitergabe der Daten z.B. als CSV-Datei werden die Koordinaten des Baumes in Attributfeldern redundant mitgeführt (POINT_X, POINT_Y). Initial kann das mit dem Geoverarbeitungswerkzeug „XY-Koordinaten hinzufügen“ erreicht werden. Um aber nicht nach jeder Änderung das Werkzeug neu ausführen zu müssen, kann mit zwei einfachen Berechnungsregeln sichergestellt werden, dass bei der Erfassung eines neuen Baums oder bei einer Verschiebung eines Baums in der Karte die Koordinaten in den Feldern sofort aktualisiert werden.
Hier die Konfigurationen der Regel für die X-Koordinate:
Die Berechnungsregel ist äußerst minimalistisch. $feature ist in Arcade eine globale Variable. Im Kontext einer Berechnungsregel steht sie für das Feature, für das aktuell die Berechnung durchgeführt werden soll. Die Geometry-Funktion erzeugt ein Geometrieobjekt, das von diesem Feature abgeleitet wird. Da es sich um eine Punkt-Feature-Class handelt, muss das Ergebnis eine Punkt-Geometrie sein, die die Funktion x für die Abfrage der X-Koordinate zur Verfügung stellt.
Mit dem Trigger wird festgelegt, dass die Berechnung der X-Koordinate sowohl bei der Erfassung eines neuen Baums erfolgt, als auch bei der Bearbeitung – unabhängig davon, ob die Geometrie oder Attributwerte verändert wurden.
Hier die Konfigurationen der Regel für die Y-Koordinate:
Hinweis: Mit ArcGIS Pro 2.7 können in einer einzigen Berechnungsregel beide Werte gemeinsam ermittelt und den Feldern über die Rückgabe mit Hilfe des Schlüsselworts result und eines Dictionarys { <Feldname>: <Feldwert> } mit dem Schlüsselwort attributes zugewiesen werden:
Attribute von Bäumen in näherer Umgebung ändern
Nicht nur die Attribute eines neuen oder geänderten Objekts können mit Hilfe der Berechnungsregel manipuliert werden. Auch andere Objekte sowohl derselben als auch einer anderen Feature-Klasse im selben Workspace können geändert oder gelöscht werden. Und neue Objekte können erzeugt werden.
Wird in diesem Beispiel ein Baum gelöscht, weil er z.B. an einer Krankheit (Schädlingsbefall) oder wegen ungünstiger Standorteigenschaften abgestorben ist, sollen die Überprüfungsintervalle der Bäume im Umkreis von 50 Metern auf den niedrigsten Wert geändert werden, um sicher zu stellen, dass sie so oft wie möglich auf ähnliche Schäden hin untersucht werden. Diese Information ist im Attribut pflege hinterlegt, je nach Baumkategorie (Straßenbaum, Anlagenbaum) gibt es dafür unterschiedliche Domänen mit unterschiedliche Überwachungsintervallen.
Für die Berechnung müssen zuerst alle Bäume im Umkreis von 50 Metern um den zu löschenden Baum ermittelt werden. $datastore ist eine globale Variable, die den aktuellen Workspace oder den aktuellen Service von $feature repräsentiert.
Für jeden Baum – je nach Kategorie – werden die Änderungen in einem Array (var edits = []) definiert.
Das Schlüsselwort „edit“ mit den entsprechenden Änderungsanweisungen wird zurückgegeben.
Der Trigger für die Berechnung wird nur für die Löschoperation definiert:
Das waren 3 wertvolle Einsatzmöglichkeiten von Arcade zur Definition von Berechnungsregeln. Im nächsten Blog Teil 2 schauen wir uns die Beschränkungsregeln etwas genauer an.
Weitere Blogbeiträge zum Thema
Attribute Rules (Teil 2): Beschränkungsregeln in ArcGIS Pro
Attribute Rules (Teil 3): Validierungsregeln in ArcGIS Pro
ArcGIS Pro: Attributregeln in der Geodatabase