处理 H3 索引的函数
H3 索引
H3 是一种地理索引系统,其中地球表面被划分为均匀的六角形单元格网格。该系统是分层的,即每个顶层的六角形("父级")可以分割成七个相等但较小的六角形("子级"),依此类推。
层级的级别称为 resolution
,可以取值从 0
到 15
,其中 0
是具有最大和最粗糙单元格的 base
级别。
经纬度对可以转换为 64 位 H3 索引,用于识别一个网格单元格。
H3 索引主要用于对位置进行分桶和其他地理空间操作。
H3 系统的完整描述可在 Uber Engineering 网站 上找到。
h3IsValid
验证该数字是否是有效的 H3 索引。
语法
参数
h3index
— 六角形索引编号。 UInt64。
返回值
示例
查询:
结果:
h3GetResolution
定义给定 H3 索引的分辨率。
语法
参数
h3index
— 六角形索引编号。 UInt64。
返回值
示例
查询:
结果:
h3EdgeAngle
计算 H3 六角形边的平均长度(以度数表示)。
语法
参数
resolution
— 索引分辨率。 UInt8。范围:[0, 15]
。
返回值
示例
查询:
结果:
h3EdgeLengthM
计算 H3 六角形边的平均长度(以米为单位)。
语法
参数
resolution
— 索引分辨率。 UInt8。范围:[0, 15]
。
返回值
示例
查询:
结果:
h3EdgeLengthKm
计算 H3 六角形边的平均长度(以公里为单位)。
语法
参数
resolution
— 索引分辨率。 UInt8。范围:[0, 15]
。
返回值
示例
查询:
结果:
geoToH3
返回具有指定分辨率的 H3 点索引 (lat, lon)
。
语法
参数
返回值
注意:在 ClickHouse v25.4 或更早版本中,geoToH3()
采用 (lon, lat)
的顺序。根据 ClickHouse v25.5,输入值的顺序为 (lat, lon)
。可以通过设置 geotoh3_argument_order = 'lon_lat'
恢复之前的行为。
示例
查询:
结果:
h3ToGeo
返回与提供的 H3 索引对应的质心经纬度。
语法
参数
h3Index
— H3 索引。 UInt64。
返回值
注意:在 ClickHouse v24.12 或更早版本中,h3ToGeo()
返回的值顺序为 (lon, lat)
。根据 ClickHouse v25.1,返回值的顺序为 (lat, lon)
。可以通过设置 h3togeo_lon_lat_result_order = true
恢复之前的行为。
示例
查询:
结果:
h3ToGeoBoundary
返回与提供的 H3 索引对应的边界的 (lat, lon)
对数组。
语法
参数
h3Index
— H3 索引。 UInt64。
返回值
示例
查询:
结果:
h3kRing
列出与给定六角形的半径为 k
的所有 H3 六角形,以随机顺序返回。
语法
参数
返回值
示例
查询:
结果:
h3GetBaseCell
返回 H3 索引的基单元编号。
语法
参数
index
— 六角形索引编号。 UInt64。
返回值
- 六角形基单元编号。 UInt8。
示例
查询:
结果:
h3HexAreaM2
返回给定分辨率的平均六角形面积(以平方米为单位)。
语法
参数
resolution
— 索引分辨率。范围:[0, 15]
。 UInt8。
返回值
- 面积(以平方米为单位)。 Float64。
示例
查询:
结果:
h3HexAreaKm2
返回给定分辨率的平均六角形面积(以平方公里为单位)。
语法
参数
resolution
— 索引分辨率。范围:[0, 15]
。 UInt8。
返回值
- 面积(以平方公里为单位)。 Float64。
示例
查询:
结果:
h3IndexesAreNeighbors
返回提供的 H3 索引是否是邻居。
语法
参数
返回值
示例
查询:
结果:
h3ToChildren
返回给定 H3 索引的子索引数组。
语法
参数
返回值
示例
查询:
结果:
h3ToParent
返回包含给定的 H3 索引的父(粗糙)索引。
语法
参数
返回值
- 父 H3 索引。 UInt64。
示例
查询:
结果:
h3ToString
将索引的 H3Index
表示转换为字符串表示。
参数
index
— 六角形索引编号。 UInt64。
返回值
- H3 索引的字符串表示。 String。
示例
查询:
结果:
stringToH3
将字符串表示转换为 H3Index
(UInt64)表示。
语法
参数
index_str
— H3 索引的字符串表示。 String。
返回值
- 六角形索引编号。出现错误时返回 0。 UInt64。
示例
查询:
结果:
h3GetResolution
返回 H3 索引的分辨率。
语法
参数
index
— 六角形索引编号。 UInt64。
返回值
- 索引分辨率。范围:
[0, 15]
。 UInt8。
示例
查询:
结果:
h3IsResClassIII
返回 H3 索引是否具有 III 类方向的分辨率。
语法
参数
index
— 六角形索引编号。 UInt64。
返回值
示例
查询:
结果:
h3IsPentagon
返回此 H3 索引是否表示一个五边形单元。
语法
参数
index
— 六角形索引编号。 UInt64。
返回值
示例
查询:
结果:
h3GetFaces
返回与给定的 H3 索引相交的20面体面。
语法
参数
index
— 六角形索引编号。 UInt64。
返回值
示例
查询:
结果:
h3CellAreaM2
返回与给定输入 H3 索引相对应的特定单元的确切面积(以平方米为单位)。
语法
参数
index
— 六角形索引编号。 UInt64。
返回值
- 单元面积(以平方米为单位)。 Float64。
示例
查询:
结果:
h3CellAreaRads2
返回与给定输入 H3 索引相对应的特定单元的确切面积(以平方弧度为单位)。
语法
参数
index
— 六角形索引编号。 UInt64。
返回值
- 单元面积(以平方弧度为单位)。 Float64。
示例
查询:
结果:
h3ToCenterChild
返回给定 H3 中包含的中心子(更细) H3 索引,按照指定的分辨率。
语法
参数
返回值
示例
查询:
结果:
h3ExactEdgeLengthM
返回由输入 h3 索引表示的单向边在米中的确切边长。
语法
参数
index
— 六角形索引编号。 UInt64。
返回值
- 确切边长(以米为单位)。 Float64。
示例
查询:
结果:
h3ExactEdgeLengthKm
返回由输入 h3 索引表示的单向边在公里中的确切边长。
语法
参数
index
— 六角形索引编号。 UInt64。
返回值
- 确切边长(以公里为单位)。 Float64。
示例
查询:
结果:
h3ExactEdgeLengthRads
返回由输入 h3 索引表示的单向边在弧度中的确切边长。
语法
参数
index
— 六角形索引编号。 UInt64。
返回值
- 确切边长(以弧度为单位)。 Float64。
示例
查询:
结果:
h3NumHexagons
返回给定分辨率下唯一 H3 索引的数量。
语法
参数
resolution
— 索引分辨率。范围:[0, 15]
。 UInt8。
返回值
- H3 索引的数量。 Int64。
示例
查询:
结果:
h3PointDistM
返回点对 GeoCoord 点(纬度/经度)对之间的"大圆"或"哈弗辛"距离(以米为单位)。
语法
参数
返回值
- 哈弗辛或大圆距离(以米为单位)。 Float64。
示例
查询:
结果:
h3PointDistKm
返回点对 GeoCoord 点(纬度/经度)对之间的"大圆"或"哈弗辛"距离(以公里为单位)。
语法
参数
返回值
- 哈弗辛或大圆距离(以公里为单位)。 Float64。
示例
查询:
结果:
h3PointDistRads
返回点对 GeoCoord 点(纬度/经度)对之间的"大圆"或"哈弗辛"距离(以弧度为单位)。
语法
参数
返回值
- 哈弗辛或大圆距离(以弧度为单位)。 Float64。
示例
查询:
结果:
h3GetRes0Indexes
返回所有分辨率 0 的 H3 索引数组。
语法
返回值
示例
查询:
结果:
h3GetPentagonIndexes
返回指定分辨率下的所有五边形 H3 索引。
语法
参数
resolution
— 索引分辨率。范围:[0, 15]
。 UInt8。
返回值
示例
查询:
结果:
h3Line
返回提供的两个索引之间的索引线。
语法
参数
返回值
表示提供的两个索引之间的索引线的 H3 索引数组。 Array(UInt64)。
示例
查询:
结果:
h3Distance
返回提供的两个索引之间的网格单元距离。
语法
参数
返回值
- 网格单元的数量。 Int64。
如果查找距离失败,则返回负数。
示例
查询:
结果:
h3HexRing
返回以所提供的原始 h3Index 为中心的六边形环的索引,长度为 k。
如果未遇到五边形变形,则返回 0。
语法
参数
返回值
示例
查询:
结果:
h3GetUnidirectionalEdge
根据提供的原点和目标返回单向边 H3 索引,如出错则返回 0。
语法
参数
返回值
- 单向边六角形索引编号。 UInt64。
示例
查询:
结果:
h3UnidirectionalEdgeIsValid
确定提供的 H3Index 是否为有效的单向边索引。 如果是单向边则返回 1,否则返回 0。
语法
参数
index
— 六角形索引编号。 UInt64。
返回值
示例
查询:
结果:
h3GetOriginIndexFromUnidirectionalEdge
从单向边 H3Index 中返回原点六角形索引。
语法
参数
edge
— 表示单向边的六角形索引编号。 UInt64。
返回值
- 原点六角形索引编号。 UInt64。
示例
查询:
结果:
h3GetDestinationIndexFromUnidirectionalEdge
从单向边 H3Index 中返回目标六角形索引。
语法
参数
edge
— 表示单向边的六角形索引编号。 UInt64。
返回值
- 目标六角形索引编号。 UInt64。
示例
查询:
结果:
h3GetIndexesFromUnidirectionalEdge
返回给定单向边 H3Index 的原点和目标六角形索引。
语法
参数
edge
— 表示单向边的六角形索引编号。 UInt64。
返回值
一个由两个值组成的元组 tuple(origin,destination)
:
如果提供的输入无效,则返回 (0,0)
。
示例
查询:
结果:
h3GetUnidirectionalEdgesFromHexagon
提供从提供的 H3Index 的所有单向边。
语法
参数
index
— 表示单向边的六角形索引编号。 UInt64。
返回值
表示每个单向边的 H3 索引数组。 Array(UInt64)。
示例
查询:
结果:
h3GetUnidirectionalEdgeBoundary
返回定义单向边的坐标。
语法
参数
index
— 表示单向边的六角形索引编号。 UInt64。
返回值
示例
查询:
结果: