지구의 입력 다각형 또는 다각형의 지정된 반경 내에 있는 모든 점을 포함하는 다각형 또는 다각형을 계산합니다.
문법
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))
| 완충기 |
|---|
| 진실 |