Skip To Content

Używanie wyrażeń w języku Arcade z narzędziem Oblicz pole

W skrzynce narzędziowej Narzędzia analiz geoprzestrzennych dostępnych jest wiele narzędzi, które umożliwiają użycie wyrażeń.

Narzędzia Narzędzia analiz geoprzestrzennych, 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 10.6 wszystkie wyrażenia używane na serwerze GeoAnalytics Server obsługują język Arcade.

Dowiedz się więcej o funkcjach języka Arcade

Wyrażenia w narzędziu Oblicz pole

Wyrażenia są używane w narzędziu Oblicz pole do obliczania wartości w polu. Używając wyrażeń, można ustalić sposób wypełniania poszczególnych obiektów. Wyrażenie stosowane w narzędziu Oblicz pole powinno zwracać wartość tego samego typu, co wartość pola. Przykłady wyrażeń znajdują się w poniższych sekcjach.

Przykłady operatorów i funkcji matematycznych

Wyrażenia mogą matematycznie przetwarzać liczby. Następująca tabela pokazuje przykłady dostępnych działań.

Dowiedz się więcej na temat działań matematycznych i funkcji dostępnych w języku Arcade.

OperatorObjaśnieniePrzykładWynik

a + b

a plus b

Pole fieldname zawiera wartość 1.5

$feature["nazwa_pola"] + 2,5

4,0

a - b

a minus b.

Pole fieldname zawiera wartość 3.3

$feature["fieldname"] - 2.2

1,1

a * b

a mnożone przez b.

Pole fieldname zawiera wartość 2.0

$feature["nazwa_pola"] * 2,2

4,4

a / b

a dzielone przez b.

Pole fieldname zawiera wartość 4.0

$feature["nazwa_pola"] / 1,25

3,2

abs(a)

Zwraca wartość bezwzględną (dodatnią) argumentu a.

Pole fieldname zawiera wartość -1.5

abs($feature["nazwa_pola"])

1,5

log(a)

Zwraca logarytm naturalny (o podstawie e) argumentu a.

Pole 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.

Pole 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.

Pole fieldname zawiera wartość 0

cos($feature["nazwa_pola"])

1

tan(a)

Zwraca wartość funkcji trygonometrycznej tangens dla argumentu a. Przyjmuje się, że argument wejściowy jest kątem wyrażonym w radianach.

Pole fieldname zawiera wartość 0

tan($feature["nazwa_pola"])

0

sqrt(a)

Zwraca pierwiastek kwadratowy z argumentu a.

Pole fieldname zawiera wartość 9

sqrt($feature["nazwa_pola"])

3

min(a, b)

Zwraca najmniejszą wartość spośród argumentów a i b.

Pole fieldname zawiera wartości 1.5, a drugą wartością jest -3

min($feature["nazwa_pola"], -3)

-3

max(a, b)

Zwraca największą wartość spośród argumentów a i b.

Pole 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 obliczeniach wartości pola.

$feature["Distance"] * 2

Przykłady funkcji tekstowych

Wyrażenia Oblicz pole mogą przetwarzać tekst. Następująca tabela pokazuje przykłady dostępnych działań.

Dowiedz się więcej na temat funkcji tekstowych dostępnych w języku Arcade.

OperatorObjaśnieniePrzykładWynik

concatenate(<wartości>, <separator>)

Łączy ze sobą wartości i zwraca ciąg znakowy.

  • values — tablica wartości ciągów znakowych do połączenia.
  • separator (opcjonalne) — separator używany przy łączeniu, jeśli parametr values jest tablicą, lub ciąg znakowy do połączenia, jeśli pierwszym parametrem jest pojedyncza wartość. Jeśli nie zostanie podany, będzie pusty.

Pole fieldname zawiera wartość GeoAnalytics

Concatenate ([$features["fieldname"], "is", "great!"], ' ')

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.

  • searchText — wyszukiwany podciąg znakowy.
  • text — tekst do przeszukania.
  • startPos (opcjonalne) — indeksowana od zera pozycja w ciągu znakowym, od której ma zostać rozpoczęte wyszukiwanie.

Pole 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.

  • value — ciąg znakowy, który ma zostać zapisany małymi literami.

Pole 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"))

Przykłady funkcji daty

Wyrażenia Oblicz pole mogą przetwarzać daty. Następująca tabela pokazuje przykłady dostępnych działań.

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 od1 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 GeoAnalytics Server użytkownika.

OperatorObjaśnieniePrzykładWynik

date(<wartość>, <miesiąc>, <dzień>, <godzina>, <minuta>)

Analizuje wartość lub zbiór wartości, tworząc ciąg znakowy daty.

  • value(opcjonalne) — liczba milisekund od 1 stycznia 1970 roku czasu UTC lub liczba reprezentująca rok. Jeśli rok został określony, w kolejnych parametrach należy także określić miesiąc i dzień. Ta wartość może być także ciągiem znakowym daty lub ciągiem znakowym ISO 8601, który ma zostać przekształcony na datę.
  • month (opcjonalne) — miesiąc (0–11), gdzie 0 oznacza styczeń, a 11 oznacza grudzień.
  • day (opcjonalne) — dzień miesiąca (1–31).
  • hour (opcjonalne) — godzina dnia (0–23).
  • minute (opcjonalne) — minuta w godzinie (0–59).
  • second (opcjonalne) — sekunda w minucie (0–59).
  • millisecond (opcjonalne) — milisekunda w sekundzie (0–999).

Pole 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.

  • date1 — wartość daty, od której ma zostać odjęta druga data.
  • date2 — wartość daty, która ma zostać odjęta od pierwszej podanej daty.
  • startpos (opcjonalne) — jednostki, w których zostanie zwrócona różnica dwóch podanych dat. Obsługiwane typy jednostek to milliseconds, seconds, minutes, hours, days, months, years. Wartość domyślna to milisekundy.

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.

  • value — wartość daty, z której ma zostać pobrany rok.

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:

OperatorObjaśnieniePrzykładWyniki

a > b

a < b

a jest większe niż b

a jest mniejsze niż b

10 > 2

False

a >= b

a <= b

a jest większe lub równe b

a jest mniejsze lub równe b

abs(-10) >= 10

True

a != b

a nie jest równe b

abs(-3) != -3

True

a == b

a jest równe b

abs(-5) == 5

True

<warunek1> || <warunek2>

Spełniony jest warunek1 lub warunek2.

(abs(-5) == 5) || (10 < 2)

True

<warunek1> && <warunek2>

Spełniony jest zarówno warunek1 jak i warunek2.

(abs(-5) == 5) && (10 < 2)

False

Przykłady operatorów logicznych

Podczas obliczania wartości pól 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

FunkcjaObjaśnieniePrzykładWynik

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:

  • Pole liczbowe. Jeśli w nazwie pola występuje spacja, należy użyć nawiasów kwadratowych.
  • Liczba.
  • Funkcja.

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.

  • expression — wyrażenie.
  • result — może być liczbą lub polem.
  • default — wartość opcjonalna, jeśli żadne z wyrażeń nie będzie miało odpowiedniej wartości.

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.

  • conditional val — może być polem lub wyrażeniem.
  • case — wartość, która ma zostać porównana z wartością conditional val.
  • result — wynik, jeśli odpowiedni przypadek jest zgodny z wartością conditional val.
  • defaultValue — opcjonalna wartość używana, gdy żadna inna wartość nie jest równa true.

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 Narzędzia analiz geoprzestrzennych, takich jak Wykryj zdarzenia i Oblicz pole, można używać równań z danymi o ścieżkach w języku Arcade. W narzędziu Oblicz pole równania ze ścieżkami mogą być używane, gdy w warstwie wejściowej znajdują się dane czasowe, jest włączona opcja Wyrażenie zawiera dane o ścieżkach i jedno lub większa liczba pól służy do identyfikowania ścieżek.

FunkcjaObjaśnieniePrzykładWynik

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.

  • Bieżący obiekt jest z indeksem 0.
  • Wartości dodatnie reprezentują obiekty, które nastąpią w przyszłości, po bieżącej wartości. Na przykład pozycja 1 jest następną wartością w tablicy.
  • Liczby ujemne reprezentują obiekty, które wystąpiły w przeszłości, przed poprzednim obiektem. Na przykład -1 jest poprzednią wartością w tablicy.

Pole 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.

Wyliczony obiekt

Wynik

10

[10,20]

20

[10, 20, 30]

30

[20,30,40]

40

[30,40,50]

50

[40, 50]

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.

  • Bieżący obiekt jest z indeksem 0.
  • Wartości dodatnie reprezentują obiekty, które nastąpią w przyszłości, po bieżącej wartości. Na przykład pozycja 1 jest następną wartością w tablicy.
  • Liczby ujemne reprezentują obiekty, które wystąpiły w przeszłości, przed poprzednim obiektem. Na przykład -1 jest poprzednią wartością w tablicy.

Pole MyField zawiera uporządkowane sekwencyjnie wartości [10, 20, 30, 40, 50]. Geometrie obiektów są następujące: [{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.

Wyliczony obiekt

Wynik

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}]

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.

  • Bieżący obiekt jest z indeksem 0.
  • Wartości dodatnie reprezentują obiekty, które nastąpią w przyszłości, po bieżącej wartości. Na przykład pozycja 1 jest następną wartością w tablicy.
  • Liczby ujemne reprezentują obiekty, które wystąpiły w przeszłości, przed poprzednim obiektem. Na przykład -1 jest poprzednią wartością w tablicy.

Pole MyField zawiera uporządkowane sekwencyjnie wartości [10, 20, 30, 40, 50], oprócz pól objectID, globalID oraz instant_datetime. Geometrie obiektów są następujące: [{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.

Wyliczony obiekt

Wynik

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"}}]

Przykład 2: Przy wyliczaniu z indeksem 2 (wartość wynosi 30): 2