다음을 통해 공유


지오_폴리곤_버퍼()

적용 대상: ✅Microsoft Fabric

지구의 입력 다각형 또는 다각형의 지정된 반경 내에 있는 모든 점을 포함하는 다각형 또는 다각형을 계산합니다.

문법

geo_polygon_buffer( 다각형,반지름,공차)

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

매개 변수

이름 유형 필수 설명
다각형 dynamic ✔️ GeoJSON 형식의 다각형 또는 다각형입니다.
반지름 real ✔️ 버퍼 반경(미터)입니다. 유효한 값은 양수여야 합니다.
공차 real 다각형이 이상적인 반경에서 얼마나 벗어날 수 있는지를 결정하는 공차(미터)를 정의합니다. 지정하지 않으면 기본값 10 이 사용됩니다. 허용 오차는 반지름의 0.0001% 미만이어야 합니다. 허용 오차를 반지름보다 크게 지정하면 허용 오차가 가능한 최대 값으로 반경 아래로 낮아질 수 있습니다.

반품

입력 다각형 또는 다각형 주위의 다각형 또는 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는 꼭짓점을 공유할 수 있습니다.
  • 다각형은 꼭짓점을 포함합니다.

예시

다음 예제에서는 반경이 10km인 입력 다각형 주위의 다각형을 계산합니다.

let polygon = dynamic({"type":"Polygon","coordinates":[[[139.813757,35.719666],[139.72558,35.71813],[139.727471,35.653231],[139.818721,35.657264],[139.813757,35.719666]]]});
print buffer = geo_polygon_buffer(polygon, 10000)
완충기
{"type": "Polygon","coordinates": [ ... ]}

다음 쿼리는 각 다각형 주위의 버퍼를 계산하고 결과를 통합합니다.

datatable(polygon:dynamic, radius:real )
[
    dynamic({"type":"Polygon","coordinates":[[[12.451218693639277,41.906457003556625],[12.445753852969375,41.90160968881543],[12.453514425793855,41.90361551885886],[12.451218693639277,41.906457003556625]]]}), 100,
    dynamic({"type":"Polygon","coordinates":[[[12.4566086734784,41.905119850039995],[12.453913683559591,41.903652663265234],[12.455485761012113,41.90146110630562],[12.4566086734784,41.905119850039995]]]}), 20
]
| project buffer = geo_polygon_buffer(polygon, radius)
| summarize polygons = make_list(buffer)
| project result = geo_union_polygons_array(polygons)
결과
{"type": "Polygon","coordinates": [ ... ]}

다음 예제에서는 잘못된 다각형으로 인해 true를 반환합니다.

print buffer = isnull(geo_polygon_buffer(dynamic({"type":"p"}), 1))
완충기
진실

다음 예제에서는 잘못된 반지름으로 인해 true를 반환합니다.

print buffer = isnull(geo_polygon_buffer(dynamic({"type":"Polygon","coordinates":[[[10,10],[0,10],[0,0],[10,10]]]}), 0))
완충기
진실