Las teselas también admiten el conjunto completo de operadores de comparación. El orden es total y se define primero por la celda QUADBIN, luego por el tipo de píxel, el ancho, el alto y finalmente los bytes de píxeles; está pensado para indexación y deduplicación, no para una interpretación espacial. Una clase de operadores btree por defecto hace que ORDER BY, DISTINCT y las uniones por mezcla funcionen sobre columnas raquet, y una clase de operadores hash por defecto habilita las uniones y agregaciones hash.
Comparaciones tradicionales
cell {=, <>, <, >, <=, >=} cell → boolean
tcell {=, <>, <, >, <=, >=} tcell → boolean
Las funciones que respaldan estos operadores son eq, ne, lt, le, ge y gt, junto con cmp({cell,tcell},{cell,tcell}) → integer, que devuelve -1, 0 o 1. Los operadores sobre h3index son los de la extensión h3, y las funciones responden como ellos.
SELECT cmp(h3index '831c02fffffffff', h3index '8a2a1072b59ffff'); -- -1 SELECT th3index '831c02fffffffff@2001-01-01' = th3index '831c02fffffffff@2001-01-01'; -- t SELECT tquadbin '48a6227affffffff@2001-01-01' = tquadbin '48a6227affffffff@2001-01-01'; -- t SELECT ts2cell '47c3c@2001-01-01' = ts2cell '47c3c@2001-01-01'; -- t
Comparaciones siempre y alguna vez
{cell,tcell} {?=, ?<>, %=, %<>} {cell,tcell} → boolean
El operando de sondeo puede ser un identificador cell escueto u otra trayectoria tcell, en cualquiera de las dos posiciones de operando. Las formas con el prefijo e se cumplen cuando la relación se cumple en al menos un instante, las formas con el prefijo a cuando se cumple a lo largo de todo el lapso de tiempo.
SELECT th3index '[831c02fffffffff@2001-01-01, 880326b885fffff@2001-01-05]' ?= h3index '880326b885fffff'; -- t SELECT tquadbin '[48a6227affffffff@2001-01-01, 485623ffffffffff@2001-01-05]' ?= quadbin '485623ffffffffff'; -- t SELECT ts2cell '[47c3c@2001-01-01, 47c4@2001-01-05]' ?= s2cell '47c4'; -- t
Comparaciones temporales
{cell,tcell} {#=, #<>} {cell,tcell} → tbool
Devolver un booleano temporal que da la igualdad, o la desigualdad, por instante entre una celda temporal y un sondeo
SELECT th3index '831c02fffffffff@2001-01-01' #= h3index '831c02fffffffff'; -- t@2001-01-01 SELECT tquadbin '48a6227affffffff@2001-01-01' #= quadbin '48a6227affffffff'; -- t@2001-01-01 SELECT ts2cell '47c3c@2001-01-01' #= s2cell '47c3c'; -- t@2001-01-01
Compara dos teselas Raquet
raquet {=, <>, <, <=, >=, >} raquet → boolean
Las funciones que respaldan estos operadores son eq, ne, lt, le, ge y gt, junto con cmp(raquet,raquet) → integer, que devuelve -1, 0 o 1.
-- Two tiles with the same cell, layout and pixels are equal
SELECT raquet('\x0102'::bytea, 2, 1, quadbin '4817ffffffffffff',
'uint8') = raquet('\x0102'::bytea, 2, 1, quadbin '4817ffffffffffff', 'uint8');
-- true
-- Deduplicate tiles, which the btree and hash operator classes support
SELECT DISTINCT tile FROM elevation_tiles;
Valores hash
hash({cell,cellset,tcell,raquet}) → integer
hashExtended({cell,cellset,tcell,raquet},seed bigint) → bigint
La función hash devuelve un valor hash de 32 bits y la función hashExtended un valor hash de 64 bits calculado con la semilla dada, y los valores iguales tienen valores hash iguales. Sobre h3index responden como las funciones h3index_hash y h3index_hash_extended de la extensión h3, que proporciona el tipo.
SELECT hash(th3index '831c02fffffffff@2001-01-01') =
hash(th3index '{831c02fffffffff@2001-01-01}');
-- t
SELECT hash(quadbinset '{48a6227affffffff, 485623ffffffffff}') =
hash(quadbinset '{485623ffffffffff, 48a6227affffffff}');
-- t
SELECT hashExtended(s2cell '47c3c', 0) <> hashExtended(s2cell '47c3c', 1);
-- t