Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Переключайте службы с помощью раскрывающегося списка Версия. Дополнительные сведения о навигации.
Область применения: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel
Вычисляет точку на многоугольнике или многополигоне, который ближе всего к заданной точке на Земле.
Синтаксис
geo_closest_point_on_polygon(
долгота,широта,многоугольник)
Дополнительные сведения о соглашениях синтаксиса.
Параметры
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
| долгота | real |
✔️ | Геопространственные координаты, значение долготы в градусах. Допустимое значение — это реальное число и в диапазоне [-180, +180]. |
| широта | real |
✔️ | Геопространственные координаты, значение широты в градусах. Допустимое значение — это реальное число и в диапазоне [-90, +90]. |
| многоугольник | dynamic |
✔️ | Многоугольник или многополигон в формате GeoJSON. |
Возвраты
Точка в формате GeoJSON и динамический тип данных на многоугольнике или многополигоне, который является ближайшим к заданной точке на Земле. Если многоугольник содержит входную точку, результат с той же точкой. Если координаты или многоугольники недопустимы, запрос создает результат NULL.
Примечание.
- Геопространственные координаты интерпретируются как представленные эталонной системой координат WGS-84 .
- Геопоток, используемый для измерений на Земле, является сферой. Границы многоугольников — геодесик на сфере.
- Если границы входных многоугольников являются прямыми декартовыми линиями, рассмотрите возможность использования geo_polygon_densify() для преобразования плановых ребер в геодесезику.
- Чтобы вычислить расстояние между ближайшей точкой на многоугольнике или многоугольнике для заданной точки, используйте geo_distance_point_to_polygon()
Определение и ограничения многоугольника
dynamic({"type": "Polygon","координаты": [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N]})
dynamic({"type": "MultiPolygon","координаты": [[LinearRingShell, LinearRingHole_1,..., LinearRingHole_N],..., [LinearRingShell, LinearRingHole_1,..., LinearRingHole_M]})
- LinearRingShell является обязательным и определяется как упорядоченный
counterclockwiseмассив координат [[lng_1,lat_1]],...,[lng_i,lat_i],...,[lng_j;lat_j]],...,[lng_1,lat_1]]. Может быть только одна оболочка. - LinearRingHole является необязательным и определяется как упорядоченный
clockwiseмассив координат [[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j;lat_j]],...,[lng_1,lat_1]]. Может быть любое количество внутренних колец и отверстий. - Вершины LinearRing должны отличаться по крайней мере тремя координатами. Первая координата должна быть равна последней. Требуются по крайней мере четыре записи.
- Координаты [долгота, широта] должны быть допустимыми. Долгота должна быть реальным числом в диапазоне [-180, +180], а широта должна быть реальным числом в диапазоне [-90, +90].
- LinearRingShell заключает в себя не более половины сферы. LinearRing делит сферу на два региона. Будет выбрано меньшее из двух регионов.
- Длина края линейного ринга должна быть меньше 180 градусов. Будет выбран самый короткий край между двумя вершинами.
- Линейные ринги не должны пересекать границы и не должны совместно использовать края. LinearRings может совместно использовать вершины.
- Многоугольник не обязательно содержит вершины.
Подсказка
- Использование литеральных многоугольников может привести к повышению производительности.
Примеры
В следующем примере вычисляется расположение в Центральном парке, которое является ближайшим к заданной точке.
let central_park = dynamic({"type":"Polygon","coordinates":[[[-73.9495,40.7969],[-73.95807266235352,40.80068603561921],[-73.98201942443848,40.76825672305777],[-73.97317886352539,40.76455136505513],[-73.9495,40.7969]]]});
print geo_closest_point_on_polygon(-73.9839, 40.7705, central_park)
Выходные данные
| print_0 |
|---|
| {"type": "Point", "координаты": [-73.981205580153926, 40.769359452843211] } |
В следующем примере возвращается пустой результат из-за недопустимого ввода координат.
print result = isnull(geo_closest_point_on_polygon(500,1,dynamic({"type": "Polygon","coordinates": [[[0,0],[10,10],[10,1],[0,0]]]})))
Выходные данные
| результат |
|---|
| правда |
В следующем примере возвращается пустой результат из-за недопустимого ввода многоугольника.
print result = isnull(geo_closest_point_on_polygon(1,1,dynamic({"type": "Polygon","coordinates": [[[0,0],[10,10],[10,10],[0,0]]]})))
Выходные данные
| результат |
|---|
| правда |