你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
计算多边形或多多边形上的点,该点最接近地球上给定点。
语法
geo_closest_point_on_polygon(
经度,
纬度,
多边形)
详细了解语法约定。
参数
名字 | 类型 | 必选 | 说明 |
---|---|---|---|
longitude | real |
✔️ | 地理空间坐标,经度值(以度为单位)。 有效值为实数,在 [-180, +180] 范围内。 |
latitude | real |
✔️ | 地理空间坐标,纬度值(以度为单位)。 有效值为实数,在 [-90, +90] 范围内。 |
多边形 | dynamic |
✔️ | GeoJSON 格式的多边形或多多边形。 |
退货
GeoJSON 格式中的点和多边形或多多边形上的动态数据类型的点,该点最接近地球上给定点。 如果多边形包含输入点,则结果与同一个点。 如果坐标或多边形无效,查询将生成 null 结果。
注释
- 地理空间坐标解释为 WGS-84 坐标参考系统表示。
- 用于地球上测量 的地缘基准 是一个球体。 多边形边缘是球体上的 测地线 。
- 如果输入多边形边缘是直笛卡尔线,请考虑使用 geo_polygon_densify() 将平面边缘转换为测地线。
- 若要计算多边形上最接近点或多多边形到给定点之间的距离,请使用 geo_distance_point_to_polygon()
多边形定义和约束
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]]]})))
输出
结果 |
---|
是 |