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
tcell {=, <>, <, >, <=, >=} tcell → boolean
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, 5193776270265024512,
'uint8') = raquet('\x0102'::bytea, 2, 1, 5193776270265024512, 'uint8');
-- true
-- Deduplicate tiles, which the btree and hash operator classes support
SELECT DISTINCT tile FROM elevation_tiles;
Valores hash
hash({quadbin,s2cell,cellset,tcell,raquet}) → int
hashExtended({quadbin,s2cell,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. El tipo h3index pertenece a la extensión h3, que nombra estas funciones h3index_hash y h3index_hash_extended.
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