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

geo_point_to_s2cell()

适用于:✅Microsoft Fabric✅Azure 数据资源管理器Azure MonitorMicrosoft✅ Sentinel

计算地理位置的 S2 单元格令牌字符串值。

详细了解 S2 单元格层次结构。 S2 单元格是一个有用的地理空间聚类分析工具。 S2 单元格是球面上的单元格,具有测地线边。 S2 单元格是划分地球表面的层次结构的一部分。 它们最多有 31 个级别,范围从零到 30,用于定义单元格细分的次数。 级别从零级最大覆盖范围开始,面积覆盖达到 85,011,012.19km²,到 30 级最小覆盖范围 0.44 cm²。 由于 S2 单元格在较高级别细分,因此单元格中心将保持良好。 两个地理位置可能会非常接近,但具有不同的 S2 单元格标记。

注意

如果对根据经度 x 和纬度 y 计算的 S2 单元格令牌字符串调用 geo_s2cell_to_central_point() 函数,该函数不一定返回 x 和 y。

详细了解 S2 单元格层次结构

语法

geo_point_to_s2cell(longitude, latitude, [ level ])

详细了解语法约定

参数

客户 类型​​ 必需 说明
longitude real ✔️ 地理空间坐标经度值(度)。 有效值为 [-180, +180] 范围内的实数。
latitude real ✔️ 地理空间坐标纬度值(度)。 有效值为 [-90, +90] 范围内的实数。
level int 定义所请求的单元格级别。 支持的值范围为 [0, 30]。 如果未指定,则使用默认值 11

返回

给定地理位置的 S2 单元格令牌字符串值。 如果坐标或级别无效,则查询将生成空结果。

每个级别值的 S2 单元格近似面积覆盖范围

对于每个级别,S2 单元格的大小相似,但不完全相等。 附近的单元格大小趋于相等。

级别 最小随机单元格边缘长度(英国) 最大随机单元格边缘长度(美国)
0 7842 km 7842 km
1 3921 km 5004 km
2 1825 km 2489 km
3 840 km 1310 km
4 432 km 636 km
5 210 km 315 km
6 108 km 156 km
7 54 km 78 km
8 27 km 39 km
9 14 km 20 km
10 7 km 10 km
11 3 km 5 km
12 1699 m 2 km
13 850 m 1225 m
14 425 m 613 m
15 212 m 306 m
16 106 m 153 m
17 53 m 77 m
18 27 m 38 m
19 13 m 19 m
20 7 m 10 m
21 3 m 5 m
22 166 cm 2 m
23 83 cm 120 cm
24 41 cm 60 cm
25 21 cm 30 cm
26 10 cm 15 cm
27 5 cm 7 cm
28 2 cm 4 cm
29 12 mm 18 mm
30 6 mm 9 mm

表源可以在此 S2 单元格统计资源中找到。

有关与其他可用网格系统的比较,请参阅使用 Kusto 查询语言进行地理空间聚类分析

示例

由 S2 单元格聚合的美国风暴事件

以下示例查找通过 S2 单元格聚合的美国风暴事件。

StormEvents
| project BeginLon, BeginLat
| summarize by hash=geo_point_to_s2cell(BeginLon, BeginLat, 5)
| project geo_s2cell_to_central_point(hash)
| render scatterchart with (kind=map)

输出

呈现由 S2 单元格聚合的美国风暴事件地图的屏幕截图。

以下示例计算了 S2 单元格 ID。

print s2cell = geo_point_to_s2cell(-80.195829, 25.802215, 8)

输出

s2cell
88d9b

查找坐标组

以下示例查找坐标组。 组中的每对坐标都位于 S2 单元格中,最大面积为 1632.45 km²。

datatable(location_id:string, longitude:real, latitude:real)
[
  "A", 10.1234, 53,
  "B", 10.3579, 53,
  "C", 10.6842, 53,
]
| summarize count = count(),                                        // items per group count
            locations = make_list(location_id)                      // items in the group
            by s2cell = geo_point_to_s2cell(longitude, latitude, 8) // s2 cell of the group

输出

s2cell 计数 locations
47b1d 2 ["A","B"]
47ae3 1 ["C"]

空结果

由于坐标输入无效,以下示例生成空结果。

print s2cell = geo_point_to_s2cell(300,1,8)

输出

s2cell

由于级别输入无效,以下示例生成空结果。

print s2cell = geo_point_to_s2cell(1,1,35)

输出

s2cell

由于级别输入无效,以下示例生成空结果。

print s2cell = geo_point_to_s2cell(1,1,int(null))

输出

s2cell