H3 Index
Introduction
The H3 system assigns a unique hierarchical index to each cell. Each directed edge and vertex is assigned an index based on its origin or owner cell, respectively.
H3Index Representation
An H3Index
is the 64-bit integer representation of an H3 index, which may be one of multiple modes to indicate the concept being indexed.
- Mode 0 is reserved and indicates an invalid H3 index.
- Mode 1 is an H3 Cell (Hexagon/Pentagon) index.
- Mode 2 is an H3 Directed Edge (Cell A -> Cell B) index.
- Mode 3 is planned to be a bidirectional edge (Cell A <-> Cell B).
- Mode 4 is an H3 Vertex (i.e. a single vertex of an H3 Cell).
The canonical string representation of an H3Index
is the hexadecimal representation of the integer, using lowercase letters. The string representation is variable length (no zero padding) and is not prefixed or suffixed.
Invalid Index
Mode 0 contains a special index, H3_NULL
, which is unique: it is bit-equivalent to 0
.
This index indicates, specifically, an invalid, missing, or uninitialized H3 index;
it is analogous to NaN
in floating point.
It should be used instead of an arbitrary Mode 0 index, due to its uniqueness and easy identifiability.
A mode 0 index could also indicate an error code has been provided instead of a valid H3 index.
Bit layout of H3Index
The layout of an H3Index
is shown below in table form. The interpretation of the "Mode-Dependent" field differs depending on the mode of the index.
0x0F | 0x0E | 0x0D | 0x0C | 0x0B | 0x0A | 0x09 | 0x08 | 0x07 | 0x06 | 0x05 | 0x04 | 0x03 | 0x02 | 0x01 | 0x00 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x30 | Reserved | Mode | Mode-Dependent | Resolution | Base cell | |||||||||||
0x20 | Base cell | Digit 1 | Digit 2 | Digit 3 | Digit 4 | Digit 5 | ||||||||||
0x10 | Digit 5 | Digit 6 | Digit 7 | Digit 8 | Digit 9 | Digit 10 | ||||||||||
0x00 | Digit 10 | Digit 11 | Digit 12 | Digit 13 | Digit 14 | Digit 15 |
Links
- Observable notebook example: H3 Index Bit Layout