Skip To Content

사건 감지에 Arcade 식 사용

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

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

Arcade 함수에 대한 자세한 정보

사건 감지의 식

식은 사건 감지 도구에 사용되어 사건의 시작 및 종료 조건을 지정합니다. 사건 감지 조건의 결과는 항상 true 또는 false입니다. 조건을 사용하여 피처가 사건에 포함되는지를 확인합니다. 조건은 각 피처에 대해 테스트되어 피처가 사건에 해당하는지를 판단합니다. 계산은 분석이 ArcGIS GeoAnalytics Server에서 실행되는 경우 수행됩니다. 사용 가능한 식의 예시가 아래 섹션에 포함되어 있습니다.

수학 연산 및 함수 예시

식은 수학적으로 숫자를 처리할 수 있습니다. 다음 테이블은 사용 가능한 연산 샘플을 보여줍니다.

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 > 50

텍스트 함수 예시

사건 탐지 식은 텍스트를 처리할 수 있습니다. 다음 테이블은 사용 가능한 연산 샘플을 보여줍니다.

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")) == 2

날짜 함수 예시

날짜를 사용하는 식을 통해 사건 탐지를 사용할 수 있습니다. 다음 테이블은 사용 가능한 연산 샘플을 보여줍니다.

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에서 사용할 수 있는 논리 함수에 대해 대한 자세한 정보

기능설명사례결과

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

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

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

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

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

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

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

iif이(가) 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 방정식을 사용할 수 있습니다.

기능설명사례결과

TrackStartTime()

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

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

TrackStartTime()

1483315200000

TrackDuration()

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

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

TrackDuration()

172800000

TrackCurrentTime()

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

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

TrackCurrentTime()

1483434000000

TrackIndex

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

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

TrackIndex

0

TrackFieldWindow(<fieldName>, <startIndex>, <endIndex>)

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

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

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

예시 1: TrackFieldWindow("MyField,-1,2)

예시 2: TrackFieldWindow("MyField,-2,0)[0]

예시 3: TrackFieldWindow("MyField,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

TrackGeometryWindow(<startIndex>, <endIndex>)

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

  • 현재 피처는 색인 0에 있습니다.
  • 양수 값은 현재 값 이후의 미래에 발생하는 피처를 나타냅니다. 예를 들어, 위치 1은 어레이의 다음 값입니다.
  • 음수 값은 이전 피처 이전의 과거에 발생한 피처를 나타냅니다. 예를 들어, -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: TrackGeometryWindow(-1,2)

예시 2: 폴리라인 데이터셋의 TrackGeometryWindow(0,1)[0]

예시 3: 폴리곤 데이터셋의 TrackGeometryWindow(0,1)[0]

예시 4: 이전 포인트의 X값 찾기 TrackGeometryWindow(-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(값 30)에서 평가됩니다. 2

TrackWindow(<value1>, <value2>)

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

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

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

예시 1: TrackWindow(-1,0)[0]

예시 2: geometry(TrackWindow(-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(값 30)에서 평가됩니다. 2