Поделиться через


geo_line_densify()

Область применения: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Преобразует планарные линии или многострочные ребра в геодесексы путем добавления промежуточных точек.

Синтаксис

geo_line_densify(допустимости lineString, [ preserve_crossing ],)

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

Параметры

Имя (название) Type Обязательно Описание
lineString dynamic ✔️ LineString или MultiLineString в формате GeoJSON.
tolerance int, long или real Определяет максимальное расстояние в метрах между исходным планарным краем и преобразованной геодесической граничной цепочкой. Поддерживаемые значения находятся в диапазоне [0.1, 10000]. Если не задано, по умолчанию используется значение 10.
preserve_crossing bool Если true, сохраняет пересечение границ по сравнению с таймериданом. Если не задано, по умолчанию используется значение false.

Возвраты

Динамическая строка в формате GeoJSON и динамическом типе данных. Если строка или допустимость недопустимая, запрос создаст результат NULL.

Примечание.

Геопространственные координаты интерпретируются как представленные эталонной системой координат WGS-84 .

Определение 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 градусов. Будет выбран самый короткий край между двумя вершинами.

Ограничения

  • Максимальное количество точек в тонированной строке ограничено 10485760.
  • Хранение строк в динамическом формате имеет ограничения размера.

Причины для использования

  • Формат GeoJSON определяет край между двумя точками как прямую декартовую линию при geo_line_densify() использовании геодесикации.
  • Решение об использовании геодесесных или планарных ребер может зависеть от набора данных и особенно актуально в длинных краях.

Примеры

В следующем примере помещается дорога на манхэттенском острове. Край короткий, а расстояние между планарным краем и его геодесесным аналогом меньше расстояния, указанного в допустимости. Таким образом, результат остается неизменным.

print densified_line = tostring(geo_line_densify(dynamic({"type":"LineString","coordinates":[[-73.949247, 40.796860],[-73.973017, 40.764323]]})))

Выходные данные

densified_line
{"type":"LineString","координаты":[-73.949247, 40.796860], [-73.973017, 40.764323]]}

В следующем примере показано, как уплотнить край около 130 км длины

print densified_line = tostring(geo_line_densify(dynamic({"type":"LineString","coordinates":[[50, 50], [51, 51]]})))

Выходные данные

densified_line
{"type":"LineString","координаты":[50,50],[50.125,50.125],[50.25,50.25],[50.375,50.375],[[50.375],[50.375],[50.375][50.5,50.5],[50.625,50.625],[50.75,50.75],[50.875,50,875],[51,51]]}

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

print densified_line = geo_line_densify(dynamic({"type":"LineString","coordinates":[[300,1],[1,1]]}))

Выходные данные

densified_line

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

print densified_line = geo_line_densify(dynamic({"type":"LineString","coordinates":[[1,1],[2,2]]}), 0)

Выходные данные

densified_line