Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Переключайте службы с помощью раскрывающегося списка Версия. Дополнительные сведения о навигации.
Область применения: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel
Вычисляет точку в строке или многострочной линии, которая ближе всего к заданной точке на Земле.
Синтаксис
geo_closest_point_on_line(
долгота,широта,lineString)
Дополнительные сведения о соглашениях синтаксиса.
Параметры
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
| долгота | real |
✔️ | Значение геопространственной координаты долготы в градусах. Допустимое значение находится в диапазоне [-180, +180]. |
| широта | real |
✔️ | Значение широты геопространственной координаты в градусах. Допустимое значение находится в диапазоне [-90, +90]. |
| lineString | dynamic |
✔️ | Строка или многострочный формат GeoJSON. |
Возвраты
Точка в формате GeoJSON и динамический тип данных в строке или многострочной линии, которая является ближайшей к заданной точке на Земле. Если координата или строкаString недопустимы, запрос создает результат NULL.
Примечание.
- Геопространственные координаты интерпретируются как представленные эталонной системой координат WGS-84 .
- Геостатический datum, используемый для измерения расстояния на Земле является сферой. Границы линии — геодесик на сфере.
- Если границы линии ввода являются прямыми декартовыми линиями, рассмотрите возможность использования geo_line_densify() для преобразования планарных ребер в геодесетики.
- Чтобы вычислить расстояние между ближайшей точкой линии или многострочной линией к заданной точке, используйте geo_distance_point_to_line()
Определение и ограничения 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 градусов. Выбран самый короткий край между двумя вершинами.
Подсказка
- Использование литералов LineString или MultiLineString может привести к повышению производительности.
Примеры
Следующий пример находит точку на дороге, которая ближе всего к аэропорту Северного Лас-Вегаса.
print point_on_line = geo_closest_point_on_line(-115.199625, 36.210419, dynamic({ "type":"LineString","coordinates":[[-115.115385,36.229195],[-115.136995,36.200366],[-115.140252,36.192470],[-115.143558,36.188523],[-115.144076,36.181954],[-115.154662,36.174483],[-115.166431,36.176388],[-115.183289,36.175007],[-115.192612,36.176736],[-115.202485,36.173439],[-115.225355,36.174365]]}))
Выходные данные
| point_on_line |
|---|
| { "type": "Point", "координаты": [ -115.192612, 36.176736]} |
В следующем примере возвращается пустой результат из-за недопустимого ввода LineString.
print isnull(geo_closest_point_on_line(1,1, dynamic({ "type":"LineString"})))
Выходные данные
| результат |
|---|
| правда |
В следующем примере возвращается пустой результат из-за недопустимого ввода координат.
print result = isnull(geo_closest_point_on_line(300, 3, dynamic({ "type":"LineString","coordinates":[[1,1],[2,2]]})))
Выходные данные
| результат |
|---|
| правда |