Skip To Content

Verwenden von Pufferausdrücken mit GeoAnalytics Tools

Die Toolbox GeoAnalytics Tools enthält die folgenden Werkzeuge, mit denen Sie einen Ausdruck anwenden können:

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 ArcGIS 10.6 wird Arcade von allen in GeoAnalytics verwendeten Ausdrücken unterstützt.

Weitere Informationen zu Arcade-Funktionen

"Tracks rekonstruieren" und "Puffer erstellen"

Pufferausdrücke werden von den Werkzeugen Tracks rekonstruieren und Puffer erstellen verwendet.

Puffergrößen werden üblicherweise mit konstanten oder Feldwerten angegeben. Das Eingeben von Werten stellt jedoch nicht die einzige Möglichkeit dar, die Größe eines Puffers mit GeoAnalytics Tools anzugeben. In manchen Situationen möchten Sie möglicherweise eine mathematische Berechnung durchführen, um die Puffergröße festzulegen. Die Berechnung wird auf jedes analysierte Feature angewendet. Berechnungen werden vorgenommen, wenn Sie die Analyse auf dem ArcGIS GeoAnalytics Server durchführen.

Die folgenden Abschnitte enthalten Beispiele für die Verwendung von Pufferausdrücken.

Beispiele für mathematische Operatoren und Funktionen

Mit Pufferausdrü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

OperatorErläuterungBeispielErgebnis

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 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 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 einen Pufferausdruck

$feature["Distance"] * 2

As-Entfernungsfunktion – Beispiele

Mit den as distance-Funktionen werden numerische Werte in lineare Entfernungen umgewandelt, die anschließend in einem mathematischen Ausdruck verwendet werden können. Die Werkzeuge Tracks rekonstruieren und Puffer erstellen können as distance-Funktionen verwenden. Bei Verwendung eines numerischen Wertes ohne as distance-Funktion wird Meter als Einheit vorausgesetzt.

FunktionErläuterungBeispielErgebnis

as_meters( <Wert> )

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( <Wert> )

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( <Wert> )

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( <Wert> )

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( <Wert> )

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( <Wert> )

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.

Multiplizieren Sie für jedes Feature das Feld Distance unter der Annahme, dass es in Kilometer vorliegt, und addieren Sie 10 Meter.

as_kilometers($feature["Distance"]) * 3 + as_meters(10)

Konditionale Operatoren

Konditionale Anweisungen können für die folgenden Operatoren verwendet werden:

OperatorErklärungBeispielErgebnisse

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

Beispiel für einen Pufferausdruck unter Verwendung erweiterter Funktionen und Bedingungen

iff(field1 > field2, iff(field2 = 0, field3, field4), 0)

Multiplikationsbeispiel für den Pufferausdruck einer Verbindung

iff(field1 > field2, iff(field2 = 0, field3, field4), 0) > $join["Distance"] * 2

Beispiele für logische Operatoren

Zusätzlich zu konditionalen Operatoren können zum Erstellen von Puffern auch erweiterte logische Operatoren verwendet werden, wie in der folgenden Tabelle dargestellt.

Weitere Informationen zu den in Arcade verfügbaren logischen Funktionen

FunktionErklärungBeispielErgebnis

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:

  • Ein numerisches Feld. Verwenden Sie eckige Klammern, wenn der Feldname ein Leerzeichen enthält.
  • Eine Zahl.
  • Eine Funktion.

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.

  • expression: Ein Ausdruck.
  • result: Das Ergebnis des Ausdrucks. Dabei kann es sich um eine Zahl oder ein Feld handeln.
  • default: Ein optionaler Wert, wenn keiner der Ausdrücke übereinstimmt.

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.

  • conditional val: Der bedingte Wert. Dabei kann es sich um ein Feld oder einen Ausdruck handeln.
  • case: Ein Wert, der mit conditional val verglichen werden soll.
  • result: Das Ergebnis, wenn der entsprechende Fall mit conditional val übereinstimmt.
  • defaultValue: Ein optionaler Wert, wenn kein anderer Wert true ist.

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.

Tracking-bezogene Beispiele

Tracks rekonstruieren kann Tracking-bezogene Gleichungen in Arcade verwenden, wie in der folgenden Tabelle dargestellt:

FunktionErläuterungBeispielErgebnis

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.

  • Das aktuelle Feature befindet sich bei Index 0.
  • Positive Werte repräsentieren Features, die in der Zukunft nach dem aktuellen Wert auftreten. Zum Beispiel ist Position 1 der nächste Wert im Array.
  • Negative Zahlen repräsentieren Features, die in der Vergangenheit vor dem vorherigen Feature auftreten. Zum Beispiel ist -1 der vorherige Wert im Array.

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:

Ausgewertetes Feature

Ergebnis

10

[10,20]

20

[10, 20, 30]

30

[20,30,40]

40

[30,40,50]

50

[40, 50]

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.

  • Das aktuelle Feature befindet sich bei Index 0.
  • Positive Werte repräsentieren Features, die in der Zukunft nach dem aktuellen Wert auftreten. Zum Beispiel ist Position 1 der nächste Wert im Array.
  • Negative Zahlen repräsentieren Features, die in der Vergangenheit vor dem vorherigen Feature auftreten. Zum Beispiel ist -1 der vorherige Wert im Array.

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:

Ausgewertetes Feature

Ergebnis

10

[{x: 1, y: 1},{x: 2, y: 2}]

20

[{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null}]

30

[{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}]

40

[{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}]

50

[{x: 4, y: 4}, {x: 5, y: 5}]

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.

  • Das aktuelle Feature befindet sich bei Index 0.
  • Positive Werte repräsentieren Features, die in der Zukunft nach dem aktuellen Wert auftreten. Zum Beispiel ist Position 1 der nächste Wert im Array.
  • Negative Zahlen repräsentieren Features, die in der Vergangenheit vor dem vorherigen Feature auftreten. Zum Beispiel ist -1 der vorherige Wert im Array.

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:

Ausgewertetes Feature

Ergebnis

10

20

[{"geometry": {x: 1, y: 1}},{"attributes": {"MyField" : 10, "trackName":"ExampleTrack1"}}]

30

[{"geometry": {x: 2, y: 2}},{"attributes": {"MyField" : 20, "trackName":"ExampleTrack1"}}]

40

[{"geometry": {x: null, y: null}},{"attributes": {"MyField" : 30, "trackName":"ExampleTrack1"}}]

50

[{"geometry": {x: 4, y: 4}},{"attributes": {"MyField" : 40, "trackName":"ExampleTrack1"}}]

Beispiel 2: Nach Auswertung bei Index 2 (Wert: 30): 2

Mit den folgenden Track-Ausdrücken können Sie Entfernung, Geschwindigkeit und Beschleunigung bei Tracks berechnen.

Entfernungsberechnungen werden in Metern, Geschwindigkeiten in Metern pro Sekunde und Beschleunigungen in Meter pro Sekundenquadrat angegeben. Entfernungen werden mit geodätischen Entfernungen gemessen.

FunktionErlä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 (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 (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 (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:

Abbildung: Beispiel für einen Track mit sechs Punkten

FunktionBeispielergebnis

TrackCurrentDistance()

Punkt-IDErgebnis (Meter)

P1

0

P2

60

P3

80 + 60 = 140

P4

30 + 80 + 60 = 170

P5

35 + 30 + 80 + 60 = 205

P6

25 + 35 + 30 + 80 + 60 = 230

TrackDistanceAt(2)

Punkt-IDErgebnis (Meter)

P1

0 + 80 + 60 = 140

P2

30 + 80 + 60 = 170

P3

35 + 30 + 80 + 60 = 205

P4

25 + 35 + 30 + 80 + 60 = 230

P5

null

P6

null

TrackDistanceWindow(-1, 2)

Punkt-IDErgebnis (Meter)

P1

[0,60]

P2

[0, 60, 140]

P3

[60, 140, 170]

P4

[140, 170, 205]

P5

[170, 205, 230]

P6

[205, 230]

TrackCurrentSpeed()

Punkt-IDErgebnis (Meter/Sekunde)

P1

0

P2

60/60

1

P3

80/60

1.33

P4

30/60

0,5

P5

35/60

0.5833

P6

25/60

0.4167

TrackSpeedAt(2)

Punkt-IDErgebnis (Meter/Sekunde)

P1

80/60

1.33

P2

30/60

0,5

P3

35/60

0.5833

P4

25/60

0.4167

P5

null

P6

null

TrackSpeedWindow(-1, 2)

Punkt-IDErgebnis (Meter/Sekunde)

P1

[0, 1]

P2

[0, 1, 1,3]

P3

[1, 1,3, 0,5]

P4

[1,3, 0,5, 0,583]

P5

[0,5, 0,583, -0,4167]

P6

[0,583, -0,4167]

TrackCurrentAcceleration()

Punkt-IDErgebnis (Meter/Sekunde²)

P1

0

P2

0.0167

P3

0.0056

P4

-0.0014

P5

0.0014

P6

-0.0028

TrackAccelerationAt(2)

Punkt-IDErgebnis (Meter/Sekunde²)

P1

0.0056

P2

-0.0014

P3

0.0014

P4

-0.0028

P5

null

P6

null

TrackAccelerationWindow(-1, 2)

Punkt-IDErgebnis (Meter/Sekunde²)

P1

[0, 0,0167]

P2

[0, 0,0167, 0,0056 ]

P3

[0,0167, 0,0056, -0,0014]

P4

[0,0056, -0,0014, 0,0014]

P5

[-0,0014, 0,0014, -0,0028]

P6

[0,0014, -0,0028]