도형 교차 조인
| 항목 | 값 |
|---|---|
| 화면 이름 | Geometry intersection join |
| 식별자 | geoIntersectionJoinV1 |
| 지원 실행 방식 | Batch |
| 범주 | 지리공간 (Geospatial), 조인 (Join) |
도형이 교차하는 조인 키 쌍에 대해 양쪽의 모든 열을 포함한 행을 반환하는 내부 조인입니다. 여러 조인 키는 지원하지 않습니다. null 도형 키의 행은 제외하고 잘못된 GeoJSON 키는 null로 처리합니다. 양쪽 데이터셋의 열 이름은 서로 달라야 합니다.
입력 인자
| 이름 | 지정 여부 | 자료형 | 의미와 조건 |
|---|---|---|---|
Join key | 필수 | List<Tuple<Column<Geometry>, Column<Geometry>>> | 왼쪽과 오른쪽 GeoJSON 열쌍의 목록입니다. 열쌍의 도형이 교차하면 행을 선택합니다. 이 변환의 현재 지원 범위는 조인 키 한 쌍입니다. |
Left dataset | 필수 | Table | 조인에 사용할 왼쪽 데이터셋입니다. |
Right dataset | 필수 | Table | 조인에 사용할 오른쪽 데이터셋입니다. |
입출력 예시
예시 1: 기본 동작
인자 값:
Join key: [(geometryColLhs,geometryColRhs)]Left dataset: ri.foundry.main.dataset.leftRight dataset: ri.foundry.main.dataset.right
입력:
ri.foundry.main.dataset.left
| geometryColLhs | lhs-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 |
ri.foundry.main.dataset.right
| geometryColRhs | rhs-1 |
|---|---|
| {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
| {"coordinates": [[[12.0, 12.0], [17.0, 12.0], [17.0, 17.0], [12.0, 17.0], [12.0, 12.0]]], "type": "Polygon"} | rhsVal2 |
| {"coordinates": [0.0, 0.0], "type":"Point"} | rhsVal3 |
| {"coordinates": [15.0, 15.0], "type":"Point"} | rhsVal4 |
| {"coordinates": [[-1.0, -1.0], [5.0, 5.0]], "type":"LineString"} | rhsVal5 |
| {"coordinates": [[20.0, 20.0], [21.0, 23.0]], "type":"LineString"} | rhsVal6 |
| {"coordinates": [[-1.0, -1.0], [5.0, 5.0]], "type":"LineString"} | rhsVal7 |
| {"coordinates": [[20.0, 20.0], [21.0, 23.0]], "type":"LineString"} | rhsVal8 |
| {"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"} | rhsVal9 |
| {"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"} | rhsVal10 |
출력:
| geometryColLhs | lhs-1 | geometryColRhs | rhs-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 | {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
| {"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": [0.0, 0.0], "type":"Point"} | rhsVal3 |
| {"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": [[-1.0, -1.0], [5.0, 5.0]], "type":"LineString"} | rhsVal5 |
| {"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": [[-1.0, -1.0], [5.0, 5.0]], "type":"LineString"} | rhsVal7 |
| {"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": [[[[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"} | rhsVal9 |
예시 2: 기본 동작
인자 값:
Join key: [(geometryColLhs,geometryColRhs)]Left dataset: ri.foundry.main.dataset.leftRight dataset: ri.foundry.main.dataset.right
입력:
ri.foundry.main.dataset.left
| geometryColLhs | lhs1 |
|---|---|
| {} | 42.0 |
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 43.0 |
ri.foundry.main.dataset.right
| geometryColRhs | rhs1 |
|---|---|
| {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
출력:
| geometryColLhs | lhs1 | geometryColRhs | rhs1 |
|---|---|---|---|
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 43.0 | {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
예시 3: null 처리
인자 값:
Join key: [(geometryColLhs,geometryColRhs)]Left dataset: ri.foundry.main.dataset.leftRight dataset: ri.foundry.main.dataset.right
입력:
ri.foundry.main.dataset.left
| geometryColLhs | lhs1 |
|---|---|
| null | 42.0 |
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 43.0 |
ri.foundry.main.dataset.right
| geometryColRhs | rhs1 |
|---|---|
| {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
| {"coordinates": [0.0, 0.0], "type":"Point"} | rhsVal2 |
| null | rhsVal3 |
출력:
| geometryColLhs | lhs1 | geometryColRhs | rhs1 |
|---|---|---|---|
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 43.0 | {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 43.0 | {"coordinates": [0.0, 0.0], "type":"Point"} | rhsVal2 |
예시 4: null 처리
인자 값:
Join key: [(geometryColLhs,geometryColRhs)]Left dataset: ri.foundry.main.dataset.leftRight dataset: ri.foundry.main.dataset.right
입력:
ri.foundry.main.dataset.left
| geometryColLhs | lhs1 |
|---|---|
| null | 42.0 |
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 43.0 |
ri.foundry.main.dataset.right
| geometryColRhs | rhs1 |
|---|---|
| {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
출력:
| geometryColLhs | lhs1 | geometryColRhs | rhs1 |
|---|---|---|---|
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 43.0 | {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
예시 5: 경계 조건
인자 값:
Join key: [(geometryColLhs,geometryColRhs)]Left dataset: ri.foundry.main.dataset.leftRight dataset: ri.foundry.main.dataset.right
입력:
ri.foundry.main.dataset.left
| geometryColLhs | lhs1 |
|---|---|
| {"coordinates": [[[170.0, 170.0], [190.0, 170.0], [190.0, 190.0], [170.0, 190.0], [170.0, 170.0]]], "type": "Polygon"} | 42.0 |
ri.foundry.main.dataset.right
| geometryColRhs | rhs1 |
|---|---|
| {"coordinates": [[[175.0, 175.0], [195.0, 175.0], [195.0, 195.0], [175.0, 195.0], [175.0, 175.0]]], "type": "Polygon"} | rhsVal1 |
출력:
| geometryColLhs | lhs1 | geometryColRhs | rhs1 |
|---|---|---|---|
| {"coordinates": [[[170.0, 170.0], [190.0, 170.0], [190.0, 190.0], [170.0, 190.0], [170.0, 170.0]]], "type": "Polygon"} | 42.0 | {"coordinates": [[[175.0, 175.0], [195.0, 175.0], [195.0, 195.0], [175.0, 195.0], [175.0, 175.0]]], "type": "Polygon"} | rhsVal1 |
예시 6: 경계 조건
인자 값:
Join key: [(geometryColLhs,geometryColRhs)]Left dataset: ri.foundry.main.dataset.leftRight dataset: ri.foundry.main.dataset.right
입력:
ri.foundry.main.dataset.left
| geometryColLhs | lhs1 |
|---|---|
| {"coordinates": [[[0.0, 0.0], [5.0, 5.0], [0.0, 10.0], [10.0, 5.0], [0.0, 0.0]]], "type":"Polygon"} | 42.0 |
ri.foundry.main.dataset.right
| geometryColRhs | rhs1 |
|---|---|
| {"coordinates": [[[0.0, 5.0], [2.5, 7.5], [4.0, 5.0], [2.5, 2.5], [0.0, 5.0]]], "type":"Polygon"} | rhsVal1 |
| {"coordinates": [[[0.0, 5.0], [2.0, 7.0], [4.0, 5.0], [2.0, 3.0], [0.0, 5.0]]], "type":"Polygon"} | rhsVal2 |
출력:
| geometryColLhs | lhs1 | geometryColRhs | rhs1 |
|---|---|---|---|
| {"coordinates": [[[0.0, 0.0], [5.0, 5.0], [0.0, 10.0], [10.0, 5.0], [0.0, 0.0]]], "type":"Polygon"} | 42.0 | {"coordinates": [[[0.0, 5.0], [2.5, 7.5], [4.0, 5.0], [2.5, 2.5], [0.0, 5.0]]], "type":"Polygon"} | rhsVal1 |
예시 7: 경계 조건
인자 값:
Join key: [(geometryColLhs,geometryColRhs)]Left dataset: ri.foundry.main.dataset.leftRight dataset: ri.foundry.main.dataset.right
입력:
ri.foundry.main.dataset.left
| geometryColLhs |
|---|
| {"coordinates": [0.0, 0.0], "type":"Point"} |
ri.foundry.main.dataset.right
| geometryColRhs |
|---|
| {"coordinates": [0.0, 0.0], "type":"Point"} |
| {"coordinates": [15.0, 15.0], "type":"Point"} |
출력:
| geometryColLhs | geometryColRhs |
|---|---|
| {"coordinates": [0.0, 0.0], "type":"Point"} | {"coordinates": [0.0, 0.0], "type":"Point"} |
예시 8: 경계 조건
인자 값:
Join key: [(geometryColLhs,geometryColRhs)]Left dataset: ri.foundry.main.dataset.leftRight dataset: ri.foundry.main.dataset.right
입력:
ri.foundry.main.dataset.left
| geometryColLhs | lhs1 |
|---|---|
| {"coordinates": [0.0, 0.0], "type":"Point"} | 42.0 |
ri.foundry.main.dataset.right
| geometryColRhs | rhs1 |
|---|---|
| {"coordinates": [0.0, 0.0], "type":"Point"} | rhsVal1 |
| {"coordinates": [15.0, 15.0], "type":"Point"} | rhsVal2 |
출력:
| geometryColLhs | lhs1 | geometryColRhs | rhs1 |
|---|---|---|---|
| {"coordinates": [0.0, 0.0], "type":"Point"} | 42.0 | {"coordinates": [0.0, 0.0], "type":"Point"} | rhsVal1 |
예시 9: 경계 조건
인자 값:
Join key: [(geometryColLhs,geometryColRhs)]Left dataset: ri.foundry.main.dataset.leftRight dataset: ri.foundry.main.dataset.right
입력:
ri.foundry.main.dataset.left
| geometryColLhs | lhs1 |
|---|---|
| {"coordinates": [[[0.0, 0.0, 0.0], [10.0, 0.0, 0.0], [10.0, 10.0, 0.0], [10.0, 10.0, 10.0], [0.0, 10.0, 10.0], [0.0, 0.0, 10.0], [0.0, 0.0, 0.0]]], "type": "Polygon"} | 42.0 |
ri.foundry.main.dataset.right
| geometryColRhs | rhs1 |
|---|---|
| {"coordinates": [[[2.0, 2.0, 2.0], [7.0, 2.0, 2.0], [7.0, 7.0, 2.0], [7.0, 7.0, 7.0], [2.0, 7.0, 7.0], [2.0, 2.0, 7.0], [2.0, 2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
| {"coordinates": [[[12.0, 12.0, 12.0], [17.0, 12.0, 12.0], [17.0, 17.0, 12.0], [17.0, 17.0, 17.0], [12.0, 17.0, 17.0], [12.0, 12.0, 17.0], [12.0, 12.0, 12.0]]], "type": "Polygon"} | rhsVal2 |
출력:
| geometryColLhs | lhs1 | geometryColRhs | rhs1 |
|---|---|---|---|
| {"coordinates": [[[0.0, 0.0, 0.0], [10.0, 0.0, 0.0], [10.0, 10.0, 0.0], [10.0, 10.0, 10.0], [0.0, 10.0, 10.0], [0.0, 0.0, 10.0], [0.0, 0.0, 0.0]]], "type": "Polygon"} | 42.0 | {"coordinates": [[[2.0, 2.0, 2.0], [7.0, 2.0, 2.0], [7.0, 7.0, 2.0], [7.0, 7.0, 7.0], [2.0, 7.0, 7.0], [2.0, 2.0, 7.0], [2.0, 2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |