QUADBIN se construye sobre el esquema de teselas de mapa deslizante (Web-Mercator), de modo que una celda se corresponde directamente con una terna de coordenadas de tesela (x,y,z) y con la cadena quadkey en base 4 que usan los servidores de teselas. Estas conversiones son el puente específico de QUADBIN hacia el ecosistema de teselado, y no tienen contrapartida en una cuadrícula hexagonal ni de cuadriláteros esféricos.
Devolver si un valor es un identificador QUADBIN estructuralmente válido
isValidIndex(quadbin) → boolean
Etiqueta de cabecera y campo de resolución correctos. La entrada del tipo quadbin provoca un error ante cualquier otro valor, por lo que todo valor del tipo es un índice válido, mientras que isValidCell responde si el índice es una celda de datos: el índice 504b5fffffffffff lleva el modo 2.
SELECT isValidIndex(quadbin '480fffffffffffff'); -- t SELECT isValidIndex(quadbin '504b5fffffffffff'); -- t
Devolver la celda vecina en la misma resolución en la dirección dada
quadbinCellSibling(quadbin,text) → quadbin
up / down / left / right. La respuesta es NULL para una celda vecina más allá de un borde de la cuadrícula, que no tiene celdas allí: una columna no da la vuelta en el antimeridiano y una fila no cruza un polo.
SELECT quadbinCellSibling( quadbinCellSibling(quadbin '48427fffffffffff', 'right'), 'left') = quadbin '48427fffffffffff'; -- t
Emitir la cadena quadkey en base 4 de tesela deslizante de una celda
quadbinCellToQuadkey(quadbin) → text tquadbinCellToQuadkey(tquadbin) → ttext
Un dígito por nivel de zoom, primero el más significativo, correspondiéndose la celda mundial de resolución 0 con la cadena vacía. La forma estática toma un único quadbin, devolviendo la forma temporal el quadkey de cada celda de una trayectoria como un ttext.
SELECT quadbinCellToQuadkey(quadbin '480fffffffffffff'); -- (empty string) SELECT quadbinCellToQuadkey(quadbin '48427fffffffffff'); -- 0213 SELECT quadbinCellToQuadkey(quadbin '48a6227affffffff'); -- 1202021322
Devolver la distancia temporal en la cuadrícula entre dos celdas QUADBIN temporales
tquadbinGridDistance(tquadbin,tquadbin) → tbigint tquadbin <-> tquadbin → tbigint
La distancia en la cuadrícula entre dos celdas del mismo zoom es el menor radio cuyo gridDisk alrededor de una contiene a la otra, la mayor de las diferencias entre sus columnas y sus filas de tesela. La cuadrícula no tiene celdas más allá de sus bordes, de modo que las celdas de los dos extremos de una fila están a una fila entera de distancia. De forma equivalente, el operador <-> devuelve la misma distancia.
SELECT asText(tquadbinGridDistance( tquadbin(quadbinTileToCell(1, 1, 3), tstzspan '[2001-01-01, 2001-01-03]'), tquadbin(quadbinTileToCell(4, 2, 3), tstzspan '[2001-01-02, 2001-01-04]'))); -- [3@2001-01-02, 3@2001-01-03] SELECT tquadbin(quadbinTileToCell(0, 3, 3), timestamptz '2001-01-01') <-> tquadbin(quadbinTileToCell(7, 3, 3), timestamptz '2001-01-01'); -- 7@2001-01-01
Descomponer una celda de vuelta en su terna de coordenadas de tesela, devuelta como un arreglo de enteros que contiene x, después y, después z
quadbinCellToTile(quadbin) → integer[]
Es la inversa del constructor de teselas
SELECT quadbinCellToTile(quadbin '480fffffffffffff');
-- {0,0,0}
SELECT quadbinCellToTile(quadbin '48a6227affffffff');
-- {524,343,10}
Construir una celda a partir de coordenadas de tesela de mapa deslizante: la columna x, la fila y y el zoom z
quadbinTileToCell(integer,integer,integer) → quadbin
SELECT quadbinTileToCell(0, 0, 0) = quadbin '480fffffffffffff'; -- t SELECT quadbinTileToCell(3, 5, 4) = quadbin '48427fffffffffff'; -- t SELECT quadbinTileToCell(524, 343, 10) = quadbin '48a6227affffffff'; -- t