geo_point_to_s2cell()
计算地理位置的 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 单元格 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 |
---|