你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

geo_closest_point_on_polygon()

适用于:✅Azure 数据资源管理器Azure Monitor✅ Sentinel

计算多边形或多多边形上的点,该点最接近地球上给定点。

语法

geo_closest_point_on_polygon( 经度,纬度,多边形)

详细了解语法约定

参数

名字 类型 必选 说明
longitude real ✔️ 地理空间坐标,经度值(以度为单位)。 有效值为实数,在 [-180, +180] 范围内。
latitude real ✔️ 地理空间坐标,纬度值(以度为单位)。 有效值为实数,在 [-90, +90] 范围内。
多边形 dynamic ✔️ GeoJSON 格式的多边形或多多边形。

退货

GeoJSON 格式中的点和多边形或多多边形上的动态数据类型的点,该点最接近地球上给定点。 如果多边形包含输入点,则结果与同一个点。 如果坐标或多边形无效,查询将生成 null 结果。

注释

多边形定义和约束

dynamic({“type”: “Polygon”,“coordinates”: [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N]})

dynamic({“type”: “MultiPolygon”,“coordinates”: [[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]]。 只能有一个 shell。
  • LinearRingHole 是可选的,定义为 clockwise 坐标的有序数组 [[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]]。 可以有任意数量的内环和孔。
  • 线性顶点必须具有至少三个坐标。 第一个坐标必须等于最后一个坐标。 至少需要四个条目。
  • 坐标 [经度, 纬度] 必须有效。 经度必须是 [-180, +180] 范围内的实数,纬度必须是 [-90, +90] 范围内的实数。
  • LinearRingShell 将括在球体的大部分部分。 LinearRing 将球体划分为两个区域。 将选择两个区域中的较小区域。
  • 线性边缘长度必须小于 180 度。 将选择两个顶点之间的最短边缘。
  • LinearRings 不得交叉,不得共享边缘。 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”,“coordinates”: [-73.981205580153926, 40.769359452843211] }

下面的示例由于坐标输入无效而返回 null 结果。

print result = isnull(geo_closest_point_on_polygon(500,1,dynamic({"type": "Polygon","coordinates": [[[0,0],[10,10],[10,1],[0,0]]]})))

输出

结果

下面的示例由于多边形输入无效而返回 null 结果。

print result = isnull(geo_closest_point_on_polygon(1,1,dynamic({"type": "Polygon","coordinates": [[[0,0],[10,10],[10,10],[0,0]]]})))

输出

结果