식을 적용할 수 있는 GeoAnalytics Tools 도구상자에 다음 도구들이 포함되어 있습니다.
식을 사용하는 GeoAnalytics Tools에 다양한 용도가 있으며 식을 적용할 수 있는 제한 사항도 있습니다. ArcGIS 10.6의 경우 GeoAnalytics에 사용되는 모든 식에 Arcade가 지원됩니다.
추적 재생성 및 버퍼 생성
버퍼 식은 추적 재생성 및 버퍼 생성 도구에서 사용합니다.
버퍼 크기는 상수 또는 필드 값을 사용하여 많이 입력됩니다. 그러나 값을 입력하는 것은 GeoAnalytics Tools를 사용하여 버퍼 크기를 지정할 수 있는 유일한 방식이 아닙니다. 경우에 따라서는 수학적 계산을 수행하여 버퍼 크기를 설정할 수 있습니다. 계산은 분석되는 각 피처에 적용됩니다. 계산은 분석이 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
거리 함수 예시
as distance 기능은 수학 식에서 사용할 수 있는 숫자 값을 선형 거리에 보냅니다. 추적 재생성 및 버퍼 생성 도구는 as distance 기능을 사용할 수 있습니다. as distance 기능 없이 숫자 값을 사용한 경우 단위는 미터(m)로 가정됩니다.
함수 | 설명 | 예시 | 결과 |
---|---|---|---|
as_meters( <값> ) | 입력 값이 미터라고 가정하여 계산을 적용합니다. | as_meters( $feature["fieldname"] ) as_meters(150) | 결과가 150미터로 버퍼됩니다. |
as_kilometers( <값> ) | 입력 값이 킬로미터라고 가정하여 계산을 적용합니다. | as_kilometers( $feature["fieldname"] ) as_kilometers(150) | 결과가 150킬로미터로 버퍼됩니다. |
as_feet( <값> ) | 입력 값이 피트라고 가정하여 계산을 적용합니다. | as_feet( $feature["fieldname"] ) as_feet(150) | 결과가 150피트로 버퍼됩니다. |
as_yards( <값> ) | 입력 값이 야드라고 가정하여 계산을 적용합니다. | as_yards( $feature["fieldname"] ) as_yards(150) | 결과가 150야드로 버퍼됩니다. |
as_nautical_miles( <값> ) | 입력 값이 해리라고 가정하여 계산을 적용합니다. | as_nautical_miles( $feature["fieldname"] ) as_nautical_miles(150) | 결과가 150해리로 버퍼됩니다. |
as_miles( <값> ) | 입력 값이 마일이라고 가정하여 계산을 적용합니다. | as_miles( $feature["fieldname"] ) as_miles(150) | 결과가 150마일로 버퍼됩니다. |
각 피처에 대해 킬로미터(km)라고 가정하여 필드 Distance를 곱한 다음, 버퍼 식에 대해 10미터(m)를 더합니다.
as_kilometers($feature["Distance"]) * 3 + as_meters(10)
조건 연산자
조건문은 다음 연산자를 사용할 수 있습니다.
연산자 | 설명 | Example | 결과 |
---|---|---|---|
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 |
고급 기능 및 조건을 사용하는 버퍼 식의 예시
iff(field1 > field2, iff(field2 = 0, field3, field4), 0)
조인 조건의 곱셈 예시
iff(field1 > field2, iff(field2 = 0, field3, field4), 0) > $join["Distance"] * 2
논리 연산자 예시
조건 연산자 이외에 고급 논리 연산자를 사용하여 다음 테이블에 표시된 것처럼 버퍼를 생성할 수 있습니다.
Arcade에서 사용할 수 있는 논리 함수에 대해 대한 자세한 정보
함수 | 설명 | Example | 결과 |
---|---|---|---|
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로 평가되는 식이 나올 때까지 일련의 식을 순서대로 평가합니다.
| 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($feature["field1"] + 3 , $feature["field1"], 1, $feature["field2"], 2, 0) | conditionl val field1 + 3 및 case1 field1의 동등을 비교합니다. true인 경우 1을 반환합니다. false인 경우 field1 + 3 및 field2의 동등을 비교합니다. true인 경우 2를 반환합니다. 그 외의 경우 0을 반환합니다. |
추적 인식 예시
추적 재생성은 다음 표에 표시된 것처럼 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>) | 지정된 시간 색인에 대해 주어진 필드의 값 배열을 반환합니다. 창 함수를 사용하면 시간을 전과 후로 이동할 수 있습니다. 식은 트랙의 각 피처에서 평가됩니다.
| MyField 순차적으로 [10, 20, 30, 40, 50]의 값을 정렬했습니다. 식은 트랙의 각 피처에서 평가됩니다. 결과는 시작 피처를 포함하고 종료 피처는 제외하면서 반환됩니다. 예시 1: TrackFieldWindow("MyField,-1,2) 예시 2: TrackFieldWindow("MyField,-2,0)[0] 예시 3: TrackFieldWindow("MyField,0,3)[2] | 예시 1: 각 피처에서 평가될 때 테이블에 다음 결과가 표시됩니다.
예시 2: 색인 2(값 30)에서 평가되면 10을 반환합니다. 예시 3: 색인 2(값 30)에서 평가되면 50을 반환합니다. | ||||||||||||
TrackGeometryWindow(<startIndex>, <endIndex>) | 지정된 시간 색인에 대해 대표 기하의 값 어레이를 반환합니다. 창 함수를 사용하면 시간을 전과 후로 이동할 수 있습니다. 식은 트랙의 각 피처에서 평가됩니다.
| 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: 각 피처에서 평가될 때 테이블에 다음 결과가 표시됩니다.
예시 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>) | 지정된 시간 색인에 대해 대표 기하 및 모든 속성의 값 행렬을 반환합니다. 창 함수를 사용하면 시간을 전과 후로 이동할 수 있습니다.
| MyField objectID, globalID 및 instant_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: TrackWindow(-1,0)[0] 예시 2: geometry(TrackWindow(-1,0)[0]["x"] | 예시 1: 각 피처에서 평가될 때 테이블에 다음 결과가 표시됩니다.
예시 2: 색인 2(값 30)에서 평가됩니다. 2 |
다음 추적 식을 사용하여 추적 거리, 속도 및 가속도를 계산합니다.
모든 거리 계산은 미터로, 속도는 초당 미터로, 가속도는 초당 제곱미터로 계산됩니다. 거리는 측지 거리를 사용하여 측정됩니다.
함수 | 설명 |
---|---|
TrackCurrentDistance() | 첫 번째 관측에서 현재 관측까지 관측 사이에 이동한 거리의 합계입니다. |
TrackDistanceAt(value) | 첫 번째 관측에서 현재 관측까지의 관측 사이에 이동한 거리와 주어진 값을 더한 합계입니다. |
TrackDistanceWindow(value1, value2) | 현재 관측(0)에 대한 창에서 첫 번째(포함)에서 마지막 값(제외)까지의 거리입니다. |
TrackCurrentSpeed() | 이전 관측과 현재 관측 사이의 속도입니다. |
TrackSpeedAt(value1) | 현재 관측을 기준으로 한 관측 속도입니다. 예를 들어 값 2에서는 현재 관측 이후 두 관측에서의 관측 속도입니다. |
TrackSpeedWindow(value1, value2) | 현재 관측(0)에 대한 창에서 첫 번째(포함) 및 마지막 값(제외)까지의 속도 값입니다. |
TrackCurrentAcceleration() | 이전 관측과 현재 관측 사이의 가속도입니다. |
TrackAccelerationAt(value1) | 현재 관측을 기준으로 한 관측 가속도입니다. |
TrackAccelerationWindow(value1, value2) | 현재 관측(0)에 대한 창에서 첫 번째(포함)에서 마지막 값(제외)까지의 가속도 값입니다. |
거리, 속도 및 가속도에 대한 계산 예시는 다음 이미지의 예시를 사용합니다.
함수 | 결과 예시 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
TrackCurrentDistance() |
| ||||||||||||||
TrackDistanceAt(2) |
| ||||||||||||||
TrackDistanceWindow(-1, 2) |
| ||||||||||||||
TrackCurrentSpeed() |
| ||||||||||||||
TrackSpeedAt(2) |
| ||||||||||||||
TrackSpeedWindow(-1, 2) |
| ||||||||||||||
TrackCurrentAcceleration() |
| ||||||||||||||
TrackAccelerationAt(2) |
| ||||||||||||||
TrackAccelerationWindow(-1, 2) |
|