Appearance
Hierarchical Index Conversions
These functions convert between the sequential cell index (SEQNUM) and alternative hierarchical indexing schemes. Hierarchical indices encode spatial locality, which can improve range queries and spatial sorting.
Z-Order (Morton Code)
Available for aperture 3 and aperture 4 grids.
seqnum_to_zorder
sql
UBIGINT seqnum_to_zorder (seqnum UBIGINT, res INTEGER)
UBIGINT seqnum_to_zorder (seqnum UBIGINT, res INTEGER, params STRUCT)Converts a sequential cell index to its Z-order (Morton code) index.
sql
SELECT seqnum_to_zorder(2380::UBIGINT, 5);
-- → 3688448094816436224zorder_to_seqnum
sql
UBIGINT zorder_to_seqnum (value UBIGINT, res INTEGER)
UBIGINT zorder_to_seqnum (value UBIGINT, res INTEGER, params STRUCT)Converts a Z-order index back to a sequential cell index.
sql
SELECT zorder_to_seqnum(3688448094816436224::UBIGINT, 5);
-- → 2380Z3 Index
Only available for aperture 3 hexagon grids. Requires passing a dggs_params struct with aperture = 3.
seqnum_to_z3
sql
UBIGINT seqnum_to_z3 (seqnum UBIGINT, res INTEGER)
UBIGINT seqnum_to_z3 (seqnum UBIGINT, res INTEGER, params STRUCT)Converts a sequential cell index to its Z3 hierarchical index.
sql
SELECT seqnum_to_z3(100::UBIGINT, 4,
dggs_params('ISEA', 3, 'HEXAGON', 0.0, 58.28252559, 11.25));
-- → 2994893752201379839z3_to_seqnum
sql
UBIGINT z3_to_seqnum (value UBIGINT, res INTEGER)
UBIGINT z3_to_seqnum (value UBIGINT, res INTEGER, params STRUCT)Converts a Z3 index back to a sequential cell index.
sql
SELECT z3_to_seqnum(2994893752201379839::UBIGINT, 4,
dggs_params('ISEA', 3, 'HEXAGON', 0.0, 58.28252559, 11.25));
-- → 100Z7 Index
Only available for aperture 7 hexagon grids. Requires passing a dggs_params struct with aperture = 7.
seqnum_to_z7
sql
UBIGINT seqnum_to_z7 (seqnum UBIGINT, res INTEGER)
UBIGINT seqnum_to_z7 (seqnum UBIGINT, res INTEGER, params STRUCT)Converts a sequential cell index to its Z7 hierarchical index.
sql
SELECT seqnum_to_z7(100::UBIGINT, 4,
dggs_params('ISEA', 7, 'HEXAGON', 0.0, 58.28252559, 11.25));
-- → 1162491653815009279z7_to_seqnum
sql
UBIGINT z7_to_seqnum (value UBIGINT, res INTEGER)
UBIGINT z7_to_seqnum (value UBIGINT, res INTEGER, params STRUCT)Converts a Z7 index back to a sequential cell index.
sql
SELECT z7_to_seqnum(1162491653815009279::UBIGINT, 4,
dggs_params('ISEA', 7, 'HEXAGON', 0.0, 58.28252559, 11.25));
-- → 100Vertex 2DD
Vertex-based 2D coordinates with triangle metadata. Available for all grid configurations.
seqnum_to_vertex2dd
sql
STRUCT seqnum_to_vertex2dd (seqnum UBIGINT, res INTEGER)
STRUCT seqnum_to_vertex2dd (seqnum UBIGINT, res INTEGER, params STRUCT)Return type: STRUCT(keep BOOLEAN, vert_num INTEGER, tri_num INTEGER, x DOUBLE, y DOUBLE)
Converts a sequential cell index to its VERTEX2DD representation.
sql
SELECT seqnum_to_vertex2dd(2380::UBIGINT, 5);┌─────────────────────────────────────────────────────────────────────────────────────┐
│ seqnum_to_vertex2dd(CAST(2380 AS "UBIGINT"), 5) │
│ struct(keep boolean, vert_num integer, tri_num integer, x double, y double) │
├─────────────────────────────────────────────────────────────────────────────────────┤
│ {'keep': true, 'vert_num': 3, 'tri_num': 1, 'x': 0.15625, 'y': 0.27063293868263705} │
└─────────────────────────────────────────────────────────────────────────────────────┘vertex2dd_to_seqnum
sql
UBIGINT vertex2dd_to_seqnum (keep BOOLEAN, vert_num INTEGER, tri_num INTEGER,
x DOUBLE, y DOUBLE, res INTEGER)
UBIGINT vertex2dd_to_seqnum (keep BOOLEAN, vert_num INTEGER, tri_num INTEGER,
x DOUBLE, y DOUBLE, res INTEGER, params STRUCT)Converts VERTEX2DD coordinates back to a sequential cell index.
sql
SELECT vertex2dd_to_seqnum(true, 3, 1, 0.15625, 0.27063293868263705, 5);
-- → 2380