geo_intersection_2polygons()
적용 대상: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
두 다각형 또는 다각형의 교집합을 계산합니다.
구문
geo_intersection_2polygons(
polygon1,
polygon1)
구문 규칙에 대해 자세히 알아봅니다.
매개 변수
이름 | Type | 필수 | 설명 |
---|---|---|---|
polygon1 | dynamic |
✔️ | GeoJSON 형식의 다각형 또는 다각형입니다. |
다각형2 | dynamic |
✔️ | GeoJSON 형식의 다각형 또는 다각형입니다. |
반품
GeoJSON 형식 및 동적 데이터 형식의 교집합입니다. Polygon 또는 MultiPolygon이 유효하지 않은 경우 쿼리는 null 결과를 생성합니다.
참고 항목
- 지리 공간적 좌표는 WGS-84 좌표 참조 시스템에서 나타내는 것으로 해석됩니다.
- 지구 측정에 사용되는 측지 데이텀은 구입니다. 다각형 가장자리는 구의 측지식 입니다.
- 입력 다각형 가장자리가 직선 카티전 선인 경우 geo_polygon_densify()를 사용하여 평면 가장자리를 측지로 변환하는 것이 좋습니다.
다각형 정의 및 제약 조건
dynamic({"type": "Polygon","coordinates": [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N ]})
dynamic({"type": "MultiPolygon","coordinates": [[LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N ],..., [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_M]]})
- LinearRingShell은 [[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]] 순서가 지정된 좌표 배열로 정의
counterclockwise
됩니다. 셸은 하나만 있을 수 있습니다. - LinearRingHole은 선택 사항이며 [[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]]의 정렬된 배열로 정의
clockwise
됩니다. 내부 링과 구멍이 있을 수 있습니다. - LinearRing 꼭짓점은 세 개 이상의 좌표로 구분되어야 합니다. 첫 번째 좌표는 마지막 좌표와 같아야 합니다. 4개 이상의 항목이 필요합니다.
- 좌표 [경도, 위도]는 유효해야 합니다. 경도는 [-180, +180] 범위의 실수여야 하며 위도는 [-90, +90] 범위의 실수여야 합니다.
- LinearRingShell은 구의 최대 절반을 묶습니다. LinearRing은 구를 두 영역으로 나눕니다. 두 지역 중 더 작은 지역이 선택됩니다.
- 선형 가장자리 길이는 180도 미만이어야 합니다. 두 꼭짓점 사이의 가장 짧은 가장자리가 선택됩니다.
- LinearRings는 교차해서는 안 되며 가장자리를 공유해서는 안 됩니다. LinearRings는 꼭짓점을 공유할 수 있습니다.
- 다각형은 꼭짓점을 포함합니다.
팁
- 리터럴 다각형 또는 MultiPolygon을 사용하면 성능이 향상될 수 있습니다.
예제
다음 예제에서는 두 다각형 간의 교집합을 계산합니다. 이 경우 결과는 다각형입니다.
let polygon1 = dynamic({"type":"Polygon","coordinates":[[[-73.9630937576294,40.77498840732385],[-73.963565826416,40.774383111780914],[-73.96205306053162,40.773745311181585],[-73.96160781383514,40.7743912365898],[-73.9630937576294,40.77498840732385]]]});
let polygon2 = dynamic({"type":"Polygon","coordinates":[[[-73.96213352680206,40.775045280447145],[-73.9631313085556,40.774578106920345],[-73.96207988262177,40.77416780398293],[-73.96213352680206,40.775045280447145]]]});
print intersection = geo_intersection_2polygons(polygon1, polygon2)
출력
intersection |
---|
{"type": "Polygon", "coordinates": [[[-73.962105776437156,40.774591360999679],[-73.962642403166868,40.774807020251778],[-73.9631313085556,40.774578106920352],[-73.962079882621765,40.774167803982927],[-73.962105776437156,40.774591360999679]]]} |
다음 예제에서는 두 다각형 간의 교집합을 계산합니다. 이 경우 결과는 포인트입니다.
let polygon1 = dynamic({"type":"Polygon","coordinates":[[[2,45],[0,45],[1,44],[2,45]]]});
let polygon2 = dynamic({"type":"Polygon","coordinates":[[[3,44],[2,45],[2,43],[3,44]]]});
print intersection = geo_intersection_2polygons(polygon1, polygon2)
출력
intersection |
---|
{"type": "Point","coordinates": [2,45]} |
다음 두 다각형 교집합은 컬렉션입니다.
let polygon1 = dynamic({"type":"Polygon","coordinates":[[[2,45],[0,45],[1,44],[2,45]]]});
let polygon2 = dynamic({"type":"MultiPolygon","coordinates":[[[[3,44],[2,45],[2,43],[3,44]]],[[[1.192,45.265],[1.005,44.943],[1.356,44.937],[1.192,45.265]]]]});
print intersection = geo_intersection_2polygons(polygon1, polygon2)
출력
intersection |
---|
{"type": "GeometryCollection","geometries": [ { "type": "Point", "coordinates": [2, 45]}, { "type": "Polygon", "좌표": [[[1.327075526410679,45.003909145068739],[1.0404565374899824,45.0043564030665 52],[1.005,44.943],[1.356,44.937],[1.3227075526410679,45.003909145068739]]}]} |
다음 두 다각형은 교차하지 않습니다.
let polygon1 = dynamic({"type":"Polygon","coordinates":[[[2,45],[0,45],[1,44],[2,45]]]});
let polygon2 = dynamic({"type":"Polygon","coordinates":[[[3,44],[3,45],[2,43],[3,44]]]});
print intersection = geo_intersection_2polygons(polygon1, polygon2)
출력
intersection |
---|
{"type": "GeometryCollection", "geometries": []} |
다음 예제에서는 관심 영역 다각형과 교차하는 미국의 모든 카운티를 찾습니다.
let area_of_interest = dynamic({"type":"Polygon","coordinates":[[[-73.96213352680206,40.775045280447145],[-73.9631313085556,40.774578106920345],[-73.96207988262177,40.77416780398293],[-73.96213352680206,40.775045280447145]]]});
US_Counties
| project name = features.properties.NAME, county = features.geometry
| project name, intersection = geo_intersection_2polygons(county, area_of_interest)
| where array_length(intersection.geometries) != 0
출력
name | intersection |
---|---|
뉴욕 | {"type": "Polygon","coordinates": [[[-73.96213352680206, 40.775045280447145], [-73.9631313085556, 40.774578106920345], [-73.96207988262177,40.77416780398293],[-73.96213352680206, 40.775045280447145]]} |
다음 예제에서는 다각형 중 하나가 유효하지 않으므로 null 결과를 반환합니다.
let central_park_polygon = dynamic({"type":"Polygon","coordinates":[[[-73.9495,40.7969],[-73.95807266235352,40.80068603561921],[-73.98201942443848,40.76825672305777],[-73.97317886352539,40.76455136505513],[-73.9495,40.7969]]]});
let invalid_polygon = dynamic({"type":"Polygon"});
print isnull(geo_intersection_2polygons(invalid_polygon, central_park_polygon))
출력
print_0 |
---|
1 |