W skrzynce narzędziowej GeoAnalytics Tools dostępnych jest wiele narzędzi, które umożliwiają użycie następujących wyrażeń:
- Wyrażenia dotyczące buforów w narzędziu Utwórz bufory
- Wyrażenia dotyczące buforów w narzędziu Rekonstruuj ścieżki
- Warunki połączenia w narzędziu Połącz obiekty
- Warunki zdarzenia w narzędziu Wykryj zdarzenia
Dowiedz się więcej o wyrażeniach w narzędziu Wykryj zdarzenia
- Obliczanie wartości pól w narzędziu Oblicz pole
Narzędzia GeoAnalytics Tools, w których używane są wyrażenia, mają inne zastosowania, a ponadto obowiązują w ich przypadku inne ograniczenia dotyczące możliwości stosowania wyrażeń. W wersji 11.0 wszystkie wyrażenia używane na serwerze ArcGIS GeoAnalytics Server obsługują język Arcade.
Dowiedz się więcej o funkcjach języka Arcade
Wyrażenia w narzędziu Wykryj zdarzenia
Wyrażenia są używane w narzędziu Wykryj zdarzenia do określania warunków początkowych i końcowych zdarzeń. Wynikiem warunku narzędzia Wykryj zdarzenia musi być zawsze wartość prawda (true) lub fałsz (false). Przy użyciu warunku można sprawdzić, czy obiekt powinien zostać dołączony do zdarzenia. Warunki są porównywane z każdym obiektem w celu ustalenia, który z tych obiektów jest zdarzeniem. Obliczenia są wykonywane wtedy, gdy analiza jest przeprowadzana na serwerze ArcGIS GeoAnalytics Server. W poniższych sekcjach znajdują się przykłady wyrażeń.
Przykłady operatorów i funkcji matematycznych
Wyrażenia mogą dokonywać matematycznego przetwarzania liczb. W poniższej tabeli przedstawiono przykłady dostępnych operacji.
Dowiedz się więcej na temat działań matematycznych i funkcji dostępnych w języku Arcade.
Operator | Objaśnienie | Przykład | Wynik |
---|---|---|---|
a + b | a plus b | fieldname zawiera wartość 1,5. $feature["nazwa_pola"] + 2,5 | 4.0 |
a - b | a minus b. | fieldname zawiera wartość 3,3. $feature["fieldname"] - 2.2 | 1,1 |
a * b | a mnożone przez b. | fieldname zawiera wartość 2,0. $feature["nazwa_pola"] * 2,2 | 4,4 |
a / b | a dzielone przez b. | fieldname zawiera wartość 4,0. $feature["nazwa_pola"] / 1,25 | 3,2 |
abs(a) | Zwraca wartość bezwzględną (dodatnią) argumentu a. | fieldname zawiera wartość -1,5. abs($feature["nazwa_pola"]) | 1,5 |
log(a) | Zwraca logarytm naturalny (o podstawie e) argumentu a. | fieldname zawiera wartość 1. log($feature["nazwa_pola"]) | 0 |
sin(a) | Zwraca wartość funkcji trygonometrycznej sinus dla argumentu a. Przyjmuje się, że argument wejściowy jest kątem wyrażonym w radianach. | fieldname zawiera wartość 1,5707. sin($feature["nazwa_pola"]) | 1 |
cos(a) | Zwraca wartość funkcji trygonometrycznej cosinus dla argumentu a. Przyjmuje się, że argument wejściowy jest kątem wyrażonym w radianach. | fieldname zawiera wartość 0. cos($feature["nazwa_pola"]) | 1 |
tan(a) | Zwraca wartość funkcji tangens dla argumentu a. Przyjmuje się, że argument wejściowy jest kątem wyrażonym w radianach. | fieldname zawiera wartość 0. tan($feature["nazwa_pola"]) | 0 |
sqrt(a) | Zwraca pierwiastek kwadratowy z argumentu a. | fieldname zawiera wartość 9. sqrt($feature["nazwa_pola"]) | 3 |
min(a, b) | Zwraca najmniejszą wartość spośród argumentów a i b. | fieldname zawiera wartości 1,5 i wartość -3. min($feature["nazwa_pola"], -3) | -3 |
max(a, b) | Zwraca największą wartość spośród argumentów a i b. | fieldname1 zawiera wartość 1,5, a pole fieldname2 zawiera wartość -3. max($feature["nazwa_pola1"], $feature["nazwa_pola2"]) | 1,5 |
constrain(<value>,<low>,<high>) | Zwraca wartość wejściową, jeśli mieści się ona w podanych granicach. Jeśli wartość wejściowa jest mniejsza niż wartość minimalna, zwracana jest wartość minimalna. Jeśli wartość wejściowa jest większa od wartości maksymalnej, zwracana jest wartość maksymalna. | constrain($feature["distance"], 0, 10) constrain($feature['Store dist'], 6, odległość) | Zwraca wartość 0, jeśli wartość distance jest mniejsza niż 0, wartość 10, jeśli wartość distance jest większa niż 10 oraz wartość distance, gdy nie zachodzi żaden z poprzednich przypadków. Zwraca wartość 6, jeśli wartość Store dist jest mniejsza niż 6, wartość distance, jeśli wartość Store dist jest większa niż distance oraz wartość Store dist, gdy nie zachodzi żaden z poprzednich przypadków. |
Przykład mnożenia w wyrażeniu wykrywającym zdarzenie.
$feature["Distance"] * 2 > 50
Przykłady funkcji tekstowych
Wyrażenia w narzędziu Wykryj zdarzenia mogą przetwarzać tekst. W poniższej tabeli przedstawiono przykłady dostępnych operacji.
Dowiedz się więcej na temat funkcji tekstowych dostępnych w języku Arcade.
Operator | Objaśnienie | Przykład | Wynik |
---|---|---|---|
concatenate(<wartości>, <separator>) | Łączy ze sobą wartości i zwraca ciąg znakowy.
| fieldname zawiera wartość GeoAnalytics. Concatenate ([$features["nazwa_pola"], "jest", "wspaniałe!"], ' ') | Narzędzie GeoAnalytics jest wspaniałe! |
find(<wyszukiwany_tekst>, <tekst>, <poz_startowa>) | Znajduje ciąg znakowy wewnątrz ciągu znakowego. Symbole wieloznaczne nie są obsługiwane.
| fieldname1 zawiera wartość 14NorthStreet, a pole fieldname2 zawiera wartość North. find($feature["nazwa_pola2"], $feature["nazwa_pola1"]) | 2 |
lower(<wartość>) | Zamienia wszystkie litery ciągu znakowego na małe.
| fieldname zawiera wartość GEOANALYTICS. lower($feature["nazwa_pola"]) | analiza geoprzestrzenna |
Przykłady operacji tekstowych używających funkcji find i lower.
find(("north"), lower("146NorthStreet")) == 2
Przykłady funkcji daty
W narzędziu Wykryj zdarzenia można używać wyrażeń z datami. W poniższej tabeli przedstawiono przykłady dostępnych operacji.
Dowiedz się więcej o funkcjach daty dostępnych w języku Arcade
W języku Arcade wartości miesięcy należą do zakresu od 0 (styczeń) do 11 (grudzień), wartości dni do zakresu od 1 do 31, wartości godzin do zakresu od (00:00) do 23 (23:00), wartości minut i sekund do zakresu od 0 do 59, a wartości milisekund do zakresu od 0 do 999. Daty w języku Arcade zwracają wartości czasu w lokalizacji serwera GeoAnalytics Server użytkownika.
Operator | Objaśnienie | Przykład | Wynik |
---|---|---|---|
date(<wartość>, <miesiąc>, <dzień>, <godzina>, <minuta>) | Analizuje wartość lub zbiór wartości, tworząc ciąg znakowy daty.
| fieldname zawiera wartość 1476987783555. Przykład 1: Date($features["fieldname"]) Przykład 2: Date(2017,0,14,0) Przykład 3: Date() | Przykład 1: 20 października 2016 11:23:03 Przykład 2: 14 stycznia 2017 12:00:00 Przykład 3: zwraca bieżący czas |
DateDiff(<data1>, <data2>, <jednostki>) | Odejmuje od siebie dwie daty i zwraca różnicę w podanych jednostkach.
| Przykład 1: DateDiff(Date(2017,1,14,0), Date()) Przykład 2: DateDiff(Date(2017,1,14,0), Date(), "Years") | Wynik zależy od czasu uruchomienia tego polecenia. Przykład 1: -20532129137 Przykład 2: -0.6546783768647119 |
Year(<wartość_daty>) | Zwraca rok podanej daty.
| Przykład 1: pole fieldname jest polem typu Date z wartością 09 Oct 2017 04:30:43 pm. Year($feature["nazwa_pola"]) Przykład 2: pole fieldname jest polem znakowym sformatowanym jako ciąg znakowy ISO 8601 o wartości 2012-09-27. | Przykład 1: 2017 Przykład 2: 2012 |
Operatory warunkowe
W instrukcjach warunkowych można używać następujących operatorów:
Operator | Objaśnienie | Przykład | Wyniki |
---|---|---|---|
a > b a < b | a jest większe niż b a jest mniejsze niż b | 10 > 2 | Fałsz |
a >= b a <= b | a jest większe lub równe b a jest mniejsze lub równe b | abs(-10) >= 10 | Prawda |
a != b | a nie jest równe b | abs(-3) != -3 | Prawda |
a == b | a jest równe b | abs(-5) == 5 | Prawda |
<condition1> || <condition2> | Spełniony jest warunek1 lub warunek2. | (abs(-5) == 5) || (10 < 2) | Prawda |
<condition1> && <condition2> | Spełniony jest zarówno warunek1 jak i warunek2. | (abs(-5) == 5) && (10 < 2) | Fałsz |
Przykłady operatorów logicznych
W narzędziu Wykryj zdarzenia oprócz operatorów warunkowych można używać bardziej zaawansowanych operatorów logicznych.
Dowiedz się więcej o funkcjach logicznych dostępnych w języku Arcade
Funkcja | Objaśnienie | Przykład | Wynik |
---|---|---|---|
iif(<condition>,<true value>,<false value>) | Zwraca jedną wartość, jeśli warunek przyjmuje wartość true, i inną wartość, jeśli warunek przyjmuje wartość false. Wartości <true value> i <false value> mogą być następujące:
| iif($feature["pole1"] > $feature["pole2"], $feature["pole1"], 0) iif($feature["pole1"] > $feature["pole2"], iif($feature["pole2"] = 0, $feature["pole3"], $feature["pole4"]), 0) | Zwraca wartość field1, jeśli wartość field1 jest większa niż wartość field2 i 0 w przeciwnym razie. Zwraca wynik działania drugiej funkcji iif, jeśli wartość field1 jest większa niż wartość field2 i 0 w przeciwnym razie. |
when(<expression1> , <result1> , <expression2> , <result2> , ... , <expressionN> , <resultN>, <default>) | Wylicza wartości serii wyrażeń do chwili, aż jedno z nich będzie miało wartość true.
| when(($feature["pole1"] + 10) > 1, 1,($feature["pole2"] + 10) > 2 , 2, $feature["pole3"]) | Jeśli wartość field1 + 10 jest większa niż 1, zwraca wartość 1. W przeciwnym razie sprawdzane jest, czy wartość field2 + 10 jest większa niż 2. Jeśli tak, zwraca wartość 2. Jeśli nie, zwraca wartość field3. |
decode(<conditional val> , <case1> , <result1>, <case2>, <result2>, ... <caseN>, <resultN>, <defaultValue> ) | Funkcja decode wylicza wartość wyrażenia, a następnie porównuje ją z kolejnymi parametrami. W przypadku zgodności zwracana jest wartość następnego parametru. Przy braku zgodności istnieje opcja ustawienia ostatniego parametru jako wartości zwracanej domyślnie.
| decode($feature["pole1"] + 3 , $feature["pole1"], 1, $feature["pole2"], 2, 0) | Sprawdza równość wartości warunkowej (conditional val) field1 + 3 i pierwszego przypadku (case1) równego field1. Jeśli wynikiem jest true, zwraca wartość 1. Jeśli wynikiem jest false, sprawdza równość wartości field1 + 3 i wartości field2. Jeśli wynikiem jest true, zwraca wartość 2. W przeciwnym razie zwraca wartość 0. |
Przykłady z danymi o ścieżkach
Dodatkowo w niektórych narzędziach GeoAnalytics Tools, takich jak Wykryj zdarzenia i Oblicz pole, można używać równań z danymi o ścieżkach w języku Arcade.
Funkcja | Objaśnienie | Przykład | Wynik | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
TrackStartTime() | Wylicza czas rozpoczęcia ścieżki w milisekundach od czasu epoki. | Używa ścieżki rozpoczynającej się 2 stycznia 2017 roku. TrackStartTime() | 1483315200000 | ||||||||||||
TrackDuration() | Wylicza czas trwania ścieżki w milisekundach od początku do bieżącego etapu czasowego. | Używa ścieżki rozpoczynającej się 2 stycznia 2017 roku, a bieżący czas to 4 stycznia 2017 roku. TrackDuration() | 172800000 | ||||||||||||
TrackCurrentTime() | Wylicza bieżący czas w ścieżce. | Używa obiektu, który się wydarzył 3 stycznia 2017 roku o godzinie 9:00. TrackCurrentTime() | 1483434000000 | ||||||||||||
TrackIndex | Zwraca indeks czasu wyliczanego obiektu. | Wylicza tę wartość dla pierwszego obiektu w ścieżce. TrackIndex | 0 | ||||||||||||
TrackFieldWindow(<nazwa_pola>, <indeks_początkowy>, <indeks_końcowy>) | Zwraca tablicę wartości w określonym polu dla określonego indeksu czasu. Funkcja window pozwala przechodzić do przodu i do tyłu w czasie. Wyrażenie jest wyliczane dla każdego obiektu na ścieżce.
| MyField zawiera uporządkowane sekwencyjnie wartości [10, 20, 30, 40, 50]. Wyrażenie jest wyliczane dla każdego obiektu na ścieżce. Wyniki są zwracane włącznie z obiektem początkowym i z wyłączeniem obiektu końcowego. Przykład 1: TrackFieldWindow("MojePole,-1,2) Przykład 2: TrackFieldWindow("MojePole,-2,0)[0] Przykład 3: TrackFieldWindow("MojePole,0,3)[2] | Przykład 1: Przy wyliczaniu dla każdego obiektu tabela przedstawia następujące wyniki:
Przykład 2: Przy wyliczaniu z indeksem 2 (wartość wynosi 30) zwraca 10. Przykład 3: Przy wyliczaniu z indeksem 2 (wartość wynosi 30) zwraca: 50. | ||||||||||||
TrackGeometryWindow(<indeks_początkowy>, <indeks_końcowy>) | Zwraca tablicę wartości reprezentującą geometrię dla podanego indeksu czasu. Funkcja window pozwala przechodzić do przodu i do tyłu w czasie. Wyrażenie jest wyliczane dla każdego obiektu na ścieżce.
| MyField zawiera uporządkowane sekwencyjnie wartości [10, 20, 30, 40, 50]. Geometria obiektów jest następująca: [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}]. Wyrażenie jest wyliczane dla każdego obiektu na ścieżce. Wyniki są zwracane włącznie z obiektem początkowym i z wyłączeniem obiektu końcowego. Przykład 1: TrackGeometryWindow(-1,2) Przykład 2: TrackGeometryWindow(0,1)[0] na zestawie danych polilinii Przykład 3: TrackGeometryWindow(0,1)[0] na zestawie danych poligonowych Przykład 4: Znajdź wartość X poprzedniego punktu TrackGeometryWindow(-1,0)[0]["x"] | Przykład 1: Przy wyliczaniu dla każdego obiektu tabela przedstawia następujące wyniki:
Przykład 2: Polilinie są zwracane w następującym formacie: [{"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]]]}] Przykład 3: Poligony są zwracane w następującym formacie: [{"rings":[[[-7882559.1197999995,6376090.883500002],[-7893142.474300001,6042715.216800004],[-8544018.775999999,6045361.0554000065],[-8544018.775999999,6376090.883500002],[-7882559.1197999995,6376090.883500002]]]}] Przykład 4: Przy wyliczaniu z indeksem 2 (wartość wynosi 30): 2 | ||||||||||||
TrackWindow(<wartość1>, <wartość2>) | Zwraca tablicę wartości reprezentującą geometrię i wszystkie atrybuty dla podanego indeksu czasu. Funkcja window pozwala przechodzić do przodu i do tyłu w czasie.
| MyField zawiera uporządkowane sekwencyjnie wartości [10, 20, 30, 40, 50], oprócz pól objectID, globalID oraz instant_datetime. Geometria obiektów jest następująca: [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}]. Wyrażenie jest wyliczane dla każdego obiektu na ścieżce. Wyniki są zwracane włącznie z obiektem początkowym i z wyłączeniem obiektu końcowego. Przykład 1: TrackWindow(-1,0)[0] Przykład 2: geometry(TrackWindow(-1,0)[0]["x"] | Przykład 1: Przy wyliczaniu dla każdego obiektu tabela przedstawia następujące wyniki:
Przykład 2: Przy wyliczaniu z indeksem 2 (wartość wynosi 30): 2 |
Następujące wyrażenia ścieżek umożliwiają obliczanie odległości, prędkości i przyspieszenia w ścieżkach.
Wszystkie odległości są obliczane w metrach, prędkość w metrach na sekundę, a przyspieszenie – w metrach na sekundę kwadrat. Odległości są mierzone jako wartości geodezyjne.
Funkcja | Objaśnienie |
---|---|
TrackCurrentDistance() | Suma odległości pokonanych między obserwacjami (od pierwszej do aktualnej obserwacji). |
TrackDistanceAt(wartość) | Suma odległości pokonanych między obserwacjami (od pierwszej do aktualnej obserwacji) powiększona o daną wartość. |
TrackDistanceWindow(wartość1, wartość2) | Odległość między wartością pierwszą (włącznie) i wartością ostatnią (nie jest uwzględniana) w oknie aktualnej obserwacji (0). |
TrackCurrentSpeed() | Prędkość między poprzednią obserwacją i aktualną obserwacją. |
TrackSpeedAt(wartość1) | Prędkość dla obserwacji względem aktualnej obserwacji. Na przykład wartość 2 oznacza prędkość dla obserwacji występującej dwie obserwacje po obserwacji aktualnej. |
TrackSpeedWindow(wartość1, wartość2) | Wartości prędkości między wartością pierwszą (włącznie) i wartością ostatnią (nie jest uwzględniana) w oknie aktualnej obserwacji (0). |
TrackCurrentAcceleration() | Przyspieszenie między poprzednią obserwacją i aktualną obserwacją. |
TrackAccelerationAt(wartość1) | Przyspieszenie dla obserwacji względem aktualnej obserwacji. |
TrackAccelerationWindow(wartość1, wartość2) | Wartości przyspieszenia między wartością pierwszą (włącznie) i wartością ostatnią (nie jest uwzględniana) w oknie aktualnej obserwacji (0). |
W przykładowych obliczeniach odległości, prędkości i przyspieszenia będą używane przykłady z następującego obrazu.
Funkcja | Przykładowy wynik | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
TrackCurrentDistance() |
| ||||||||||||||
TrackDistanceAt(2) |
| ||||||||||||||
TrackDistanceWindow(-1, 2) |
| ||||||||||||||
TrackCurrentSpeed() |
| ||||||||||||||
TrackSpeedAt(2) |
| ||||||||||||||
TrackSpeedWindow(-1, 2) |
| ||||||||||||||
TrackCurrentAcceleration() |
| ||||||||||||||
TrackAccelerationAt(2) |
| ||||||||||||||
TrackAccelerationWindow(-1, 2) |
|