Skip To Content

계산 필드에 Arcade 식 사용

식을 적용할 수 있는 GeoAnalytics 도구 도구 상자에 여러 도구가 있습니다.

식을 사용하는 GeoAnalytics 도구에 다양한 용도가 있으며 식을 적용할 수 있는 제한 사항도 있습니다. 10.6의 경우 GeoAnalytics Server에서 사용되는 모든 식에 Arcade가 지원됩니다.

Arcade 함수에 대한 자세한 정보

계산 필드의 식

식은 계산 필드 도구에서 사용되어 필드의 값을 계산합니다. 식을 사용하여 각 피처가 채워지는 방식을 지정합니다. 계산 필드 식의 결과는 필드와 동일한 유형이어야 합니다. 식의 예시가 아래 섹션에 포함되어 있습니다.

수학 연산 및 함수 예시

식은 수학적으로 숫자를 처리할 수 있습니다. 다음 테이블에는 사용 가능한 연산 샘플이 나와 있습니다.

Arcade에서 사용할 수 있는 수학 연산 및 함수에 대한 자세한 정보

연산자설명예시결과

a + b

a와 b를 더합니다.

fieldname에 값으로 1.5 포함

$feature["fieldname"] + 2.5

4.0

a - b

a에서 b를 뺍니다.

fieldname에 값으로 3.3 포함

$feature["fieldname"]- 2.2

1.1

a * b

a와 b를 곱합니다.

fieldname에 값으로 2.0 포함

$feature["fieldname"] * 2.2

4.4

a / b

a를 b로 나눕니다.

fieldname에 값으로 4.0 포함

$feature["fieldname"] / 1.25

3.2

abs( a )

a의 절대 값(양수)을 반환합니다.

fieldname에 값으로 -1.5 포함

abs($feature["fieldname"])

1.5

log( a )

A의 자연 로그(밑 E)를 반환합니다.

fieldname에 값으로 1 포함

log($feature["fieldname"])

0

sin( a )

a의 삼각법 사인을 반환합니다. 입력은 라디안의 각도로 간주됩니다.

fieldname에 값으로 1.5707 포함

sin($feature["fieldname"])

1

cos( a )

a의 삼각법 코사인을 반환합니다. 입력은 라디안의 각도로 간주됩니다.

fieldname에 값으로 0 포함

cos($feature["fieldname"])

1

tan( a )

A의 탄젠트를 반환합니다. 입력은 라디안의 각도로 간주됩니다.

fieldname에 값으로 0 포함

tan($feature["fieldname"])

0

sqrt( a )

a의 제곱근을 반환합니다.

fieldname에 값으로 9 포함

sqrt($feature["fieldname"])

3

min( a, b )

a와 b 중 가장 낮은 숫자 값을 반환합니다.

fieldname에 값으로 1.5 및 -3 포함

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

-3

max( a, b )

a와 b 중 가장 높은 숫자 값을 반환합니다.

fieldname1에 값으로 1.5를 포함하고 fieldname2에 값으로 -3을 포함

max($feature["fieldname1"], $feature["fieldname2"])

1.5

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

포함하는 경계 내에 있는 경우 입력 값을 반환합니다. 입력 값이 낮은 값보다 작은 경우 낮은 값을 반환합니다. 입력 값이 높은 값보다 큰 경우 높은 값을 반환합니다.

constrain($feature["distance"], 0, 10)

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

distance이(가) 0보다 작은 경우 0을 반환하며 distance이(가) 10보다 작은 경우 10을 반환하고, 그 외에는 distance입니다.

Store dist이(가) 6보다 작은 경우 6을 반환하며 distance이(가) Store dist보다 작은 경우 distance을(를) 반환하고, 그 외에는 Store dist입니다.

필드 값 계산을 위한 곱셈 예시

$feature["Distance"] * 2

텍스트 함수 예시

계산 필드 식은 텍스트를 처리할 수 있습니다. 다음 테이블에는 사용 가능한 연산 샘플이 나와 있습니다.

Arcade에서 사용할 수 있는 텍스트 함수에 대한 자세한 정보

연산자설명예시결과

concatenate( <values>, <separator>)

값을 함께 연결하여 문자열을 반환합니다.

  • values - 연결할 문자열 값의 배열입니다.
  • separator(선택) - values 매개변수가 배열인 경우 연결에 사용될 구분 기호입니다. 또는 단일 값이 첫 번째 매개변수로 제공된 경우 연결할 문자열입니다. 이 매개변수가 제공되지 않으면 빈 값이 출력됩니다.

fieldname에 값으로 GeoAnalytics 포함

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

GeoAnalytics는 뛰어난 기능을 제공합니다!

find(<searchText>, <text>, <startPos>)

문자열 내의 문자열을 찾습니다. 와일드 카드를 지원하지 않습니다.

  • searchText - 검색할 하위 문자열입니다.
  • text - 검색할 텍스트입니다.
  • startPos(선택) - 검색이 수행될 문자열 내의 위치에 대한 0 기반 색인입니다.

fieldname1에 값으로 14NorthStreet를 포함하고 fieldname2에 값으로North를 포함

find($feature["fieldname2"], $feature["fieldname1"])

2

lower(<value>)

문자열을 소문자로 전환합니다.

  • value - 소문자로 전환할 문자열입니다.

fieldname에 값으로 GEOANALYTICS 포함

lower($feature["fieldname"])

GeoAnalytics

findlower가 사용된 텍스트 예시

find(("north"), lower("146NorthStreet"))

날짜 함수 예시

계산 필드 식은 날짜를 처리할 수 있습니다. 다음 테이블에는 사용 가능한 연산 샘플이 나와 있습니다.

Arcade에서 사용할 수 있는 날짜 함수에 대한 자세한 정보

Arcade에서 월의 값은 0(1월)~11(12월), 일은 1~31, 시간은 0(오전 12:00)~23(오후 11:00), 분과 초는 0~59, 밀리초는 0~999입니다. Arcade 날짜는 GeoAnalytics Server 위치의 시간 값을 반환합니다.

연산자설명예시결과

date( <value>, <month>, <day>, <hour>, <minute>)

하나의 값 또는 일련의 값을 날짜 문자열로 구문 분석합니다.

  • value(선택 사항)— 1970년 1월 1일 UTC 이래의 밀리초 수 또는 연도를 나타내는 수입니다. 연도가 지정되면 월 및 일도 후속 매개변수에서 제공되어야 합니다. 이 값은 날짜로 변환되는 ISO 8601 문자열 또는 날짜 문자열일 수도 있습니다.
  • month(선택) - 월(0~11), 여기서 0은 1월이며 11은 12월입니다.
  • day(선택) - 월의 날짜(1~31)입니다.
  • hour(선택) - 일의 시간(0~23)입니다.
  • minute(선택) - 시간의 분(0~59)입니다.
  • second(선택) - 분의 초(0~59)입니다.
  • millisecond(선택) - 초의 밀리초(0~999)입니다.

fieldname에 값으로 1476987783555 포함

예시 1: Date($features["fieldname"])

예시 2: Date(2017,0,14,0)

예시 3: Date()

예시 1: 2016년 10월 20일 11:23:03 am

예시 2: 2017년 1월 14일 12:00:00 am

예시 3: 현재 시간 반환

DateDiff(<date1>, <date2>, <units>)

두 날짜를 뺀 차이를 지정된 단위로 반환합니다.

  • date1 - 두 번째 날짜를 뺄 날짜 값입니다.
  • date2 - 첫 번째 지정 날짜에서 뺄 날짜 값입니다.
  • startpos(선택) - 두 지정 날짜의 차이가 반환될 때 사용되는 단위입니다. 지원되는 단위 유형은 milliseconds, seconds, minutes, hours, days, months, years입니다. 기본값은 밀리초입니다.

예시 1: DateDiff(Date(2017,1,14,0), Date())

예시 2: DateDiff(Date(2017,1,14,0), Date(), "Years")

결과는 이 명령이 실행된 시기에 따라 달라집니다.

예시 1: -20532129137

예시 2: -0.6546783768647119

Year(<dateValue>)

지정 날짜의 연도를 반환합니다.

  • value - 연도를 가져올 날짜 값입니다.

예시 1: fieldnameDate 값을 갖는 09 Oct 2017 04:30:43 pm 유형의 필드임

Year($feature["fieldname"])

예시 2: fieldname2012-09-27 값을 갖는 ISO 8601 문자열 형식의 문자열 필드임

예시 1: 2017

예시 2: 2012

조건 연산자

조건문은 다음 연산자를 사용할 수 있습니다.

연산자설명사례결과

a > b

a < b

a가 b보다 큼

a가 b보다 작음

10 > 2

False

a >= b

a <= b

a가 b보다 크거나 동일함

a가 b보다 작거나 동일함

abs(-10) >= 10

True

a != b

a가 b와 같지 않음

abs(-3) != -3

True

a == b

a가 b와 같음

abs(-5) == 5

True

<조건1> || <조건2>

조건 1 또는 조건 2가 충족됨

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

True

<조건1> && <조건2>

조건 1 및 조건 2가 충족됨

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

False

논리 연산자 예시

조건 연산자 이외에 고급 논리 연산자를 사용하여 필드를 계산할 수 있습니다.

Arcade에서 사용할 수 있는 논리 함수에 대해 대한 자세한 정보

함수설명예시결과

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

조건이 true로 평가되면 그 값을 반환하고 조건이 false로 평가되면 다른 값을 반환합니다.

<true value><false value>은(는) 다음과 같을 수 있습니다.

  • 숫자 필드입니다. 필드 이름에 공백이 있는 경우 대괄호를 사용합니다.
  • 숫자입니다.
  • 기능입니다.

iff($feature["field1"] > $feature["field2"], $feature["field1"], 0)

iff($feature["field1"] > $feature["field2"], iff($feature["field2"] = 0, $feature["field3"], $feature["field4"]), 0)

field1이(가) field1보다 큰 경우 field2을(를) 반환하고 그 외에는 0입니다.

iff이(가) field1보다 큰 경우 두 번째 field2 함수의 결과를 반환하고 그 외에는 0입니다.

when(<expression1> , <result1> , <expression2> , <result2> , ... , <expressionN> , <resultN>, <default>)

true(으)로 평가되는 식이 나올 때까지 일련의 식을 차례로 평가합니다.

  • expression - 식입니다.
  • result - 숫자 또는 필드일 수 있습니다.
  • default - 식이 일치하지 않는 경우 옵션 값입니다.

when(($feature["field1"] + 10) > 1, 1,($feature["field2"] + 10) > 2 , 2, $feature["field3"])

field1 + 10이 1보다 큰 경우 1을 반환합니다. 그렇지 않은 경우 field2 + 10이 2보다 큰지 확인합니다. 그렇다면 2를 반환합니다. 그렇지 않은 경우 field3을(를) 반환합니다.

decode(<conditional val> , <case1> , <result1>, <case2>, <result2>, ... <caseN>, <resultN>, <defaultValue> )

decode 기능이 식을 평가하고 값을 이후 매개변수와 비교합니다. 식이 일치하는 경우 다음 매개변수 값을 반환합니다. 아무것도 일치하지 않는 경우 마지막 매개변수가 기본 반환 값이 되는 옵션이 있습니다.

  • conditional val - 필드 또는 식일 수 있습니다.
  • case - conditional val와(과) 비교하는 값입니다.
  • result - 해당 사례가 conditional val와(과) 일치하는 경우의 결과입니다.
  • defaultValue - 다른 값이 true이(가) 아닌 경우 옵션 값입니다.

decode($feature["field1"] + 3 , $feature["field1"], 1, $feature["field2"], 2, 0)

conditional val field1 + 3 및 case1 field1의 동등을 비교합니다. true인 경우 1을 반환합니다. false인 경우 field1 + 3field2의 동등을 비교합니다. true인 경우 2를 반환합니다. 그 외의 경우 0을 반환합니다.

추적 인식 예시

또한 사건 감지 및 계산 필드 등의 일부 GeoAnalytics 도구에서는 추적 인식 Arcade 방정식을 사용할 수 있습니다. 계산 필드의 경우 입력 레이어에 시간이 지원되고, 이 식은 추적을 인식합니다.가 선택되어 있고, 하나 이상의 필드가 추적 확인용으로 식별되었다면 추적 식을 사용할 수 있습니다.

함수설명예시결과

$track.field["fieldname"].history(<value1>)

지정된 시간 색인에 대해 주어진 필드의 값 배열을 반환합니다.

  • 양수는 주어진 색인에서부터 현재 피처까지의 어레이를 반환합니다.
  • 음수는 현재 시간 단계와 그 이전의 <value1> - 1 시간 단계 값을 반환합니다.

MyField 순차적으로 [10, 20, 30, 40, 50, 60, 70, 80]의 값을 정렬했습니다. 값 10은 색인 0에 있으며 값 80은 색인 7에 있습니다. 각 색인에서 식이 평가되고 예시는 예시에 사용되는 색인을 개략적으로 설명합니다. n 시퀀스의 피처 수를 나타내며 k는 색인이 평가되는 색인을 나타냅니다.

예시 1:$track.field["MyField"].history(3))

예시 2:$track.field["MyField"].history(-3)

예시 3:mean($track.field["MyField"].history(-2))

예시 4:$track.field["MyField"].history(-3)[0]

예시 1이 색인 k에서 평가되면 색인 3에서의 k까지의 값 배열을 반환합니다. 색인 6(70)에서 평가한 경우 색인 [3, 4, 5, 6]에서 값의 배열이 반환되어 배열[40, 50, 60, 70]이 됩니다.

예시 2는 색인 k에서 주어진 값 -1을 빼서(k-2) 계산된 값의 배열을 반환합니다. 색인 6(value = 70)에서 평가되면 k-2, k-1k의 값이 [50, 60, 70]으로 반환됩니다.

예시 3은 색인 k-1k 값의 평균을 반환합니다. 색인 4(value = 50)에서 평가한 경우 value 50(색인 3)과 value 60(색인 4)의 평균인 65가 됩니다. 색인 7에서 평가한 경우 결과는 70과 80의 평균인 75가 됩니다.

예시 4는 예시 2에서 생성된 어레이의 첫 번째 항목(색인 0)인 50을 반환합니다.

$track.field["fieldname"].history(<value1>, <value2>)

색인1(<value1>)부터 색인2(<value2>)까지의 값 배열을 반환합니다.

MyField에는 순차적으로 순서가 정해진 [10, 20, 30, 40, 50, 60, 70, 80] 값이 있습니다. 여기서 10은 색인 0의 값이고, 80은 색인 7의 값입니다. 이 예시에서 식은 색인 7(80)에서 평가됩니다.

예시 1:$track.field["MyField"].history(-3, -2))

예시 2:$track.field["MyField"].history(-5, -2))

예시 1: [60]

예시 2: [40, 50, 60]

$track.time.start

추적 시작 시간을 에포크 시간부터 밀리초 단위로 계산합니다.

추적이 2017년 1월 2일에 시작된 경우

$track.time.start

1483315200000

$track.time.duration

추적이 시작된 때부터 현재 시간 단계까지의 추적 기간을 밀리초 단위로 계산합니다.

2017년 1월 2일에 추적이 시작되었고 현재 시간은 2017년 1월 4일인 경우

$track.time.duration

172800000

$track.time.current

추적의 현재 시간을 계산합니다.

2017년 1월 3일 오전 9시에 발생된 피처를 사용하는 경우

$track.time.current

1483434000000

$track.index

계산 중인 피처의 시간 색인을 반환합니다.

추적의 첫 번째 피처에 대해 이 값을 계산하는 경우

$track.index

0

$track.T(<value>, "<units>")

숫자 <value> 및 주어진 <units>을(를) 사용하여 생성된 시간과 피처 시간을 더한 값을 반환합니다.

  • value - 피처 시간에 더할 숫자 값입니다.
  • units - 숫자 <value>의 단위입니다. 지원되는 단위 유형은 밀리초, 초, 분, 시, 일, 월, 년입니다. 기본값은 밀리초입니다.

2017년 1월 2일 오후 2시에 발생된 피처를 사용하는 경우

예시 1: $track.T(1, "hours")

예시 2: $track.T(-2, "days")

예시 1: 1월 2일 오후 3시 반환 : 1483369200000

예시 2: 12월 31일 오후 2시 반환 : 1483192800000

$track.field["fieldname"].window(<value1>, <value2>)

지정된 시간 색인에 대해 주어진 필드의 값 어레이를 반환합니다. 창 함수를 사용하면 시간을 전과 후로 이동할 수 있습니다. 식은 트랙의 각 피처에서 평가됩니다.

  • 혀니 피처는 색인 0에 있습니다.
  • 양수 값은 현재 값 이후의 미래에 발생하는 피처를 나타냅니다. 예를 들어, 위치 1은 어레이의 다음 값입니다.
  • 음수 값은 이전 피처 이전의 과거에 발생한 피처를 나타냅니다. 예를 들어, -1은 배열의 이전 값입니다.

창 함수는 ArcGIS Enterprise 10.6.1에서 사용할 수 있습니다.

MyField 순차적으로 [10, 20, 30, 40, 50]의 값을 정렬했습니다. 식은 트랙의 각 피처에서 평가됩니다. 결과는 시작 피처를 포함하고 종료 피처는 제외하면서 반환됩니다.

예시 1: $track.field["MyField"].window(-1,2)

예시 2: $track.field["MyField"].window(-2,0)[0]

예시 3: $track.field["MyField"].window(0,3)[2]

예시 1: 각 피처에서 평가될 때 테이블에 다음 결과가 표시됩니다.

평가된 피처

결과

10

[10,20]

20

[10, 20, 30]

30

[20,30,40]

40

[30,40,50]

50

[40, 50]

예시 2: 색인 2(값 30)에서 평가되면 다음을 반환합니다. 10

예시 3: 색인 2(값 30)에서 평가되면 다음을 반환합니다. 50

$track.geometry.window(<value1>, <value2>)

지정된 시간 색인에 대해 대표 기하의 값 어레이를 반환합니다. 창 함수를 사용하면 시간을 전과 후로 이동할 수 있습니다. 식은 트랙의 각 피처에서 평가됩니다.

  • 혀니 피처는 색인 0에 있습니다.
  • 양수 값은 현재 값 이후의 미래에 발생하는 피처를 나타냅니다. 예를 들어, 위치 1은 어레이의 다음 값입니다.
  • 음수 값은 이전 피처 이전의 과거에 발생한 피처를 나타냅니다. 예를 들어, -1은 어레이의 이전 값입니다.

창 함수는 ArcGIS Enterprise 10.6.1에서 사용할 수 있습니다.

MyField 순차적으로 [10, 20, 30, 40, 50]의 값을 정렬했습니다. 피처의 기하는 [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}]입니다. 식은 트랙의 각 피처에서 평가됩니다. 결과는 시작 피처를 포함하고 종료 피처는 제외하면서 반환됩니다.

예시 1:$track.geometry.window(-1,2)

예시 2: 폴리라인 데이터셋에서 $track.geometry.window(0,1)[0]

예시 3: 폴리곤 데이터셋에서 $track.geometry.window(0,1)[0]

예시 4: 이전 포인트의 X값 찾기 $track.geometry.window(-1,0)[0]["x"]

예시 1: 각 피처에서 평가될 때 테이블에 다음 결과가 표시됩니다.

평가된 피처

결과

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

예시 2: 폴리라인은 다음 형식으로 반환됩니다. [{"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]]]}]

예시 3: 폴리곤은 다음 형식으로 반환됩니다. [{"rings":[[[-7882559.1197999995,6376090.883500002],[-7893142.474300001,6042715.216800004],[-8544018.775999999,6045361.0554000065],[-8544018.775999999,6376090.883500002],[-7882559.1197999995,6376090.883500002]]]}]

예시 4: 색인 2(값 20)에서 평가됩니다. 1

$track.window(<value1>, <value2>)

지정된 시간 색인에 대해 대표 기하 및 모든 속성의 값 행렬을 반환합니다. 창 함수를 사용하면 시간을 전과 후로 이동할 수 있습니다.

  • 혀니 피처는 색인 0에 있습니다.
  • 양수 값은 현재 값 이후의 미래에 발생하는 피처를 나타냅니다. 예를 들어, 위치 1은 어레이의 다음 값입니다.
  • 음수 값은 이전 피처 이전의 과거에 발생한 피처를 나타냅니다. 예를 들어, -1은 어레이의 이전 값입니다.

창 함수는 ArcGIS Enterprise 10.6.1에서 사용할 수 있습니다.

MyField objectID, globalIDinstant_datetime 필드 외에도 [10, 20, 30, 40, 50]의 값을 순차적으로 정렬했습니다. 피처의 기하는 [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}]입니다. 식은 트랙의 각 피처에서 평가됩니다. 결과는 시작 피처를 포함하고 종료 피처는 제외하면서 반환됩니다.

예시 1:$track.window(-1,0)[0]

예시 2:geometry($track.window(-1,0)[0]["x"]

예시 1: 각 피처에서 평가될 때 테이블에 다음 결과가 표시됩니다.

평가된 피처

결과

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

예시 2: 색인 2(값 20)에서 평가됩니다. 1