다음을 통해 공유


geo_intersection_2polygons()

적용 대상: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

두 다각형 또는 다각형의 교집합을 계산합니다.

구문

geo_intersection_2polygons(polygon1,polygon1)

구문 규칙에 대해 자세히 알아봅니다.

매개 변수

이름 Type 필수 설명
polygon1 dynamic ✔️ GeoJSON 형식다각형 또는 다각형입니다.
다각형2 dynamic ✔️ GeoJSON 형식다각형 또는 다각형입니다.

반품

GeoJSON 형식 및 동적 데이터 형식의 교집합입니다. Polygon 또는 MultiPolygon이 유효하지 않은 경우 쿼리는 null 결과를 생성합니다.

참고 항목

다각형 정의 및 제약 조건

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