Skip To Content

GeoAnalytics Tools에 버퍼 식 사용

식을 적용할 수 있는 GeoAnalytics Tools 도구상자에 다음 도구들이 포함되어 있습니다.

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

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을 반환하며 distanceStore 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)

field1field1보다 큰 경우 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> )

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

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

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

conditionl val field1 + 3 및 case1 field1의 동등을 비교합니다. true인 경우 1을 반환합니다. false인 경우 field1 + 3field2의 동등을 비교합니다. 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>)

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

  • 현재 피처는 색인 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, 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: 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

다음 추적 식을 사용하여 추적 거리, 속도 및 가속도를 계산합니다.

모든 거리 계산은 미터로, 속도는 초당 미터로, 가속도는 초당 제곱미터로 계산됩니다. 거리는 측지 거리를 사용하여 측정됩니다.

함수설명

TrackCurrentDistance()

첫 번째 관측에서 현재 관측까지 관측 사이에 이동한 거리의 합계입니다.

TrackDistanceAt(value)

첫 번째 관측에서 현재 관측까지의 관측 사이에 이동한 거리와 주어진 값을 더한 합계입니다.

TrackDistanceWindow(value1, value2)

현재 관측(0)에 대한 창에서 첫 번째(포함)에서 마지막 값(제외)까지의 거리입니다.

TrackCurrentSpeed()

이전 관측과 현재 관측 사이의 속도입니다.

TrackSpeedAt(value1)

현재 관측을 기준으로 한 관측 속도입니다. 예를 들어 값 2에서는 현재 관측 이후 두 관측에서의 관측 속도입니다.

TrackSpeedWindow(value1, value2)

현재 관측(0)에 대한 창에서 첫 번째(포함) 및 마지막 값(제외)까지의 속도 값입니다.

TrackCurrentAcceleration()

이전 관측과 현재 관측 사이의 가속도입니다.

TrackAccelerationAt(value1)

현재 관측을 기준으로 한 관측 가속도입니다.

TrackAccelerationWindow(value1, value2)

현재 관측(0)에 대한 창에서 첫 번째(포함)에서 마지막 값(제외)까지의 가속도 값입니다.

거리, 속도 및 가속도에 대한 계산 예시는 다음 이미지의 예시를 사용합니다.

6개 포인트로 예시 이미지 추적

함수결과 예시

TrackCurrentDistance()

포인트 ID결과(미터)

P1

0

P2

60

P3

80+60=140

P4

30+80+60=170

P5

35+30+80+60=205

P6

25+35+30+80+60=230

TrackDistanceAt(2)

포인트 ID결과(미터)

P1

0+80+60=140

P2

30+80+60=170

P3

35+30+80+60=205

P4

25+35+30+80+60=230

P5

null

P6

null

TrackDistanceWindow(-1, 2)

포인트 ID결과(미터)

P1

[0,60]

P2

[0, 60, 140]

P3

[60, 140, 170]

P4

[140, 170, 205]

P5

[170, 205, 230]

P6

[205, 230]

TrackCurrentSpeed()

포인트 ID결과(미터/초)

P1

0

P2

60/60

1

P3

80/60

1.33

P4

30/60

.5

P5

35/60

0.5833

P6

25/60

0.4167

TrackSpeedAt(2)

포인트 ID결과(미터/초)

P1

80/60

1.33

P2

30/60

.5

P3

35/60

0.5833

P4

25/60

0.4167

P5

null

P6

null

TrackSpeedWindow(-1, 2)

포인트 ID결과(미터/초)

P1

[0, 1]

P2

[0, 1, 1.3]

P3

[1, 1.3, 0.5]

P4

[1.3, 0.5, 0.583]

P5

[0.5, 0.583, -0.4167]

P6

[0.583, -0.4167]

TrackCurrentAcceleration()

포인트 ID결과(미터/초²)

P1

0

P2

0.0167

P3

0.0056

P4

-0.0014

P5

0.0014

P6

-0.0028

TrackAccelerationAt(2)

포인트 ID결과(미터/초²)

P1

0.0056

P2

-0.0014

P3

0.0014

P4

-0.0028

P5

null

P6

null

TrackAccelerationWindow(-1, 2)

포인트 ID결과(미터/초²)

P1

[0, 0.0167]

P2

[0, 0.0167, 0.0056]

P3

[0.0167, 0.0056, -0.0014]

P4

[ 0.0056, -0.0014, 0.0014]

P5

[-0.0014, 0.0014, -0.0028]

P6

[0.0014, -0.0028]