Las siguientes funciones auxiliares estáticas devuelven un cellset, el tipo compañero de colección finita de cell. Operan sobre una cell estática o sobre un cellset y no se elevan a tcell, quedando la elevación temporal aplazada a la espera de una primitiva tset<T>.
Las celdas QUADBIN que cubre una trayectoria son los valores de tquadbin sobre ella, que son la clave de unión por la que se lee una tabla Raquet.
Todas las celdas dentro de k pasos de cuadrícula desde el origen
gridDisk(h3index,integer) → h3indexset gridDisk(quadbin,integer) → quadbinset gridDisk(h3indexset,integer) → h3indexset gridDisk(quadbinset,integer) → quadbinset s2EdgeNeighbors(s2cell) → s2cellset
El disco incluye el origen, que es todo el disco cuando k = 0. Su forma sigue a la cuadrícula: en la cuadrícula cuadrada QUADBIN el disco en el paso k es el bloque de (2k+1)×(2k+1) celdas centrado en el origen, mientras que en la cuadrícula hexagonal H3 es el anillo de hexágonos a esa cantidad de pasos y todo lo que hay dentro de él. S2 presenta las cuatro celdas que comparten una arista con el origen y no toma un número de pasos, de modo que responde el disco en k = 1 menos el propio origen. Un conjunto de celdas da la unión de los discos de sus celdas, que en k = 1 amplía una cobertura con el anillo de celdas que la rodea, y un disco de radio 1 ampliado un paso es el disco de radio 2 alrededor del mismo origen.
SELECT gridDisk(h3index '871fa44a8ffffff', 1);
/* {"871fa44a8ffffff", "871fa44a9ffffff", "871fa44aaffffff", "871fa44abffffff",
"871fa44acffffff", "871fa44adffffff", "871fa44aeffffff"} */
SELECT gridDisk(quadbin '48a6227affffffff', 1);
/* {"48a6226dffffffff", "48a6226fffffffff", "48a62278ffffffff", "48a62279ffffffff",
"48a6227affffffff", "48a6227bffffffff", "48a622c5ffffffff", "48a622d0ffffffff",
"48a622d1ffffffff"} */
SELECT numValues(gridDisk(gridDisk(h3index '871fa44a8ffffff', 1), 1));
-- 19
SELECT numValues(gridDisk(gridDisk(quadbin '48a6227affffffff', 1), 1));
-- 25
SELECT s2EdgeNeighbors(s2cell '47c3c');
-- {"47c14", "47c24", "47c34", "47c44"}
Todos los hijos de una celda en la resolución de destino dada
cellToChildren(h3index,integer) → h3indexset cellToChildren(quadbin,integer) → quadbinset cellToChildren(s2cell,integer) → s2cellset
El número de hijos es el factor de ramificación de la cuadrícula: cuatro para una celda de árbol cuaternario QUADBIN o S2, siete para una celda H3. La función auxiliar es estática, siendo los hijos un conjunto por instante cuya elevación temporal queda aplazada a la espera de una primitiva tset<T>.
SELECT cellToChildren(h3index '831c02fffffffff', 4);
/* {"841c021ffffffff", "841c023ffffffff", "841c025ffffffff", "841c027ffffffff",
"841c029ffffffff", "841c02bffffffff", "841c02dffffffff"} */
SELECT cellToChildren(quadbin '48a6227affffffff', 11);
-- {"48b6227a3fffffff", "48b6227a7fffffff", "48b6227abfffffff", "48b6227affffffff"}
SELECT cellToChildren(s2cell '47c3c', 8);
-- {"47c39", "47c3b", "47c3d", "47c3f"}
Representación compactada de un conjunto de celdas, fusionándose las celdas más finas en su padre siempre que esté presente el conjunto completo de hijos del padre
compactCells(cellset) → cellset
Una tesela QUADBIN y una celda S2 son cada una exactamente la unión de sus cuatro hijos, de modo que las celdas de un conjunto QUADBIN o S2 pueden ser de cualquier resolución: se descarta una celda cubierta por una celda más gruesa del conjunto, y cada cuatro hijos de un mismo padre se reemplazan por ese padre, desde la resolución más fina hacia arriba, como la biblioteca S2 normaliza una unión de celdas. Una celda H3 cubre a sus siete hijos solo de forma aproximada, de modo que un conjunto H3 se compacta como lo compacta la biblioteca H3, a partir de celdas de una única resolución, y celdas de dos resoluciones provocan un error. Un conjunto compactado mezcla resoluciones, mientras que ?= compara celdas, de modo que una cobertura compactada se descompacta a la resolución de una trayectoria antes de leer la trayectoria contra ella.
SELECT compactCells(cellToChildren(h3index '831c02fffffffff', 4));
-- {"831c02fffffffff"}
SELECT compactCells(cellToChildren(quadbin '48a6227affffffff', 12));
-- {"48a6227affffffff"}
SELECT compactCells(cellToChildren(s2cell '47c3c', 9));
-- {"47c3c"}
Representación descompactada en la resolución dada, la inversa de compactCells
uncompactCells(cellset,integer) → cellset
Una celda más gruesa que la resolución se reemplaza por sus descendientes en la resolución. Una celda más fina que la resolución no puede expresarse en ella y provoca un error, como también un resultado QUADBIN o S2 de más de 4194304 celdas.
SELECT numValues(uncompactCells(compactCells(
cellToChildren(h3index '831c02fffffffff', 4)), 4));
-- 7
SELECT numValues(uncompactCells(quadbinset '{48a6227affffffff}', 12));
-- 16
SELECT numValues(uncompactCells(compactCells(cellToChildren(s2cell '47c3c', 8)), 9));
-- 16