跳到主要内容
跳到主要内容

H3 索引的函数

H3 索引

H3 是一个地理索引系统,地球表面被分割成一网格均匀的六边形单元。该系统是分层的,即每个顶层的六边形(“父级”)可以分裂成七个均匀但更小的六边形(“子级”),依此类推。

层次的级别被称为 resolution,可以接受的值从 015,其中 0base 级别,具有最大和最粗的单元。

一对纬度和经度可以转换为 64 位的 H3 索引,以标识一个网格单元。

H3 索引主要用于地点分桶和其他地理空间操作。

H3 系统的完整描述可见于 Uber Engineering 网站

h3IsValid

验证该数字是否是有效的 H3 索引。

语法

参数

  • h3index — 六边形索引数字。 UInt64

返回值

  • 1 — 此数字是有效的 H3 索引。 UInt8
  • 0 — 此数字不是有效的 H3 索引。 UInt8

示例

查询:

结果:

h3GetResolution

定义给定 H3 索引的分辨率。

语法

参数

  • h3index — 六边形索引数字。 UInt64

返回值

  • 索引分辨率。范围:[0, 15]。 UInt8
  • 如果索引无效,函数返回随机值。使用 h3IsValid 验证索引。 UInt8

示例

查询:

结果:

h3EdgeAngle

计算给定 H3 六边形边缘的平均长度(以度数为单位)。

语法

参数

  • resolution — 索引分辨率。 UInt8。范围:[0, 15]。

返回值

  • 给定 H3 六边形边缘的平均长度(以度数为单位)。 Float64

示例

查询:

结果:

h3EdgeLengthM

计算给定 H3 六边形边缘的平均长度(以米为单位)。

语法

参数

  • resolution — 索引分辨率。 UInt8。范围:[0, 15]。

返回值

  • 给定 H3 六边形的平均边缘长度(以米为单位)。 Float64

示例

查询:

结果:

h3EdgeLengthKm

计算给定 H3 六边形边缘的平均长度(以千米为单位)。

语法

参数

  • resolution — 索引分辨率。 UInt8。范围:[0, 15]。

返回值

  • 给定 H3 六边形边缘的平均长度(以千米为单位)。 Float64

示例

查询:

结果:

geoToH3

返回指定分辨率的 H3 点索引 (lon, lat)

语法

参数

  • lon — 经度。 Float64
  • lat — 纬度。 Float64
  • resolution — 索引分辨率。范围:[0, 15]。 UInt8

返回值

  • 六边形索引数字。 UInt64
  • 在错误情况下返回 0。 UInt64

示例

查询:

结果:

h3ToGeo

返回与提供的 H3 索引相对应的中心点经度和纬度。

语法

参数

  • h3Index — H3 索引。 UInt64

返回值

  • 由两个值组成的元组:tuple(lat,lon)lat — 纬度。 Float64lon — 经度。 Float64

注意:在 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 六边形,顺序随机。

语法

参数

  • h3index — 六边形索引数字。 UInt64
  • k — 半径。 integer

返回值

示例

查询:

结果:

h3GetBaseCell

返回 H3 索引的基础单元号。

语法

参数

  • index — 六边形索引数字。 UInt64

返回值

  • 六边形基础单元号。 UInt8

示例

查询:

结果:

h3HexAreaM2

返回在给定分辨率下的平均六边形面积(以平方米为单位)。

语法

参数

  • resolution — 索引分辨率。范围:[0, 15]。 UInt8

返回值

  • 面积(以平方米为单位)。 Float64

示例

查询:

结果:

h3HexAreaKm2

返回在给定分辨率下的平均六边形面积(以平方千米为单位)。

语法

参数

  • resolution — 索引分辨率。范围:[0, 15]。 UInt8

返回值

  • 面积(以平方千米为单位)。 Float64

示例

查询:

结果:

h3IndexesAreNeighbors

返回所提供的 H3 索引是否是相邻的。

语法

参数

  • index1 — 六边形索引数字。 UInt64
  • index2 — 六边形索引数字。 UInt64

返回值

  • 1 — 索引是相邻的。 UInt8
  • 0 — 索引不是相邻的。 UInt8

示例

查询:

结果:

h3ToChildren

返回给定 H3 索引的子索引数组。

语法

参数

  • index — 六边形索引数字。 UInt64
  • resolution — 索引分辨率。范围:[0, 15]。 UInt8

返回值

示例

查询:

结果:

h3ToParent

返回包含给定 H3 索引的父级(粗糙)索引。

语法

参数

  • index — 六边形索引数字。 UInt64
  • resolution — 索引分辨率。范围:[0, 15]。 UInt8

返回值

示例

查询:

结果:

h3ToString

H3Index 表示的索引转换为字符串表示。

参数

  • index — 六边形索引数字。 UInt64

返回值

  • H3 索引的字符串表示。 String

示例

查询:

结果:

stringToH3

将字符串表示转换为 H3Index(UInt64)表示。

语法

参数

  • index_str — H3 索引的字符串表示。 String

返回值

  • 六边形索引数字。如果发生错误返回 0。 UInt64

示例

查询:

结果:

h3GetResolution

返回 H3 索引的分辨率。

语法

参数

  • index — 六边形索引数字。 UInt64

返回值

  • 索引分辨率。范围:[0, 15]。 UInt8

示例

查询:

结果:

h3IsResClassIII

返回 H3 索引是否具有 Class III 定向的分辨率。

语法

参数

  • index — 六边形索引数字。 UInt64

返回值

  • 1 — 索引具有 Class III 定向的分辨率。 UInt8
  • 0 — 索引不具有 Class III 定向的分辨率。 UInt8

示例

查询:

结果:

h3IsPentagon

返回此 H3 索引是否表示一个五边形单元。

语法

参数

  • index — 六边形索引数字。 UInt64

返回值

  • 1 — 索引表示一个五边形单元。 UInt8
  • 0 — 索引不表示一个五边形单元。 UInt8

示例

查询:

结果:

h3GetFaces

返回与给定 H3 索引相交的二十面体面。

语法

参数

  • index — 六边形索引数字。 UInt64

返回值

  • 返回与给定 H3 索引相交的二十面体面的数组。 Array(UInt64)。

示例

查询:

结果:

h3CellAreaM2

返回与给定 H3 索引相对应的特定单元的确切面积(以平方米为单位)。

语法

参数

  • index — 六边形索引数字。 UInt64

返回值

  • 单元面积(以平方米为单位)。 Float64

示例

查询:

结果:

h3CellAreaRads2

返回与给定 H3 索引相对应的特定单元的确切面积(以平方弧度为单位)。

语法

参数

  • index — 六边形索引数字。 UInt64

返回值

  • 单元面积(以平方弧度为单位)。 Float64

示例

查询:

结果:

h3ToCenterChild

返回指定分辨率下由给定 H3 索引包含的中心子 H3 索引。

语法

参数

  • index — 六边形索引数字。 UInt64
  • resolution — 索引分辨率。范围:[0, 15]。 UInt8

返回值

  • 给定 H3 索引下的中心子 H3 索引。 UInt64

示例

查询:

结果:

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 点(经度/纬度)之间的“大圆”或“哈弗辛”距离(以米为单位)。

语法

参数

  • lat1, lon1 — 点1 的纬度和经度(以度为单位)。 Float64
  • lat2, lon2 — 点2 的纬度和经度(以度为单位)。 Float64

返回值

  • 哈弗辛或大圆距离(以米为单位)。 Float64

示例

查询:

结果:

h3PointDistKm

返回成对 GeoCoord 点(经度/纬度)之间的“大圆”或“哈弗辛”距离(以千米为单位)。

语法

参数

  • lat1, lon1 — 点1 的纬度和经度(以度为单位)。 Float64
  • lat2, lon2 — 点2 的纬度和经度(以度为单位)。 Float64

返回值

  • 哈弗辛或大圆距离(以千米为单位)。 Float64

示例

查询:

结果:

h3PointDistRads

返回成对 GeoCoord 点(经度/纬度)之间的“大圆”或“哈弗辛”距离(以弧度为单位)。

语法

参数

  • lat1, lon1 — 点1 的纬度和经度(以度为单位)。 Float64
  • lat2, lon2 — 点2 的纬度和经度(以度为单位)。 Float64

返回值

  • 哈弗辛或大圆距离(以弧度为单位)。 Float64

示例

查询:

结果:

h3GetRes0Indexes

返回所有分辨率为 0 的 H3 索引的数组。

语法

返回值

  • 所有分辨率为 0 的 H3 索引的数组。 Array(UInt64).

示例

查询:

结果:

h3GetPentagonIndexes

返回指定分辨率下的所有五边形 H3 索引。

语法

参数

  • resolution — 索引分辨率。范围:[0, 15]。 UInt8

返回值

  • 所有五边形 H3 索引的数组。 Array(UInt64)。

示例

查询:

结果:

h3Line

返回提供的两个索引之间的索引线。

语法

参数

  • start — 表示起始点的六边形索引数字。 UInt64
  • end — 表示结束点的六边形索引数字。 UInt64

返回值

表示两个提供的索引之间的索引线的 H3 索引数组。 Array(UInt64)。

示例

查询:

结果:

h3Distance

返回提供的两个索引之间的网格单元距离。

语法

参数

  • start — 表示起始点的六边形索引数字。 UInt64
  • end — 表示结束点的六边形索引数字。 UInt64

返回值

  • 网格单元数。 Int64

如果计算距离失败,将返回负数。

示例

查询:

结果:

h3HexRing

返回以提供的起始 H3 索引为中心并且长度为 k 的六边形环的索引。

如果没有碰到五边形扭曲,将返回 0。

语法

参数

  • index — 表示起始点的六边形索引数字。 UInt64
  • k — 距离。 UInt64

返回值

示例

查询:

结果:

h3GetUnidirectionalEdge

返回基于提供的原点和目标的单向边 H3 索引,并在错误时返回 0。

语法

参数

  • originIndex — 原始六边形索引数字。 UInt64
  • destinationIndex — 目标六边形索引数字。 UInt64

返回值

  • 单向边六边形索引数字。 UInt64

示例

查询:

结果:

h3UnidirectionalEdgeIsValid

确定提供的 H3 索引是否是有效的单向边索引。如果是单向边返回 1,否则返回 0。

语法

参数

  • index — 六边形索引数字。 UInt64

返回值

  • 1 — H3 索引是有效的单向边。 UInt8
  • 0 — H3 索引不是有效的单向边。 UInt8

示例

查询:

结果:

h3GetOriginIndexFromUnidirectionalEdge

从单向边 H3 索引中返回原始六边形索引。

语法

参数

  • edge — 表示单向边的六边形索引数字。 UInt64

返回值

  • 原始六边形索引数字。 UInt64

示例

查询:

结果:

h3GetDestinationIndexFromUnidirectionalEdge

从单向边 H3 索引中返回目标六边形索引。

语法

参数

  • edge — 表示单向边的六边形索引数字。 UInt64

返回值

  • 目标六边形索引数字。 UInt64

示例

查询:

结果:

h3GetIndexesFromUnidirectionalEdge

返回给定单向边 H3 索引的原始和目标六边形索引。

语法

参数

  • edge — 表示单向边的六边形索引数字。 UInt64

返回值

由两个值组成的元组 tuple(origin,destination)

  • origin — 原始六边形索引数字。 UInt64
  • destination — 目标六边形索引数字。 UInt64

如果提供的输入无效,则返回 (0,0)

示例

查询:

结果:

h3GetUnidirectionalEdgesFromHexagon

提供给定 H3 索引的所有单向边。

语法

参数

  • index — 表示单向边的六边形索引数字。 UInt64

返回值

表示每个单向边的 H3 索引数组。 Array(UInt64)。

示例

查询:

结果:

h3GetUnidirectionalEdgeBoundary

返回定义单向边的坐标。

语法

参数

  • index — 代表单向边的六边形索引号。UInt64

返回值

示例

查询:

结果: