H3 索引
H3 是一种地理空间索引系统,它将地球表面划分为由大小一致的六边形单元组成的网格。该系统具有层级结构,也就是说,顶层的每个六边形 (“父级”) 都可以细分为七个同样规则但更小的六边形 (“子级”) ,以此类推。 该层级称为resolution,取值范围为 0 到 15,其中 0 是 base 级别,对应最大且最粗粒度的单元。
一组纬度和经度坐标可以转换为一个 64 位 H3 index,用于标识某个网格单元。
H3 index 主要用于对位置进行分桶以及其他地理空间操作。
有关 H3 系统的完整说明,请参阅 Uber Engineering 网站。
h3IsValid
检查该数字是否为有效的 H3 索引。 语法h3index— 六边形索引编号。UInt64。
Query
Response
h3GetResolution
返回给定 H3 索引的分辨率。 语法h3index— 六边形索引编号。UInt64。
Query
Response
h3EdgeAngle
计算 H3 六边形边的平均角长度 (以百分度为单位) 。 语法resolution— 索引分辨率。UInt8。范围:[0, 15]。
Query
Response
h3EdgeLengthM
计算 H3 六边形边长的平均值,单位为米。 语法resolution— 索引分辨率。UInt8。取值范围:[0, 15]。
Query
Response
h3EdgeLengthKm
计算 H3 六边形边长的平均值,单位为千米。 语法resolution— 索引分辨率。UInt8。取值范围:[0, 15]。
Query
Response
geoToH3
返回具有指定分辨率的 H3 点索引(lat, lon)。
语法
geoToH3() 接受的参数顺序为 (lon, lat)。从 ClickHouse v25.5 起,输入值的顺序为 (lat, lon)。可使用设置 geotoh3_argument_order = 'lon_lat' 恢复此前的行为。
示例
Query
Response
h3ToGeo
返回给定 H3 索引对应的质心纬度和经度。 语法h3Index— H3 索引。UInt64。
h3ToGeo() 返回值的顺序为 (lon, lat)。从 ClickHouse v25.1 起,返回值的顺序为 (lat, lon)。可以使用设置 h3togeo_lon_lat_result_order = true 恢复之前的行为。
示例
Query
Response
h3ToGeoBoundary
返回由(lat, lon) 对组成的数组,对应于给定 H3 索引的边界。
语法
h3Index— H3 索引。UInt64。
Query
Response
h3kRing
按随机顺序列出距给定六边形k 半径范围内的所有 H3 六边形。
语法
Query
Response
h3PolygonToCells
返回给定几何体 (Ring 或 (多) Polygon) 所包含的指定分辨率六边形单元。当几何体包含六边形的中心时,该六边形即被视为包含,这对应 h3PolygonToCellsWithContainment 的包含模式0。
几何体的每个顶点都必须位于球面上:经度范围为 [-180, 180],纬度范围为 [-90, 90] 度。返回单元的顺序不作保证,因此当顺序重要时请对数组进行排序。
语法
Query
Response
h3PolygonToCellsWithContainment
使用 H3 Experimental 包含模式,返回覆盖给定几何体 (Ring 或 (多) Polygon) 且具有指定分辨率的六边形单元。 几何体的每个顶点都必须位于球面上:经度范围为[-180, 180],纬度范围为 [-90, 90] 度。返回单元的顺序不保证,因此当顺序很重要时,请对数组进行排序。
此函数将 flags 映射为 H3 包含模式:
0—CONTAINMENT_CENTER1—CONTAINMENT_FULL2—CONTAINMENT_OVERLAPPING3—CONTAINMENT_OVERLAPPING_BBOX
geometry可以是以下 Geo 数据类型 之一,或其底层基本类型:resolution— 索引分辨率。范围:[0, 15]。UInt8。flags— 包含模式。范围:[0, 3]。使用整数字面量,例如0、1、2和3,或 UInt32 值 (例如toUInt32(2)) 。这些值会作为UInt32传递给 H3 API。其他原生整数类型会通过精确类型转换进行转换。
Query
Response
h3GetBaseCell
返回 H3 索引的基础单元编号。 语法index— 六边形索引编号。UInt64。
- 六边形基础单元编号。UInt8。
Query
Response
h3HexAreaM2
返回给定分辨率下六边形的平均面积,单位为平方米。 语法resolution— 索引分辨率。取值范围:[0, 15]。UInt8。
- 以平方米为单位的面积。Float64。
Query
Response
h3HexAreaKm2
返回给定分辨率下六边形的平均面积,单位为平方千米。 语法resolution— 索引分辨率。范围:[0, 15]。UInt8。
- 以平方千米为单位的面积。Float64。
Query
Response
h3IndexesAreNeighbors
返回给定的 H3 索引是否相邻。 语法Query
Response
h3ToChildren
返回指定 H3 索引的子索引数组。 语法Query
Response
h3ToParent
返回包含给定 H3 索引的父索引 (较粗粒度) 。 语法- 父级 H3 索引。UInt64。
Query
Response
h3ToString
将索引的H3Index 表示转换为字符串表示形式。
index— 六边形索引编号。UInt64。
- H3 索引的字符串表示形式。String。
Query
Response
stringToH3
将字符串表示形式转换为H3Index (UInt64) 表示。
语法
index_str— H3 索引的字符串表示形式。String。
- 六边形索引编号。出错时返回 0。UInt64。
Query
Response
h3GetResolution
返回 H3 索引的分辨率。 语法index— 六边形索引编号。UInt64。
- 索引分辨率。取值范围:
[0, 15]。UInt8。
Query
Response
h3IsResClassIII
返回 H3 索引的分辨率是否为 Class III 方向。 语法index— 六边形索引编号。UInt64。
Query
Response
h3IsPentagon
返回此 H3 索引是否表示五边形单元。 语法index— 六边形索引编号。UInt64。
Query
Response
h3GetFaces
返回与给定 H3 索引相交的二十面体各面。 语法index— 六边形索引编号。UInt64。
Query
Response
h3CellAreaM2
返回给定 H3 索引对应的特定单元的精确面积,单位为平方米。 语法index— 六边形索引编号。UInt64
- 单元面积 (平方米) 。Float64
Query
Response
h3CellAreaRads2
返回给定输入 H3 索引对应的特定单元的精确面积 (以平方弧度为单位) 。 语法index— 六边形索引编号。UInt64。
- 以平方弧度表示的单元面积。Float64。
Query
Response
h3ToCenterChild
返回给定 H3 在指定分辨率下包含的中心子 (更细粒度) H3 索引。 语法Query
Response
h3ExactEdgeLengthM
返回输入 h3 索引所表示的单向边的精确长度,单位为米。 语法index— 六边形索引编号。UInt64
- 精确边长,单位为米。Float64
Query
Response
h3ExactEdgeLengthKm
返回输入 h3 索引所表示的单向边的精确长度,单位为千米。 语法index— 六边形索引编号。UInt64。
- 以千米为单位的精确边长。Float64。
Query
Response
h3ExactEdgeLengthRads
返回输入的 h3 索引所表示的单向边的精确长度,单位为弧度。 语法index— 六边形索引编号。UInt64。
- 以弧度表示的精确边长。Float64。
Query
Response
h3NumHexagons
返回指定分辨率下唯一 H3 索引的数量。 语法resolution— 索引分辨率。取值范围:[0, 15]。UInt8。
- H3 索引数量。Int64。
Query
Response
h3PointDistM
返回成对的 GeoCoord 点 (纬度/经度) 之间以米为单位的“大圆”或“半正矢”距离。 语法- 半正矢距离 (或大圆距离) ,单位为米。Float64。
Query
Response
h3PointDistKm
返回成对 GeoCoord 点 (纬度/经度) 之间的“大圆”或“半正矢”距离,单位为千米。 语法- 半正矢 (大圆) 距离,单位为千米。Float64。
Query
Response
h3PointDistRads
返回成对 GeoCoord 点 (纬度/经度) 之间的“大圆”距离或“半正矢”距离,结果以弧度表示。 语法- 以弧度为单位的半正矢距离或大圆距离。Float64。
Query
Response
h3GetRes0Indexes
返回包含所有分辨率 0 的 H3 索引的数组。 语法Query
Response
h3GetPentagonIndexes
返回指定分辨率的所有五边形 H3 索引。 语法resolution— 索引分辨率。取值范围:[0, 15]。UInt8。
Query
Response
h3Line
返回所提供的两个索引之间的连线上的索引。 语法Query
Response
h3Distance
返回所提供的两个索引之间的距离,单位为网格单元。 语法- 网格单元数量。Int64。
Query
Response
h3HexRing
返回以给定的 origin h3Index 为中心、长度为 k 的六边形环上的索引。 如果未遇到五边形畸变,则返回 0。 语法Query
Response
h3GetUnidirectionalEdge
返回两个相邻 H3 单元索引 (起点和终点) 对应的单向边 H3 index。如果任一输入不是有效的 H3 单元,将抛出异常 (由functions_h3_default_if_invalid 设置控制) 。对于有效但不相邻的单元 (包括两次传入同一单元) ,返回 0。
语法
- 单向边的六边形索引编号。UInt64。
Query
Response
h3UnidirectionalEdgeIsValid
判断给定的 H3Index 是否为有效的单向边索引。如果是单向边,则返回 1,否则返回 0。 语法index— 六边形索引编号。UInt64。
Query
Response
h3GetOriginIndexFromUnidirectionalEdge
返回单向边 H3Index 对应的起点六边形索引。如果输入不是有效的有向边,则会抛出异常 (由functions_h3_default_if_invalid 设置控制) ;仅当该设置启用时才返回 0。
语法
edge— 表示单向边的六边形索引编号。UInt64.
- 起点六边形索引编号。UInt64.
- 默认情况下,无效的定向边会抛出
INCORRECT_DATA;当functions_h3_default_if_invalid = 1时返回0。
Query
Response
h3GetDestinationIndexFromUnidirectionalEdge
返回单向边 H3Index 对应的目标六边形索引。如果输入不是有效的有向边,则会引发异常 (由functions_h3_default_if_invalid 设置控制) ;仅当该设置启用时才返回 0。
语法
edge— 表示单向边的六边形索引编号。UInt64。
- 终点六边形索引编号。UInt64。
- 对于无效的有向边,默认抛出
INCORRECT_DATA;当functions_h3_default_if_invalid = 1时返回0。
Query
Response
h3GetIndexesFromUnidirectionalEdge
返回给定单向边 H3Index 对应的起点和终点六边形索引。 语法edge— 表示单向边的六边形索引编号。UInt64。
tuple(origin,destination):
如果提供的输入不是有效的有向边,则会引发异常 (由 functions_h3_default_if_invalid 设置控制) ;仅当启用该设置时才返回 (0,0)。
示例
Query
Response
h3GetUnidirectionalEdgesFromHexagon
返回给定 H3Index 的所有单向边。如果输入不是有效的 H3 单元,则会引发异常 (由functions_h3_default_if_invalid 设置控制) ;仅当该设置启用时,才返回空数组。
语法
index— 表示单元的六边形索引编号。UInt64。
- 由表示各条单向边的 H3 索引组成的数组。Array(UInt64)。
- 默认情况下,无效单元会抛出
INCORRECT_DATA;当functions_h3_default_if_invalid = 1时返回[]。
Query
Response
h3GetUnidirectionalEdgeBoundary
返回定义该单向边的坐标。如果输入不是有效的有向边,则会引发异常 (由functions_h3_default_if_invalid 设置控制) ;仅当该设置已启用时才返回空数组。
语法
index— 表示单向边的六边形索引编号。UInt64。
- 由 ‘(lat, lon)’ 对组成的数组。Array(Float64, Float64)。
- 默认情况下,无效的单向边会抛出
INCORRECT_DATA;当functions_h3_default_if_invalid = 1时返回[]。
Query
Response