Das Eingeben von Werten oder die Verwendung eines Feldes stellen nicht die einzigen Möglichkeiten dar, die Größe eines Puffers mit GeoAnalytics Tools festzulegen. In manchen Situationen können Sie eine mathematische Berechnung durchführen, um die Puffergröße festzulegen. Sie können einfache und erweiterte Berechnungen durchführen, die sich auf alle Datensätze anwenden lassen. Die Berechnung wird auf jedes Feature angewendet. Die Abschnitte unten enthalten Beispiele für die Verwendung eines Pufferausdrucks. Die Berechnungen erfolgen, wenn die Analyse in ArcGIS GeoAnalytics Server ausgeführt wird.
In ArcGIS Enterprise 10.6 und höher werden Ausdrücke mit Arcade formatiert. In Arcade werden Feldnamen als $feature["field name"] oder $feature.fieldname formatiert. Die erste Option, $feature["field name"], ist erforderlich, wenn ein Feldname ein Leerzeichen enthält. Diese Option wird in allen folgenden Beispielen verwendet. Für GeoAnalytics Server unter Enterprise 10.5 oder 10.5.1 werden keine Arcade-Ausdrücke verwendet.
Weitere Informationen zu Pufferausdrücken, die in Version 10.5 und 10.5.1 unterstützt werden.
Weitere Informationen zu Arcade-Ausdrücken
Pufferausdrücke werden von den Werkzeugen Tracks rekonstruieren und Puffer erstellen verwendet.
Die folgenden Werkzeuge verwenden Arcade-Ausdrücke in GeoAnalytics Server unter Enterprise 10.6 und höher:
- Tracks rekonstruieren: Pufferausdrücke
- Puffer erstellen: Pufferausdrücke
- Features verbinden: Verbindungsausdrücke
- Feld berechnen: Berechnen von Feldwerten
- Ereignisse ermitteln: Ermitteln von Ereignissen über Start- und Endausdrücke
Vorversion:
Die Erweiterung ArcGIS GeoAnalytics Server wird in ArcGIS Enterprise abgekündigt. Die letzte Version von GeoAnalytics Server ist in ArcGIS Enterprise 11.3 enthalten. Diese Werkzeuge stehen in ArcGIS Enterprise 11.3 und früheren Versionen zur Verfügung.
Beispiele für mathematische Operatoren und Funktionen
Mit Pufferausdrücken können Zahlen mathematisch verarbeitet werden. In der folgenden Tabelle werden Beispiele für verfügbare Operationen gezeigt.
Weitere Informationen zu den mathematischen Operationen und Funktionen in Arcade
Operator | Erläuterung | Beispiel |
---|---|---|
a + b | Gibt die Summe von a plus b zurück. | fieldname enthält den Wert 1,5 $feature["fieldname"] + 2.5 4,0 |
a - b | Gibt die Differenz von a minus b zurück. | fieldname enthält den Wert 3,3 $feature["fieldname"]- 2.2 1,1 |
a * b | Gibt das Produkt von a mal b zurück. | fieldname enthält den Wert 2,0 $feature["fieldname"] * 2.2 4,4 |
a / b | Gibt den Quotienten von a dividiert durch b zurück. | 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 Radiant 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 und 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 Wert kleiner als der niedrige Wert ist, wird der niedrige Wert zurückgegeben. Wenn der Wert größer als der hohe Wert ist, wird der hohe Wert zurückgegeben. | Beispiel 1: constrain( $feature["distance"], 0, 10) Gibt 0 zurück, wenn distance kleiner als 0 ist, 10, wenn distance größer als 10 ist, und ansonsten distance. Beispiel 2: constrain($feature['Store dist'], 6, 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. |
Multiplikation
$feature["Distance"] * 2
Beispiele für logische Operatoren
Neben einfachen mathematischen Ausdrücken können auch erweiterte Funktionen für die Anwendung von Pufferausdrücken verwendet werden, welche in der nachfolgenden Tabelle aufgeführt sind.
Funktion | Erläuterung | Beispiel | Ergebnis |
---|---|---|---|
iif(<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:
| iif($feature["field1"] > $feature["field2"], $feature["field1"], 0) iif($feature["field1"] > $feature["field2"], iif($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 iif-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> ) | 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 konditionalen Wert 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. |
As-Entfernungsfunktion – Beispiele
Mit Pufferausdrücken können numerische Werte in lineare Entfernungen umgewandelt werden, wie in der nachfolgenden Tabelle dargestellt.
Funktion | Erläuterung | Beispiel | Ergebnis |
---|---|---|---|
as_meters(<value>) | Wendet eine Berechnung unter der Annahme an, dass Eingabewerte in Meter vorliegen. | as_meters( $feature["fieldname"] ) as_meters(150) | Ergebnisse werden bei 150 m gepuffert. |
as_kilometers(<value>) | Wendet eine Berechnung unter der Annahme an, dass Eingabewerte in Kilometer vorliegen. | as_kilometers( $feature["fieldname"] ) as_kilometers(150) | Ergebnisse werden bei 150 km gepuffert. |
as_feet(<value>) | Wendet eine Berechnung unter der Annahme an, dass Eingabewerte in Fuß vorliegen. | as_feet( $feature["fieldname"] ) as_feet(150) | Ergebnisse werden bei 150 ft. gepuffert. |
as_yards(<value>) | Wendet eine Berechnung unter der Annahme an, dass Eingabewerte in Yard vorliegen. | as_yards( $feature["fieldname"] ) as_yards(150) | Ergebnisse werden bei 150 yd. gepuffert. |
as_nautical_miles(<value>) | Wendet eine Berechnung unter der Annahme an, dass Eingabewerte in Seemeilen vorliegen. | as_nautical_miles( $feature["fieldname"] ) as_nautical_miles(150) | Ergebnisse werden bei 150 sm gepuffert. |
as_miles(<value>) | Wendet eine Berechnung unter der Annahme an, dass Eingabewerte in Meilen vorliegen. | as_miles( $feature["fieldname"] ) as_miles(150) | Ergebnisse werden bei 150 Meilen gepuffert. |
Konditionale Operatoren
Konditionale Anweisungen können für die folgenden Operatoren verwendet werden:
Operator | Erläuterung | Beispiel | Ergebnisse |
---|---|---|---|
a > b a < b | a ist größer als b a ist kleiner als b | 10 > 2 | Falsch |
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 |
<condition1> || <condition2> | Bedingung 1 oder Bedingung 2 ist erfüllt. | (abs(-5) == 5) || (10 < 2) | True |
<condition1> && <condition2> | Bedingung 1 und Bedingung 2 sind erfüllt. | (abs(-5) == 5) && (10 < 2) | Falsch |
Tracking-bezogene Beispiele
Ab ArcGIS Enterprise 10.6.1 können Sie Tracking-bezogene Gleichungen in Arcade mit dem Werkzeug Tracks rekonstruieren verwenden, wie in der nachfolgenden Tabelle dargestellt.
Funktion | Erläuterung | Beispiel | Ergebnis | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
TrackStartTime() | Berechnet die Startzeit einer Spur in Millisekunden von der Unixzeit. | Verwendet wird ein Track, der am 2. Januar 2017 startet. TrackStartTime() | 1483315200000 | ||||||||||||
TrackDuration() | 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. TrackDuration() | 172800000 | ||||||||||||
TrackCurrentTime() | Berechnet die aktuelle Uhrzeit in einer Spur. | Verwendet wird ein Feature, das am 3. Januar 2017 um 9:00 Uhr auftritt. TrackCurrentTime() | 1483434000000 | ||||||||||||
TrackIndex | Gibt den Zeitindex des berechneten Features zurück. | Die Berechnung dieses Wertes für das erste Feature in einer Spur. TrackIndex | 0 | ||||||||||||
TrackFieldWindow(<fieldName>, <startIndex>, <endIndex>) | 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 im Track ausgewertet.
| MyField enthält die sequenziell angeordneten Werte [10, 20, 30, 40, 50]. Der Ausdruck wird bei jedem Feature im Track ausgewertet. In den zurückgegebenen Ergebnissen ist das Start-Feature enthalten, das End-Feature aber nicht. Beispiel 1: TrackFieldWindow("MyField,-1,2) Beispiel 2: TrackFieldWindow("MyField,-2,0)[0] Beispiel 3: TrackFieldWindow("MyField,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. | ||||||||||||
TrackGeometryWindow(<startIndex>, <endIndex>) | 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 im Track ausgewertet.
| 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 im Track ausgewertet. In den zurückgegebenen Ergebnissen ist das Start-Feature enthalten, das End-Feature aber nicht. Beispiel 1: TrackGeometryWindow(-1,2) Beispiel 2: TrackGeometryWindow(0,1)[0] für ein Polylinien-Dataset Beispiel 3: TrackGeometryWindow(0,1)[0] für ein Polygon-Dataset Beispiel 4: Finde den X-Wert des vorherigen Punktes TrackGeometryWindow(-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: 30): 2 | ||||||||||||
TrackWindow(<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.
| 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 im Track ausgewertet. In den zurückgegebenen Ergebnissen ist das Start-Feature enthalten, das End-Feature aber nicht. Beispiel 1: TrackWindow(-1,0)[0] Beispiel 2: geometry(TrackWindow(-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: 30): 2 |
Verwenden Sie die folgenden Tracking-Ausdrücke, um in ArcGIS Enterprise 10.9 oder höher Entfernung, Geschwindigkeit und Beschleunigung für Tracks zu berechnen.
Entfernungsberechnungen werden in Metern, Geschwindigkeiten in Metern pro Sekunde und Beschleunigungen in Meter pro Sekundenquadrat angegeben. Entfernungen werden mit geodätischen Entfernungen gemessen.
Funktion | Erläuterung |
---|---|
TrackCurrentDistance() | Die Summe der zwischen den Beobachtungen zurückgelegten Entfernungen, von der ersten bis zur aktuellen Beobachtung. |
TrackDistanceAt(value) | Die Summe der zwischen den Beobachtungen zurückgelegten Entfernungen, von der ersten bis zur aktuellen Beobachtung zuzüglich des gegebenen Werts. |
TrackDistanceWindow(value1, value2) | Die Entfernungen zwischen dem ersten Wert (einschließlich) und dem letzten Wert (ausschließlich) in einem Fenster nahe der aktuellen Beobachtung (0). |
TrackCurrentSpeed() | Die Geschwindigkeit zwischen der vorherigen und der aktuellen Beobachtung. |
TrackSpeedAt(value1) | Die Geschwindigkeit bei der Beobachtung im Verhältnis zur aktuellen Beobachtung. Beispiel: Beim Wert 2 handelt es sich um die Geschwindigkeit bei der Beobachtung, die sich zwei Beobachtungen hinter der aktuellen Beobachtung befindet. |
TrackSpeedWindow(value1, value2) | Die Geschwindigkeitswerte zwischen dem ersten Wert (einschließlich) und dem letzten Wert (ausschließlich) in einem Fenster nahe der aktuellen Beobachtung (0). |
TrackCurrentAcceleration() | Die Beschleunigung zwischen der vorherigen und der aktuellen Beobachtung. |
TrackAccelerationAt(value1) | Die Beschleunigung bei der Beobachtung im Verhältnis zur aktuellen Beobachtung. |
TrackAccelerationWindow(value1, value2) | Die Beschleunigungswerte zwischen dem ersten Wert (einschließlich) und dem letzten Wert (ausschließlich) in einem Fenster nahe der aktuellen Beobachtung (0). |
Die für die Berechnungen von Entfernung, Geschwindigkeit und Beschleunigung verwendeten Beispiele stammen aus der folgenden Abbildung.
Funktion | Beispielergebnis | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
TrackCurrentDistance() |
| ||||||||||||||
TrackDistanceAt(2) |
| ||||||||||||||
TrackDistanceWindow(-1, 2) |
| ||||||||||||||
TrackCurrentSpeed() |
| ||||||||||||||
TrackSpeedAt(2) |
| ||||||||||||||
TrackSpeedWindow(-1, 2) |
| ||||||||||||||
TrackCurrentAcceleration() |
| ||||||||||||||
TrackAccelerationAt(2) |
| ||||||||||||||
TrackAccelerationWindow(-1, 2) |
|