geo_line_locate_point()

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

Вычисляет значение дроби в виде соотношения длины линии от начала строки до точки на строке, которая ближе всего к заданной точке и целой длине линии на Земле.

Синтаксис

geo_line_locate_point( lineString, долгота,широта,[ use_spheroid ])

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

Параметры

Имя Тип Обязательно Описание
lineString dynamic ✔️ Строка в формате GeoJSON.
долгота real ✔️ Значение геопространственной координаты долготы в градусах. Допустимое значение находится в диапазоне [-180, +180].
широта real ✔️ Значение широты геопространственной координаты в градусах. Допустимое значение находится в диапазоне [-90, +90].
use_spheroid bool Если false будет использовать сферу в качестве геодимической datum для измерения расстояния. Если true будет измерять расстояние с помощью сфероида. Если не указано, используется значение false по умолчанию.

Возвраты

Значение дроби линии от 0 до 1 (от 0 до 100%) в качестве соотношения линии от начала до точки на линии, которая ближе всего к заданной точке и целой линии на Земле. Если значение строки или координат недопустимо, запрос создает результат NULL.

Примечание.

  • Геопространственные координаты интерпретируются как представленные эталонной системой координат WGS-84 .
  • Сегменты линий являются геодесиками в области, если "use_spheroid" = false. Если значение "use_spheroid" = true, сегменты линий будут геодесексическими на сфероиде. Большинство приложений должны измерять расстояние с помощью сферы, которая является более эффективной
  • Если границы линии ввода являются прямыми декартовыми линиями, рассмотрите возможность использования geo_line_densify() для преобразования планарных ребер в геодесетики.
  • Входные данные не должны содержать более одной строки.
  • Если строка входной строки имеет более одной точки в строке на равном расстоянии от входной точки, она не гарантирует, какой из них выбран.
  • Чтобы вычислить точку на дроби в строке, используйте geo_line_interpolate_point()

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

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

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

Примеры

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

let line = dynamic({"type":"LineString","coordinates":[[-73.95796, 40.80042], [-73.97317, 40.764486]]});
print fraction = geo_line_locate_point(line, -73.965, 40.792);

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

дробь
0.25560135100307552

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

print is_bad_line = isnull(geo_line_locate_point(dynamic({"type":"LineString","coordinates":[[1, 1]]}), 1, 1))

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

is_bad_line
правда