geo_line_buffer()

Переключение служб с помощью раскрывающегося списка версий . Дополнительные сведения о навигации.
Область применения: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel

Вычисляет многоугольник или многоугольник, содержащий все точки в пределах заданного радиуса входной линии или многострочного на Земле.

Синтаксис

geo_line_buffer( Допустимое значение радиуса,,

Дополнительные сведения о соглашениях синтаксиса.

Параметры

Имя (название) Тип Обязательно Описание
lineString dynamic ✔️ LineString или MultiLineString в формате GeoJSON.
радиус real ✔️ Радиус буфера в метрах. Допустимое значение должно быть положительным.
толерантность real Определяет допустимое значение в метрах, определяющее, сколько многоугольник может отклоняться от идеального радиуса. Если не задано, по умолчанию используется значение 10. Допустимость не должна превышать 0,0001% радиуса. Указание допустимости больше радиуса снижает допустимое значение до наибольшего возможного значения ниже радиуса.

Возвраты

Многоугольник или MultiPolygon вокруг входного LineString или MultiLineString. Если координаты или радиус или допустимость недопустимы, запрос создает результат NULL.

Примечание.

  • Геопространственные координаты интерпретируются как представленные эталонной системой координат WGS-84 .
  • Геостатический datum , используемый для измерения расстояния на Земле является сферой.
  • Если границы линии ввода являются прямыми декартовыми линиями, рассмотрите возможность использования geo_line_densify() для преобразования планарных ребер в геодесетики.
  • Конечные капки линий круглые.
  • Обе стороны линий буферичены.

Определение и ограничения LineString

dynamic({"type": "LineString","координаты": [[lng_1,lat_1], [lng_2,lat_2], ..., [lng_N,lat_N]]})

dynamic({"type": "MultiLineString","координаты": [[line_1, line_2, ..., line_N]})

  • Массив координат LineString должен содержать не менее двух записей.
  • Координаты [долгота, широта] должны быть допустимыми, где долгота является реальным числом в диапазоне [-180, +180] и широта является реальным числом в диапазоне [-90, +90].
  • Длина края должна быть меньше 180 градусов. Будет выбран самый короткий край между двумя вершинами.

Примеры

В следующем примере вычисляется многоугольник вокруг линии с радиусом от 4 метров и до 0,1 счетчика.

let line = dynamic({"type":"LineString","coordinates":[[-80.66634997047466,24.894526340592122],[-80.67373241820246,24.890808090321286]]});
print buffer = geo_line_buffer(line, 4, 0.1)
буфер
{"type": "Polygon", "координаты": [ ... ]}

Следующий запрос вычисляет буфер вокруг каждой строки и объединяет результат

datatable(line:dynamic)
[
    dynamic({"type":"LineString","coordinates":[[14.429214068940496,50.10043066548272],[14.431184174126173,50.10046525983731]]}),
    dynamic({"type":"LineString","coordinates":[[14.43030222687753,50.100780677801936],[14.4303847111523,50.10020274910934]]})
]
| project buffer = geo_line_buffer(line, 2, 0.1)
| summarize polygons = make_list(buffer)
| project result = geo_union_polygons_array(polygons)
результат
{"type": "Polygon", "координаты": [ ... ]}

В следующем примере возвращается значение true из-за недопустимой строки.

print buffer = isnull(geo_line_buffer(dynamic({"type":"LineString"}), 5))
буфер
Истина

В следующем примере возвращается значение true из-за недопустимого радиуса.

print buffer = isnull(geo_line_buffer(dynamic({"type":"LineString","coordinates":[[0,0],[1,1]]}), 0))
буфер
Истина