Die Toolbox GeoAnalytics Tools enthält mehrere Werkzeuge, mit denen Sie einen Ausdruck anwenden können.
- Pufferausdrücke in Puffer erstellen
- Pufferausdrücke in Spuren rekonstruieren
- Verbindungsbedingungen in Features verbinden
- Ereignisbedingungen in Ereignisse ermitteln
- Berechnen von Feldwerten in Feld berechnen
Die GeoAnalytics Tools, die Ausdrücke verwenden, haben unterschiedliche Zwecke und weisen Beschränkungen bezüglich der Ausdrücke auf, die angewendet werden können. In Version 10.6 wird Arcade von allen in GeoAnalytics Server verwendeten Ausdrücken unterstützt.
Weitere Informationen zu Arcade-Funktionen
Ausdrücke in Feld berechnen
Im Werkzeug Feld berechnen dienen Ausdrücke zur Berechnung von Werten für das Feld. Bestimmen Sie mithilfe von Ausdrücken, wie jedes Feature gefüllt wird. Das Ergebnis eines Ausdrucks in "Feld berechnen" muss von demselben Typ wie das Feld sein. Die Abschnitte unten enthalten Beispiele für die Verwendung eines Ausdrucks.
Beispiele für mathematische Operatoren und Funktionen
Mit Ausdrücken können Zahlen mathematisch verarbeitet werden. In der folgenden Tabelle wird ein Beispiel für verfügbare Operationen gezeigt.
Weitere Informationen zu den in Arcade verfügbaren mathematischen Operationen und Funktionen
Operator | Erklärung | Beispiel | Ergebnis |
---|---|---|---|
a + b | a plus b. | fieldname enthält den Wert 1,5 $feature["fieldname"] + 2,5 | 4,0 |
a - b | a minus b. | fieldname enthält den Wert 3,3 $feature["fieldname"] - 2,2 | 1,1 |
a * b | a mal b. | fieldname enthält den Wert 2,0 $feature["fieldname"] * 2,2 | 4,4 |
a / b | a dividiert durch b. | fieldname enthält den Wert 4,0 $feature["fieldname"] / 1,25 | 3,2 |
abs( a ) | Gibt den absoluten (positiven) Wert von a zurück. | fieldname enthält den Wert -1,5 abs($feature["fieldname"]) | 1,5 |
log( a ) | Gibt den natürlichen Logarithmus (Basis e) von a zurück. | fieldname enthält den Wert 1 log($feature["fieldname"]) | 0 |
sin( a ) | Gibt den trigonometrischen Sinus von a zurück. Von der Eingabe wird angenommen, dass es sich um einen Winkel in Radiant handelt. | fieldname enthält den Wert 1,5707 sin($feature["fieldname"]) | 1 |
cos( a ) | Gibt den trigonometrischen Cosinus von a zurück. Von der Eingabe wird angenommen, dass es sich um einen Winkel in Radianten handelt. | fieldname enthält den Wert 0 cos($feature["fieldname"]) | 1 |
tan( a ) | Gibt den Tangens von a zurück. Von der Eingabe wird angenommen, dass es sich um einen Winkel in Radiant handelt. | fieldname enthält den Wert 0 tan($feature["fieldname"]) | 0 |
sqrt( a ) | Gibt die Quadratwurzel von a zurück. | fieldname enthält den Wert 9 sqrt($feature["fieldname"]) | 3 |
min( a, b ) | Gibt von a und b die Zahl mit dem niedrigsten Wert zurück. | fieldname enthält den Wert 1,5 und den Wert -3 min($feature["fieldname"], -3) | -3 |
max( a, b ) | Gibt von a oder b die Zahl mit dem höchsten Wert zurück. | fieldname1 enthält den Wert 1,5, und fieldname2 enthält den Wert -3 max($feature["fieldname1"], $feature["fieldname2"]) | 1,5 |
constrain(<value>,<low>,<high>) | Gibt den Eingabewert zurück, sofern dieser innerhalb der Grenzwerte liegt. Wenn der Eingabewert kleiner als der niedrige Wert ist, wird der niedrige Wert zurückgegeben. Wenn der Eingabewert größer als der hohe Wert ist, wird der hohe Wert zurückgegeben. | constrain($feature["distance"], 0, 10) constrain($feature['Store dist'], 6, distance) | Gibt 0 zurück, wenn distance kleiner als 0 ist, 10, wenn distance größer als 10 ist, und ansonsten distance. Gibt 6 zurück, wenn Store dist kleiner als 6 ist, distance, wenn Store dist größer als distance ist, und ansonsten Store dist. |
Multiplikationsbeispiel für das Berechnen eines Feldwertes.
$feature["Distance"] * 2
Beispiele für Textfunktion
Mit Ausdrücken von "Feld berechnen" kann Text verarbeitet werden. In der folgenden Tabelle wird ein Beispiel für verfügbare Operationen gezeigt.
Weitere Informationen zu den in Arcade verfügbaren Textfunktionen
Operator | Erklärung | Beispiel | Ergebnis |
---|---|---|---|
concatenate( <Werte>, <Trennzeichen>) | Verbindet Werte und gibt eine Zeichenfolge zurück.
| fieldname enthält einen Wert von GeoAnalytics Concatenate ([$features["fieldname"], "is", "great!"], ' ') | GeoAnalytics is great! |
find(<searchText>, <text>, <startPos>) | Sucht eine Zeichenfolge in einer Zeichenfolge. Platzhalter werden nicht unterstützt.
| fieldname1 enthält den Wert 14NorthStreet, und fieldname2 enthält den Wert North find($feature["fieldname2"], $feature["fieldname1"]) | 2 |
lower(<Wert>) | Ändert eine Zeichenfolge in Kleinbuchstaben.
| fieldname enthält einen Wert von GEOANALYTICS lower($feature["fieldname"]) | GeoAnalytics |
Textbeispiel mit find und lower.
find(("north"), lower("146NorthStreet"))
Beispiele für Datumsfunktionen
Mit Ausdrücken vom Typ "Feld berechnen" können Datumswerte verarbeitet werden. In der folgenden Tabelle wird ein Beispiel für verfügbare Operationen gezeigt.
Weitere Informationen zu den in Arcade verfügbaren Datumsfunktionen
In Arcade ist der Wertebereich für Monate 0 (Januar) bis 11 (Dezember), für Tage 1 bis 31, für Stunden 0 (12:00 Uhr) bis 23 (11:00 Uhr), für Minuten und Sekunden 0 bis 59 und für Millisekunden 0 bis 999. In Arcade werden Uhrzeitwerte für den Standort des GeoAnalytics Server zurückgegeben.
Operator | Erklärung | Beispiel | Ergebnis |
---|---|---|---|
date( <Wert>, <Monat>, <Tag>, <Stunde>, <Minute>) | Gibt einen Wert oder einen Satz von Werten als Datumszeichenfolge aus.
| fieldname enthält einen Wert von 1476987783555 Beispiel 1: Date($features["fieldname"]) Beispiel 2: Date(2017,0,14,0) Beispiel 3: Date() | Beispiel 1: 20 Oct 2016 11:23:03 am Beispiel 2: 14 Jan 2017 12:00:00 am Beispiel 3: Gibt die aktuelle Uhrzeit zurück. |
DateDiff(<Datum1>, <Datum2>, <Einheiten>) | Subtrahiert zwei Datumsangaben und gibt die Differenz in den angegebenen Einheiten zurück.
| Beispiel 1: DateDiff(Date(2017,1,14,0), Date()) Beispiel 2: DateDiff(Date(2017,1,14,0), Date(), "Years") | Das Ergebnis variiert abhängig vom Zeitpunkt, an dem Sie diesen Befehl ausführen. Beispiel 1: -20532129137 Beispiel 2: -0.6546783768647119 |
Year(<Datumswert>) | Gibt das Jahr des angegebenen Datums zurück.
| Beispiel 1: fieldname ist ein Feld vom Typ Date mit dem Wert 09 Oct 2017 04:30:43 pm Year($feature["fieldname"]) Beispiel 2: fieldname ist ein als ISO 8601-Zeichenfolge formatiertes Zeichenfolgenfeld mit dem Wert 2012-09-27. | Beispiel 1: 2017 Beispiel 2: 2012 |
Konditionale Operatoren
Konditionale Anweisungen können für die folgenden Operatoren verwendet werden:
Operator | Erklärung | Beispiel | Ergebnisse |
---|---|---|---|
a > b a < b | a ist größer als b a ist kleiner als b | 10 > 2 | False |
a >= b a <= b | a ist größer als oder gleich b a ist kleiner als oder gleich b | abs(-10) >= 10 | True |
a != b | a ist ungleich b | abs(-3) != -3 | True |
a == b | a ist gleich b | abs(-5) == 5 | True |
<Bedingung1> || <Bedingung2> | Bedingung 1 oder Bedingung 2 ist erfüllt. | (abs(-5) == 5) || (10 < 2) | True |
<Bedingung1> && <Bedingung2> | Bedingung 1 und Bedingung 2 sind erfüllt. | (abs(-5) == 5) && (10 < 2) | False |
Beispiele für logische Operatoren
Zusätzlich zu konditionalen Operatoren können für die Berechnung von Feldern auch erweiterte logische Operatoren verwendet werden.
Weitere Informationen zu den in Arcade verfügbaren logischen Funktionen
Funktion | Erklärung | Beispiel | Ergebnis |
---|---|---|---|
iff(<condition>,<true value>,<false value>) | Gibt einen Wert zurück, wenn eine Bedingungsauswertung true ergibt, und einen anderen Wert, wenn die Bedingungsauswertung false ergibt. <true value> und <false value> können Folgendes sein:
| iff($feature["field1"] > $feature["field2"], $feature["field1"], 0) iff($feature["field1"] > $feature["field2"], iff($feature["field2"] = 0, $feature["field3"], $feature["field4"]), 0) | Gibt field1 zurück, wenn field1 größer als field2 ist, und ansonsten 0. Gibt das Ergebnis der zweiten iff-Funktion zurück, wenn field1 größer als field2 ist, und ansonsten 0. |
when(<expression1> , <result1> , <expression2> , <result2> , ... , <expressionN> , <resultN>, <default>) | Wertet nacheinander eine Reihe von Ausdrücken aus, bis eine Auswertung true ergibt.
| when(($feature["field1"] + 10) > 1, 1,($feature["field2"] + 10) > 2 , 2, $feature["field3"]) | Wenn field1 + 10 größer als 1 ist, wird 1 zurückgegeben. Falls nicht, wird überprüft, ob field2 + 10 größer als 2 ist. Falls ja, wird 2 zurückgegeben. Falls nicht, wird field3 zurückgegeben. |
decode(<conditional val> , <case1> , <result1>, <case2>, <result2>, ... <caseN>, <resultN>, <defaultValue> ) | Die Funktion decode wertet einen Ausdruck aus und vergleicht dessen Wert mit nachfolgenden Parametern. Wenn der Ausdruck übereinstimmt, wird der nächste Parameterwert zurückgegeben. Gibt es keine Übereinstimmung, kann der letzte Parameter als Standardrückgabewert verwendet werden.
| decode($feature["field1"] + 3 , $feature["field1"], 1, $feature["field2"], 2, 0) | Überprüft den conditional val field1 + 3 und case1 field1 auf Gleichheit. Bei true wird 1 zurückgegeben. Bei false werden field1 + 3 und field2 auf Gleichheit überprüft. Bei true wird 2 zurückgegeben; ansonsten 0. |
Beispiele für Tracking-bezogene Ausdrücke
Zudem können in einigen GeoAnalytics Tools, z. B. "Ereignisse ermitteln" und "Feld berechnen", Tracking-bezogene Gleichungen in Arcade verwendet werden. In "Feld berechnen" können Tracking-Gleichungen verwendet werden, wenn im Eingabe-Layer Zeiteigenschaften aktiviert sind. Der Ausdruck ist Tracking-bezogen ist aktiviert, und es wird mindestens ein Feld zum Identifizieren von Spuren bestimmt.
Funktion | Erklärung | Beispiel | Ergebnis | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
$track.field["fieldname"].history(<value1>) | Gibt ein Array aus Werten im angegebenen Feld für den angegebenen Zeitindex zurück.
| MyField enthält die sequenziell angeordneten Werte [10, 20, 30, 40, 50, 60, 70, 80]. Der Wert 10 befindet sich bei Index 0 und der Wert 80 bei Index 7. Ausdrücke werden bei jedem Index ausgewertet und Beispiele veranschaulichen den Index, der für die Beispiele verwendet wird. n steht für die Anzahl der Features in der Sequenz und k steht für den Index, der ausgewertet wird. Beispiel 1:$track.field["MyField"].history(3)) Beispiel 2:$track.field["MyField"].history(-3) Beispiel 3:mean($track.field["MyField"].history(-2)) Beispiel 4:$track.field["MyField"].history(-3)[0] | Wenn Beispiel 1 bei Index k ausgewertet wird, wird ein Array mit den Werten bei Index 3 bis k zurückgegeben. Wird bei Index 6 (70) ausgewertet, wird ein Array mit den Werten bei Index [3, 4, 5, 6] zurückgegeben, sodass sich das Array [40, 50, 60, 70] ergibt. Beispiel 2 gibt ein Array mit den Werten von Index k minus dem angegebenen Wert minus 1 (k-2) zurück. Wenn dies bei Index 6 ausgewertet wird (value = 70), werden die Werte von k-2, k-1 und k zurückgegeben [50, 60, 70]. Beispiel 3 gibt den Mittelwert der Werte bei Index k-1 und k zurück. Wenn Sie dies bei Index 4 auswerten (value = 50), finden Sie den Mittelwert von value 50 (Index 3) und value 60 (Index 4), der gleich 65 ist. Wenn Sie dies bei Index 7 auswerten, ergibt sich der Mittelwert von 70 und 80, der gleich 75 ist. Beispiel 4 gibt das erste Element (Index 0) des in Beispiel 2 erstellten Arrays zurück: 50. | ||||||||||||
$track.field["fieldname"].history(<value1>, <value2>) | Gibt ein Array von Werten von index1 (<value1>) bis zu index2 (<value2>) zurück. | MyField verfügt über sequenziell angeordnete Werte von [10, 20, 30, 40, 50, 60, 70, 80]. 10 ist im Index 0 und 80 im Index 7. In diesem Beispiel werden Ausdrücke bei Index 7 (80) ausgewertet. Beispiel 1:$track.field["MyField"].history(-3, -2)) Beispiel 2:$track.field["MyField"].history(-5, -2)) | Beispiel 1: [60] Beispiel 2: [40, 50, 60] | ||||||||||||
$track.time.start | Berechnet die Startzeit einer Spur in Millisekunden von der Unixzeit. | Verwendet wird eine Spur, die am 2. Januar 2017 startet. $track.time.start | 1483315200000 | ||||||||||||
$track.time.duration | Berechnet die Dauer einer Spur in Millisekunden vom Start bis zum aktuellen Zeitschritt. | Verwendet wird eine Spur, die am 2. Januar 2017 startet; die aktuelle Zeit ist 4. Januar 2017. $track.time.duration | 172800000 | ||||||||||||
$track.time.current | Berechnet die aktuelle Uhrzeit in einer Spur. | Verwendet wird ein Feature, das am 3. Januar 2017 um 9:00 Uhr auftritt. $track.time.current | 1483315200000 | ||||||||||||
$track.index | Gibt den Zeitindex des berechneten Features zurück. | Die Berechnung dieses Wertes für das erste Feature in einer Spur. $track.index | 0 | ||||||||||||
$track.T(<Wert>, "<Einheiten>") | Gibt die Feature-Zeit und die mit dem numerischen <Wert> und den angegebenen <Einheiten> erstellte Zeit zurück.
| Verwendet wird ein Feature, das am 2. Januar 2017 um 14:00 Uhr auftritt. Beispiel 1: $track.T(1, "hours") Beispiel 2: $track.T(-2, "days") | Beispiel 1: Gibt 2. Januar um 15:00 Uhr zurück: 1483369200000 Beispiel 2: Gibt 31. Dezember um 14:00 Uhr zurück: 1483192800000 | ||||||||||||
$track.field["fieldname"].window(<value1>, <value2>) | Gibt ein Array aus Werten im angegebenen Feld für den angegebenen Zeitindex zurück. Die Funktion "window" ermöglicht die Vorwärts- oder Rückwärtsbewegung in der Zeit. Der Ausdruck wird bei jedem Feature in der Spur ausgewertet.
Die Funktion "window" ist in ArcGIS Enterprise 10.6.1 verfügbar. | MyField enthält die sequenziell angeordneten Werte [10, 20, 30, 40, 50]. Der Ausdruck wird bei jedem Feature in der Spur ausgewertet. In den zurückgegebenen Ergebnissen ist das Start-Feature enthalten, das End-Feature aber nicht. Beispiel 1:$track.field["MyField"].window(-1,2) Beispiel 2:$track.field["MyField"].window(-2,0)[0] Beispiel 3:$track.field["MyField"].window(0,3)[2] | Beispiel 1: Nach Auswertung bei jedem Feature enthält die Tabelle die folgenden Ergebnisse.
Beispiel 2: Nach Auswertung bei Index 2 (Wert: 30) lautet das Ergebnis: 10. Beispiel 3: Nach Auswertung bei Index 2 (Wert: 30) lautet das Ergebnis: 50. | ||||||||||||
$track.geometry.window(<value1>, <value2>) | Gibt ein Array aus Werten zur Darstellung der Geometrie für den angegebenen Zeitindex zurück. Die Funktion "window" ermöglicht die Vorwärts- oder Rückwärtsbewegung in der Zeit. Der Ausdruck wird bei jedem Feature in der Spur ausgewertet.
Die Funktion "window" ist in ArcGIS Enterprise 10.6.1 verfügbar. | MyField enthält die sequenziell angeordneten Werte [10, 20, 30, 40, 50]. Die Geometrie der Features lautet [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}] Der Ausdruck wird bei jedem Feature in der Spur ausgewertet. In den zurückgegebenen Ergebnissen ist das Start-Feature enthalten, das End-Feature aber nicht. Beispiel 1:$track.geometry.window(-1,2) Beispiel 2: $track.geometry.window(0,1)[0] für ein Polylinien-Dataset Beispiel 3: $track.geometry.window(0,1)[0] für ein Polygon-Dataset Beispiel 4: Finde den X-Wert des vorherigen Punktes $track.geometry.window(-1,0)[0]["x"] | Beispiel 1: Nach Auswertung bei jedem Feature enthält die Tabelle die folgenden Ergebnisse.
Beispiel 2: Polylinien werden im folgenden Format zurückgegeben: [{"paths":[[[-180,-22.88],[-177.6,-23.6]],[[180,-18.099999999999994],[179.7,-18.4],[179.4,-18.7],[178.9,-18.9],[178.5,-19.3],[178.2,-19.7],[178.4,-20],[178.8,-20.2],[178.9,-21.8],[179,-22.2],[179.4,-22.7],[180,-22.88]],[[-178,-17],[-178.8,-17.3],[-179.2,-17.5],[-179.6,-17.8],[-179.9,-18],[-180,-18.099999999999994]]]}] Beispiel 3: Polygone werden im folgenden Format zurückgegeben: [{"rings":[[[-7882559.1197999995,6376090.883500002],[-7893142.474300001,6042715.216800004],[-8544018.775999999,6045361.0554000065],[-8544018.775999999,6376090.883500002],[-7882559.1197999995,6376090.883500002]]]}] Beispiel 4: Nach Auswertung bei Index 2 (Wert: 20): 1 | ||||||||||||
$track.window(<value1>, <value2>) | Gibt ein Array aus Werten zur Darstellung der Geometrie und allen Attributen für den angegebenen Zeitindex zurück. Die Funktion "window" ermöglicht die Vorwärts- oder Rückwärtsbewegung in der Zeit.
Die Funktion "window" ist in ArcGIS Enterprise 10.6.1 verfügbar. | MyField enthält die sequenziell angeordneten Werte [10, 20, 30, 40, 50] zusätzlich zu den Feldern objectID, globalID und instant_datetime. Die Geometrie der Features lautet [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}] Der Ausdruck wird bei jedem Feature in der Spur ausgewertet. In den zurückgegebenen Ergebnissen ist das Start-Feature enthalten, das End-Feature aber nicht. Beispiel 1:$track.window(-1,0)[0] Beispiel 2:geometry($track.window(-1,0)[0]["x"] | Beispiel 1: Nach Auswertung bei jedem Feature enthält die Tabelle die folgenden Ergebnisse.
Beispiel 2: Nach Auswertung bei Index 2 (Wert: 20): 1 |