Uber/H3 Cell Mode

373 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第12天,点击查看活动详情

本篇是 Uber H3 空间索引系统介绍的第四篇也是 H3 空间索引系统介绍的最后一篇,之前的三篇分别从我使用 H3 需求场景、H3 的特性和官方使用场景、H3 64位索引的定义做了一些介绍,文章链接如下:

本篇主要介绍 H3 六边形单元模式

Cell Mode

cell_mode.png

在上篇 H3 空间索引的定义中提到,H3 系统为每个单元格分配一个唯一的分层索引。每个空间分层索引定义,以所在的 Resolution 0 单元编号开始。按照 H3 的六边形划定算法,每个父六边形划分成7个子六边形,所以根据所需分辨率,依次指出所在的较大分辨率的单元编号。

每个分辨率为 0 的 Base Cell 配有一个如图所示的局部的六边形坐标系,并用于定向 Base Cell 中所有 Child Cell。子六边形线性小于其父六边形。

cpidigits.png

每个六边形的 Cell Mode Index 64-bit 整数组成如下(高位在前):

  • 第1为是保留位,设置为 0
  • 然后是 4 bits 为 H3 Cell Index Mode
  • 然后的 3 bits 模式保留位 设置为 0
  • 然后是 4 bits 表示 Cell 分辨率 0-15
  • 然后是 7 bits 表示 所在的 Base Cell 编号 0-121
  • 最后是从分辨率1到单元分辨率,每一个分辨率 3bits, 表示六边形局部坐标系中的0-6编号(总共 45 位保留用于分辨率 1-15)

Vertex Mode

在计算点的空间索引时,会有边界情况那就是顶点的空间索引地址,顶点的空间索引地址,如图所示不尽相同。因为 H3 顶点索引表示 H3 网格系统中的单个拓扑顶点,由三个 Cell 共享。H3 顶点被任意分配三个相邻像元中的一个作为其“所有者”,用于计算顶点的规范索引和地理坐标。Vertex Mode 64-bit 整数组成如下(高位在前):

  • 第1位是保留位,设置为 0
  • 然后是 4 bits 为 H4 Vertex Index Mode
  • 然后是 3 bits 表示所有者单元格上顶点的顶点数 (0-5)
  • 最后是与所有者单元格的索引位匹配的后续位

vertex_mode.png