도형 KNN 내부 조인
| 항목 | 값 |
|---|---|
| 화면 이름 | Geometry knn inner join |
| 식별자 | geoKnnInnerJoinV1 |
| 지원 실행 방식 | Batch |
| 범주 | 지리공간 (Geospatial), 조인 (Join) |
기준 데이터셋의 유효한 도형마다 이웃 데이터셋에서 가장 가까운 k개 점을 선택합니다. 지정한 좌표 참조 체계로 변환한 뒤 WGS84로 되돌립니다. 이웃 전체 데이터가 드라이버와 실행기 메모리에 들어가야 하며 3GB 실행기의 참고 규모는 최대 약 100만 점입니다.
입력 인자
| 이름 | 지정 여부 | 자료형 | 의미와 조건 |
|---|---|---|---|
Base dataset | 필수 | Table | 조인의 기준 데이터셋입니다. |
Condition for columns to select on the left | 필수 | ColumnPredicate | 왼쪽 스키마의 각 열을 검사하여 조건에 맞는 열만 출력으로 선택합니다. |
Condition for columns to select on the right | 필수 | ColumnPredicate | 오른쪽 스키마의 각 열을 검사하여 조건에 맞는 열만 출력으로 선택합니다. |
Join key | 필수 | Tuple<Column<Geometry>, Column<GeoPoint>> | 질의 데이터셋의 GeoJSON 열과 이웃 데이터셋의 GeoPoint 열입니다. |
K | 필수 | Literal<Integer> | 왼쪽의 유효한 도형마다 오른쪽에서 선택할 이웃 수입니다. |
Neighbors dataset | 필수 | Table | 이웃 후보 데이터셋입니다. |
Projected coordinate system | 필수 | Literal<String> | 조인 전에 입력을 이 좌표계로 변환하고 해당 단위로 거리를 측정합니다. authority:id 형식이며 UTM 18N의 예는 EPSG:32618입니다. |
Prefix for columns from right | 선택 | Literal<String> | 오른쪽 열 이름 모두에 붙일 접두사입니다. |
입출력 예시
예시 1: 기본 동작
인자 값:
Base dataset: ri.foundry.main.dataset.leftCondition for columns to select on the left:
columnNameIsIn(
columnNames: [geometryCol, lhsCol],
)Condition for columns to select on the right:
columnNameIsIn(
columnNames: [geometryCol, col],
)Join key: (geometryCol,geometryCol)K: 2Neighbors dataset: ri.foundry.main.dataset.rightProjected coordinate system: epsg:2868Prefix for columns from right: rhs_
입력:
ri.foundry.main.dataset.left
| geometryCol | lhsCol |
|---|---|
| {"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} | 42.0 |
ri.foundry.main.dataset.right
| geometryCol | col |
|---|---|
| { latitude: 33.440609443703586, longitude: -112.14843750000001, } | rhsVal1 |
| { latitude: 33.44082430962016, longitude: -112.14560508728029, } | rhsVal2 |
| { latitude: 33.440895931474124, longitude: -112.11796760559083, } | rhsVal3 |
출력:
| geometryCol | lhsCol | rhs_geometryCol | rhs_col |
|---|---|---|---|
| {"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} | 42.0 | { latitude: 33.440609443703586, longitude: -112.14843750000001, } | rhsVal1 |
| {"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} | 42.0 | { latitude: 33.44082430962016, longitude: -112.14560508728029, } | rhsVal2 |
예시 2: 기본 동작
인자 값:
Base dataset: ri.foundry.main.dataset.leftCondition for columns to select on the left:
columnNameIsIn(
columnNames: [geometryColLhs, lhs-1],
)Condition for columns to select on the right:
columnNameIsIn(
columnNames: [geometryColRhs, rhs-1],
)Join key: (geometryColLhs,geometryColRhs)K: 1Neighbors dataset: ri.foundry.main.dataset.rightProjected coordinate system: epsg:2868Prefix for columns from right: null
입력:
ri.foundry.main.dataset.left
| geometryColLhs | lhs-1 |
|---|
ri.foundry.main.dataset.right
| geometryColRhs | rhs-1 |
|---|
출력:
| geometryColLhs | lhs-1 | geometryColRhs | rhs-1 |
|---|
예시 3: 기본 동작
인자 값:
Base dataset: ri.foundry.main.dataset.leftCondition for columns to select on the left:
columnNameIsIn(
columnNames: [geometryCol, lhsCol],
)Condition for columns to select on the right:
columnNameIsIn(
columnNames: [geometryCol, col],
)Join key: (geometryCol,geometryCol)K: 2Neighbors dataset: ri.foundry.main.dataset.rightProjected coordinate system: epsg:2868Prefix for columns from right: rhs_
입력:
ri.foundry.main.dataset.left
| geometryCol | lhsCol |
|---|---|
| {"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} | 42.0 |
| {"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} | 43.0 |
ri.foundry.main.dataset.right
| geometryCol | col |
|---|---|
| { latitude: 33.440609443703586, longitude: -112.14843750000001, } | rhsVal1 |
| { latitude: 33.44082430962016, longitude: -112.14560508728029, } | rhsVal2 |
| { latitude: 33.440895931474124, longitude: -112.11796760559083, } | rhsVal3 |
출력:
| geometryCol | lhsCol | rhs_geometryCol | rhs_col |
|---|---|---|---|
| {"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} | 42.0 | { latitude: 33.440609443703586, longitude: -112.14843750000001, } | rhsVal1 |
| {"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} | 43.0 | { latitude: 33.440609443703586, longitude: -112.14843750000001, } | rhsVal1 |
| {"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} | 42.0 | { latitude: 33.44082430962016, longitude: -112.14560508728029, } | rhsVal2 |
| {"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} | 43.0 | { latitude: 33.44082430962016, longitude: -112.14560508728029, } | rhsVal2 |
예시 4: 기본 동작
인자 값:
Base dataset: ri.foundry.main.dataset.leftCondition for columns to select on the left:
columnNameIsIn(
columnNames: [geometryCol, lhsCol],
)Condition for columns to select on the right:
columnNameIsIn(
columnNames: [geometryCol, col],
)Join key: (geometryCol,geometryCol)K: 3Neighbors dataset: ri.foundry.main.dataset.rightProjected coordinate system: epsg:2868Prefix for columns from right: rhs_
입력:
ri.foundry.main.dataset.left
| geometryCol | lhsCol |
|---|---|
| {"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} | 42.0 |
ri.foundry.main.dataset.right
| geometryCol | col |
|---|---|
| { latitude: 33.440609443703586, longitude: -112.14843750000001, } | rhsVal1 |
| { latitude: 33.440609443703586, longitude: -112.14843750000001, } | rhsVal1 |
| { latitude: 33.44082430962016, longitude: -112.14560508728029, } | rhsVal2 |
| { latitude: 33.44082430962016, longitude: -112.14560508728029, } | rhsVal2 |
| { latitude: 33.440895931474124, longitude: -112.11796760559083, } | rhsVal3 |
출력:
| geometryCol | lhsCol | rhs_geometryCol | rhs_col |
|---|---|---|---|
| {"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} | 42.0 | { latitude: 33.440609443703586, longitude: -112.14843750000001, } | rhsVal1 |
| {"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} | 42.0 | { latitude: 33.440609443703586, longitude: -112.14843750000001, } | rhsVal1 |
| {"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} | 42.0 | { latitude: 33.44082430962016, longitude: -112.14560508728029, } | rhsVal2 |
예시 5: 기본 동작
인자 값:
Base dataset: ri.foundry.main.dataset.leftCondition for columns to select on the left:
columnNameIsIn(
columnNames: [geometryColLhs, lhs-1],
)Condition for columns to select on the right:
columnNameIsIn(
columnNames: [geometryColRhs, rhs-1],
)Join key: (geometryColLhs,geometryColRhs)K: 1Neighbors dataset: ri.foundry.main.dataset.rightProjected coordinate system: epsg:2868Prefix for columns from right: null
입력:
ri.foundry.main.dataset.left
| geometryColLhs | lhs-1 |
|---|
ri.foundry.main.dataset.right
| geometryColRhs | rhs-1 |
|---|---|
| { latitude: 33.44082430962016, longitude: -112.14560508728029, } | null |
| { latitude: 33.440895931474124, longitude: -112.11796760559083, } | rhsVal2 |
| null | rhsVal3 |
출력:
| geometryColLhs | lhs-1 | geometryColRhs | rhs-1 |
|---|
예시 6: 기본 동작
인자 값:
Base dataset: ri.foundry.main.dataset.leftCondition for columns to select on the left:
columnNameIsIn(
columnNames: [geometryColLhs, lhs-1],
)Condition for columns to select on the right:
columnNameIsIn(
columnNames: [geometryColRhs, rhs-1],
)Join key: (geometryColLhs,geometryColRhs)K: 1Neighbors dataset: ri.foundry.main.dataset.rightProjected coordinate system: epsg:2868Prefix for columns from right: null
입력:
ri.foundry.main.dataset.left
| geometryColLhs | lhs-1 |
|---|---|
| {"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} | 42.0 |
| {"coordinates": [-112.14560508728029,33.44082430962016], "type":"Point"} | 43.0 |
ri.foundry.main.dataset.right
| geometryColRhs | rhs-1 |
|---|
출력:
| geometryColLhs | lhs-1 | geometryColRhs | rhs-1 |
|---|
예시 7: 기본 동작
인자 값:
Base dataset: ri.foundry.main.dataset.leftCondition for columns to select on the left:
columnNameIsIn(
columnNames: [geometryCol, lhsCol],
)Condition for columns to select on the right:
columnNameIsIn(
columnNames: [geometryCol, col1, arrayCol],
)Join key: (geometryCol,geometryCol)K: 5Neighbors dataset: ri.foundry.main.dataset.rightProjected coordinate system: epsg:4326Prefix for columns from right: rhs_
입력:
ri.foundry.main.dataset.left
| geometryCol | lhsCol |
|---|---|
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 42.0 |
ri.foundry.main.dataset.right
| geometryCol | col1 | arrayCol | toDrop |
|---|---|---|---|
| { latitude: 33.440609443703586, longitude: -112.14843750000001, } | rhsVal1 | [ 0.0, 1.1 ] | 1.0 |
| { latitude: 33.44082430962016, longitude: -112.14560508728029, } | rhsVal2 | [ 0.0, 1.1 ] | 1.0 |
| { latitude: 33.440895931474124, longitude: -112.11796760559083, } | rhsVal3 | [ 0.0, 1.1 ] | 1.0 |
출력:
| geometryCol | lhsCol | rhs_geometryCol | rhs_col1 | rhs_arrayCol |
|---|---|---|---|---|
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 42.0 | { latitude: 33.440609443703586, longitude: -112.14843750000001, } | rhsVal1 | [ 0.0, 1.1 ] |
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 42.0 | { latitude: 33.44082430962016, longitude: -112.14560508728029, } | rhsVal2 | [ 0.0, 1.1 ] |
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 42.0 | { latitude: 33.440895931474124, longitude: -112.11796760559083, } | rhsVal3 | [ 0.0, 1.1 ] |
예시 8: 기본 동작
인자 값:
Base dataset: ri.foundry.main.dataset.leftCondition for columns to select on the left:
columnNameIsIn(
columnNames: [geometryColLhs, lhs-1],
)Condition for columns to select on the right:
columnNameIsIn(
columnNames: [geometryColRhs, rhs-1],
)Join key: (geometryColLhs,geometryColRhs)K: 1Neighbors dataset: ri.foundry.main.dataset.rightProjected coordinate system: epsg:2868Prefix for columns from right: null
입력:
ri.foundry.main.dataset.left
| geometryColLhs | lhs-1 |
|---|---|
| {"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} | 42.0 |
| null | 43.0 |
ri.foundry.main.dataset.right
| geometryColRhs | rhs-1 |
|---|---|
| { latitude: 33.44082430962016, longitude: -112.14560508728029, } | null |
| { latitude: 33.440895931474124, longitude: -112.11796760559083, } | rhsVal2 |
| null | rhsVal3 |
출력:
| geometryColLhs | lhs-1 | geometryColRhs | rhs-1 |
|---|---|---|---|
| {"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} | 42.0 | { latitude: 33.44082430962016, longitude: -112.14560508728029, } | null |
예시 9: 기본 동작
인자 값:
Base dataset: ri.foundry.main.dataset.leftCondition for columns to select on the left:
columnNameIsIn(
columnNames: [geometryColLhs, lhs-1],
)Condition for columns to select on the right:
columnNameIsIn(
columnNames: [],
)Join key: (geometryColLhs,geometryColRhs)K: 1Neighbors dataset: ri.foundry.main.dataset.rightProjected coordinate system: epsg:2868Prefix for columns from right: null
입력:
ri.foundry.main.dataset.left
| geometryColLhs | lhs-1 |
|---|---|
| {"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} | 42.0 |
| {"coordinates": [-112.14560508728029,33.44082430962016], "type":"Point"} | 43.0 |
ri.foundry.main.dataset.right
| geometryColRhs | rhs-1 |
|---|---|
| { latitude: 33.44082430962016, longitude: -112.14560508728029, } | null |
| { latitude: 33.440895931474124, longitude: -112.11796760559083, } | rhsVal2 |
| null | rhsVal3 |
출력:
| geometryColLhs | lhs-1 |
|---|---|
| {"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} | 42.0 |
| {"coordinates": [-112.14560508728029,33.44082430962016], "type":"Point"} | 43.0 |
예시 10: 기본 동작
인자 값:
Base dataset: ri.foundry.main.dataset.leftCondition for columns to select on the left:
columnNameIsIn(
columnNames: [],
)Condition for columns to select on the right:
columnNameIsIn(
columnNames: [geometryColRhs, rhs-1],
)Join key: (geometryColLhs,geometryColRhs)K: 1Neighbors dataset: ri.foundry.main.dataset.rightProjected coordinate system: epsg:2868Prefix for columns from right: null
입력:
ri.foundry.main.dataset.left
| geometryColLhs | lhs-1 |
|---|---|
| {"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} | 42.0 |
| {"coordinates": [-112.14560508728029,33.44082430962016], "type":"Point"} | 43.0 |
ri.foundry.main.dataset.right
| geometryColRhs | rhs-1 |
|---|---|
| { latitude: 33.44082430962016, longitude: -112.14560508728029, } | null |
| { latitude: 33.440895931474124, longitude: -112.11796760559083, } | rhsVal2 |
| null | rhsVal3 |
출력:
| geometryColRhs | rhs-1 |
|---|---|
| { latitude: 33.44082430962016, longitude: -112.14560508728029, } | null |
| { latitude: 33.44082430962016, longitude: -112.14560508728029, } | null |
예시 11: 기본 동작
인자 값:
Base dataset: ri.foundry.main.dataset.leftCondition for columns to select on the left:
allColumns(
)Condition for columns to select on the right:
columnNameIsIn(
columnNames: [geometryCol, col1, arrayCol],
)Join key: (geometryCol,geometryCol)K: 1Neighbors dataset: ri.foundry.main.dataset.rightProjected coordinate system: epsg:4326Prefix for columns from right: rhs_
입력:
ri.foundry.main.dataset.left
| geometryCol | lhsCol |
|---|---|
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 42.0 |
| {"coordinates": [55.0, 5.0], "type":"Point"} | 43.0 |
| {"coordinates": [[40.0, 0.0], [0.0, 40.0]], "type":"LineString"} | 44.0 |
| {"coordinates": [[[20.0, 10.0], [27.0, 10.0], [27.0, 17.0], [20.0, 17.0], [20.0, 10.0]]], "type": "Polygon"} | 45.0 |
| {"coordinates": [[[21.0, 21.0], [27.0, 21.0], [27.0, 27.0], [21.0, 27.0], [21.0, 21.0]]], "type": "Polygon"} | 46.0 |
| {"coordinates": [[[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], [[[12.0, 12.0], [17.0, 12.0], [17.0, 17.0], [12.0, 17.0], [12.0, 12.0]]]], "type":"MultiPolygon"} | 47.0 |
| {"coordinates": [[[[170.0, 170.0], [190.0, 170.0], [190.0, 190.0], [170.0, 190.0], [170.0, 170.0]]], [[[12.0, 12.0], [17.0, 12.0], [17.0, 17.0], [12.0, 17.0], [12.0, 12.0]]]], "type":"MultiPolygon"} | 48.0 |
ri.foundry.main.dataset.right
| geometryCol | col1 | arrayCol | toDrop |
|---|---|---|---|
| { latitude: 5.0, longitude: 5.0, } | rhsVal1 | [ 0.0, 1.1 ] | 1.0 |
| { latitude: 100.0, longitude: 100.0, } | rhsVal2 | [ 0.0, 1.1 ] | 1.0 |
출력:
| geometryCol | lhsCol | rhs_geometryCol | rhs_col1 | rhs_arrayCol |
|---|---|---|---|---|
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 42.0 | { latitude: 5.0, longitude: 5.0, } | rhsVal1 | [ 0.0, 1.1 ] |
| {"coordinates": [55.0, 5.0], "type":"Point"} | 43.0 | { latitude: 5.0, longitude: 5.0, } | rhsVal1 | [ 0.0, 1.1 ] |
| {"coordinates": [[40.0, 0.0], [0.0, 40.0]], "type":"LineString"} | 44.0 | { latitude: 5.0, longitude: 5.0, } | rhsVal1 | [ 0.0, 1.1 ] |
| {"coordinates": [[[20.0, 10.0], [27.0, 10.0], [27.0, 17.0], [20.0, 17.0], [20.0, 10.0]]], "type": "Polygon"} | 45.0 | { latitude: 5.0, longitude: 5.0, } | rhsVal1 | [ 0.0, 1.1 ] |
| {"coordinates": [[[21.0, 21.0], [27.0, 21.0], [27.0, 27.0], [21.0, 27.0], [21.0, 21.0]]], "type": "Polygon"} | 46.0 | { latitude: 5.0, longitude: 5.0, } | rhsVal1 | [ 0.0, 1.1 ] |
| {"coordinates": [[[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], [[[12.0, 12.0], [17.0, 12.0], [17.0, 17.0], [12.0, 17.0], [12.0, 12.0]]]], "type":"MultiPolygon"} | 47.0 | { latitude: 5.0, longitude: 5.0, } | rhsVal1 | [ 0.0, 1.1 ] |
| {"coordinates": [[[[170.0, 170.0], [190.0, 170.0], [190.0, 190.0], [170.0, 190.0], [170.0, 170.0]]], [[[12.0, 12.0], [17.0, 12.0], [17.0, 17.0], [12.0, 17.0], [12.0, 12.0]]]], "type":"MultiPolygon"} | 48.0 | { latitude: 5.0, longitude: 5.0, } | rhsVal1 | [ 0.0, 1.1 ] |