Skip To Content

Użycie wyrażeń w narzędziach GeoAnalytics Tools

W skrzynce narzędziowej GeoAnalytics Tools dostępnych jest wiele narzędzi, które umożliwiają użycie wyrażeń. W następujących narzędziach istnieje opcja umożliwiająca zastosowanie wyrażenia:

Narzędzia GeoAnalytics Tools, w których używane są wyrażenia, mają różne zastosowania, a ponadto obowiązują w ich przypadku różne ograniczenia dotyczące możliwości stosowania wyrażeń.

Rekonstruuj ścieżki i Utwórz bufory

W narzędziach Rekonstruuj ścieżki i Utwórz bufory używane są wyrażenia dotyczące bufora.

Wielkości buforów podaje się najczęściej przy użyciu wartości stałych lub wartości pól. Jednakże wprowadzenie wartości nie jest jedynym sposobem, w jaki można podać wielkość bufora w narzędziach GeoAnalytics Tools. W niektórych przypadkach wielkość bufora należy ustawić, wykonując obliczenie matematyczne. Możliwe jest wykonywanie prostych oraz zaawansowanych obliczeń, które są stosowane do wszystkich rekordów. Obliczenie jest stosowane do każdego analizowanego obiektu. Obliczenia są wykonywane wtedy, gdy analiza jest przeprowadzana na serwerze ArcGIS GeoAnalytics Server.

W wyrażeniach dotyczących bufora można stosować proste obliczenia i wszystkie funkcje wbudowane.

Przykłady wyrażeń dotyczących bufora znajdują się w poniższych sekcjach.

Połącz obiekty

W narzędziu Połącz obiekty wyrażenia są używane do określania warunków połączenia.

W niektórych przypadkach konieczne jest podanie warunku służącego do wyboru obiektów, które mają być uwzględnione w połączeniu. Możliwe jest wykonywanie prostych warunków połączenia (na przykład field a > field c), jak również warunków zaawansowanych. Warunki są porównywane z każdym obiektem w celu ustalenia, co podlega analizie. Obliczenia są wykonywane wtedy, gdy analiza jest uruchamiana na serwerze ArcGIS GeoAnalytics Server.

Do tworzenia warunków w wyrażeniach warunków połączenia można stosować proste obliczenia oraz zaawansowane funkcje wbudowane. W warunkach połączenia nie można używać funkcji as_distance. Wynikiem warunku połączenia musi być zawsze wartość prawda (true) lub fałsz (false).

Przykłady wyrażeń znajdują się w poniższych sekcjach.

Obliczenia proste

Proste przykłady matematyczne

Narzędzia Rekonstruuj ścieżki i Utwórz bufory umożliwiają matematyczne przetwarzanie liczb.

W narzędziu Połącz obiekty można używać operacji matematycznych podczas tworzenia warunków połączenia.

OperatorObjaśnieniePrzykładWynik

a + b

a plus b

["fieldname"] + 2.5

Pole nazwa_pola zawiera wartość 1,5

4,0

a - b

a minus b

["fieldname"]- 2.2

Pole nazwa_pola zawiera wartość 3,3

1,1

a * b

a razy b

["fieldname"] * 2.2

Pole nazwa_pola zawiera wartość 2,0

4,4

a / b

a dzielone przez b

["fieldname"] / 1.25

Pole nazwa_pola zawiera wartość 4,0

3,2

abs( a )

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

abs(["fieldname"])

Pole nazwa_pola zawiera wartość -1,5

1,5

log ( a )

Zwraca logarytm naturalny (o podstawie e) argumentu a.

log(["fieldname"])

Pole nazwa_pola zawiera wartość 1

0

sin ( a )

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

sin(["fieldname"])

Pole nazwa_pola zawiera wartość 1,5707

1

cos( a )

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

cos(["fieldname"])

Pole nazwa_pola zawiera wartość 0

1

tan( a )

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

tan(["fieldname"])

Pole nazwa_pola zawiera wartość 0

0

sqrt( a )

Zwraca pierwiastek kwadratowy z argumentu a.

sqrt(["fieldname"])

Pole nazwa_pola zawiera wartość 9

3

min( a, b )

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

min("fieldname", -3)

Pole nazwa_pola zawiera wartość 1,5, a drugą wartością jest –3

-3

max( a, b )

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

max("fieldname1", "fieldname2")

Pole nazwa_pola1 zawiera wartość 1,5, a pole nazwa_pola2 — wartość –3

1,5

Przykład mnożenia w wyrażeniu dotyczącym bufora

["Distance"] * 2

Przykład mnożenia w wyrażeniu warunku połączenia

["Distance"] * 2 > 5

Funkcje wbudowane narzędzi GeoAnalytics Tools

Przykłady funkcji As distance

Funkcje as distance typują wartości liczbowe na odległości liniowe, których można następnie używać w wyrażeniu matematycznym.

Narzędzia Rekonstruuj ścieżki i Utwórz bufory umożliwiają korzystanie z funkcji as distance. Jeśli wartość liczbowa jest używana bez funkcji as distance, przyjmuje się, że jednostkami są metry.

W narzędziu Połącz obiekty nie można korzystać z funkcji as distance.

FunkcjaObjaśnieniePrzykładWynik

as_meters( <value> )

Stosuje obliczenie przy założeniu, że wartości wejściowe są wyrażone w metrach.

as_meters( ["fieldname"] )

as_meters(150)

Wyniki są buforowane dla odległości wynoszącej 150 metrów.

as_kilometers( <value> )

Stosuje obliczenie przy założeniu, że wartości wejściowe są wyrażone w kilometrach.

as_kilometers( ["fieldname"] )

as_kilometers(150)

Wyniki są buforowane dla odległości wynoszącej 150 kilometrów.

as_feet( <value> )

Stosuje obliczenie przy założeniu, że wartości wejściowe są wyrażone w stopach.

as_feet( ["fieldname"] )

as_feet(150)

Wyniki są buforowane dla odległości wynoszącej 150 stóp.

as_yards( <value> )

Stosuje obliczenie przy założeniu, że wartości wejściowe są wyrażone w jardach.

as_yards( ["fieldname"] )

as_yards(150)

Wyniki są buforowane dla odległości wynoszącej 150 jardów.

as_nautical_miles( <value> )

Stosuje obliczenie przy założeniu, że wartości wejściowe są wyrażone w milach morskich.

as_nautical_miles( ["fieldname"] )

as_nautical_miles(150)

Wyniki są buforowane dla odległości wynoszącej 150 mil morskich.

as_miles( <value> )

Stosuje obliczenie przy założeniu, że wartości wejściowe są wyrażone w milach.

as_miles( ["fieldname"] )

as_miles(150)

Wyniki są buforowane dla odległości wynoszącej 150 mil.

Dla każdego obiektu pomnóż wartość pola Odległość, przyjmując, że odległość jest wyrażona w kilometrach i dodaj 10 metrów na potrzeby wyrażenia dotyczącego bufora.

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

Zaawansowane funkcje wbudowane narzędzi GeoAnalytics Tools na potrzeby wyrażeń dotyczących bufora

W wyrażeniach dotyczących bufora i warunkach połączenia można stosować oprócz prostych wyrażeń matematycznych także bardziej zaawansowane funkcje.

Narzędzia Rekonstruuj ścieżki i Utwórz bufory umożliwiają korzystanie z funkcji zaawansowanych.

W narzędziu Połącz obiekty można używać operacji zaawansowanych podczas tworzenia warunków połączenia.

FunkcjaObjaśnieniePrzykładWynik

constrain(<value>,<low>,<high>)

Zwraca wartość wejściową, jeśli mieści się ona w podanych granicach. Jeśli wartość jest mniejsza niż wartość minimalna, zwracana jest wartość minimalna. Jeśli wartość jest większa od wartości maksymalnej, zwracana jest wartość maksymalna.

constrain( distance, 0, 10)

constrain(['Store dist'], 6, distance)

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.

iff(<condition>,<true value>,<false value>)

Zwraca jedną wartość, jeśli warunek przyjmuje wartość true i inną wartość, jeśli warunek ma 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.

iff(field1 > field2, field1, 0)

iff(field1 > field2, iff(field2 = 0, field3, field4), 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 iff, 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((field1 + 10) > 1, 1,(field2 + 10) > 2 , 2, field3)

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(field1 + 3 , field1, 1, field2, 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.

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

<condition1> OR <condition2>

Spełniony jest warunek pierwszy (condition1) lub drugi (condition2)

(abs(-5) == 5) OR (10 > 2)

True

<condition1> AND <condition2>

Spełnione są obydwa warunki: pierwszy (condition1) i drugi (condition2)

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

False

Przykład wyrażenia dotyczącego bufora, w którym zastosowano zaawansowane funkcje i warunki

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

Przykład mnożenia w warunku połączenia

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