numBands, SRID y los accesores de la esquina, la escala y la inclinación leen la malla de un raster de PostGIS; width, height y los accesores de banda leen por igual un ráster y una tesela raquet, y los demás accesores leen una tesela raquet.
Un valor raquet es autodescriptivo: los accesores siguientes leen la georreferenciación y la disposición que transporta, de modo que una tesela empaquetada con el constructor raquet o decodificada con raquetRead puede inspeccionarse sin conservar las columnas sueltas a partir de las cuales se construyó.
Devolver el primer, el último o el enésimo identificador de celda distinto de un valor temporal
startValue(tcell) → cell endValue(tcell) → cell valueN(tcell,integer) → cell
valueN cuenta desde uno y devuelve NULL cuando n está fuera de rango.
SELECT startValue(th3index '831c02fffffffff@2001-01-01');
-- 831c02fffffffff
SELECT endValue(th3index '{831c02fffffffff@2001-01-01, 831c00fffffffff@2001-01-02}');
-- 831c00fffffffff
SELECT valueN(th3index '{831c02fffffffff@2001-01-01, 831c00fffffffff@2001-01-02}', 1);
-- 831c02fffffffff
SELECT startValue(tquadbin '48a6227affffffff@2001-01-01');
-- 48a6227affffffff
SELECT endValue(tquadbin '{48a6227affffffff@2001-01-01, 485623ffffffffff@2001-01-02}');
-- 485623ffffffffff
SELECT valueN(tquadbin '{48a6227affffffff@2001-01-01, 485623ffffffffff@2001-01-02}', 1);
-- 48a6227affffffff
SELECT startValue(ts2cell '47c3c@2001-01-01');
-- 47c3c
SELECT endValue(ts2cell '{47c3c@2001-01-01, 47c4@2001-01-02}');
-- 47c4
SELECT valueN(ts2cell '{47c3c@2001-01-01, 47c4@2001-01-02}', 1);
-- 47c3c
Devolver el conjunto de identificadores de celda distintos que toma la trayectoria
getValues(tcell) → cellset
SELECT getValues(th3index '831c02fffffffff@2001-01-01');
-- {"831c02fffffffff"}
SELECT getValues(th3index '{831c02fffffffff@2001-01-01, 831c00fffffffff@2001-01-02}');
-- {"831c00fffffffff", "831c02fffffffff"}
SELECT getValues(tquadbin '48a6227affffffff@2001-01-01');
-- {"48a6227affffffff"}
SELECT getValues(tquadbin '{48a6227affffffff@2001-01-01, 485623ffffffffff@2001-01-02}');
-- {"485623ffffffffff", "48a6227affffffff"}
SELECT getValues(ts2cell '47c3c@2001-01-01');
-- {"47c3c"}
SELECT getValues(ts2cell '{47c3c@2001-01-01, 47c4@2001-01-02}');
-- {"47c3c", "47c4"}
Devolver el identificador de celda en una marca de tiempo dada, usando interpolación de pasos
valueAtTimestamp(tcell,timestamptz) → cell
SELECT valueAtTimestamp(th3index '[831c02fffffffff@2001-01-01, 831c00fffffffff@2001-01-05]', '2001-01-03'); -- 831c02fffffffff SELECT valueAtTimestamp(tquadbin '[48a6227affffffff@2001-01-01, 485623ffffffffff@2001-01-05]', '2001-01-03'); -- 48a6227affffffff SELECT valueAtTimestamp(ts2cell '[47c3c@2001-01-01, 47c4@2001-01-05]', '2001-01-03'); -- 47c3c
Devuelve el número de bandas de un ráster
numBands(raster) → integer
El número de banda que aceptan rasterValue y los operadores construidos sobre él va de 1 hasta este valor.
WITH rast1 AS (
SELECT ST_AddBand(ST_MakeEmptyRaster(3, 3, 0.0, 3.0, 1.0, -1.0, 0.0, 0.0, 4326),
'32BF'::text, 0.0::float8, NULL::float8 ) AS r ), rast2 AS (
SELECT ST_AddBand(r, '32BF'::text, 0.0::float8, NULL::float8) AS r FROM rast1 )
SELECT numBands((SELECT r FROM rast1)) AS num_bands_one,
numBands((SELECT r FROM rast2)) AS num_bands_two;
-- 1 | 2
Devuelve el identificador del sistema de referencia espacial de un ráster
SRID(raster) → integer
SELECT SRID(ST_MakeEmptyRaster(3, 2, 0.0, 2.0, 1.0, -1.0, 0.0, 0.0, 3857)); -- 3857
Devuelve la coordenada X o Y de la esquina superior izquierda de un ráster
upperLeftX(raster) → float8 upperLeftY(raster) → float8
La esquina es el origen que establece la geotransformación, alrededor del cual la inclinación gira la malla, de modo que es una esquina de la extensión solo cuando ambas inclinaciones son cero.
SELECT upperLeftX(r), upperLeftY(r) FROM (SELECT ST_MakeEmptyRaster(3, 2, 10.0, 20.0, 1.5, -2.0, 0.5, 0.25, 3857) AS r) t; -- 10 | 20
Devuelve el ancho o el alto de píxel de un ráster, es decir, la componente X o Y de su escala
scaleX(raster) → float8 scaleY(raster) → float8
El alto de píxel es negativo para una malla cuyas filas van de norte a sur, que es como se escribe habitualmente un ráster.
SELECT scaleX(r), scaleY(r) FROM (SELECT ST_MakeEmptyRaster(3, 2, 10.0, 20.0, 1.5, -2.0, 0.5, 0.25, 3857) AS r) t; -- 1.5 | -2
Devuelve la componente X o Y de la inclinación de un ráster
skewX(raster) → float8 skewY(raster) → float8
Un ráster cuyas dos inclinaciones son cero está alineado con los ejes.
SELECT skewX(r), skewY(r) FROM (SELECT ST_MakeEmptyRaster(3, 2, 10.0, 20.0, 1.5, -2.0, 0.5, 0.25, 3857) AS r) t; -- 0.5 | 0.25
Devuelve la celda QUADBIN de una tesela Raquet
quadbin(raquet) → bigint
SELECT quadbin(raquet('\x01020304'::bytea, 2, 2, 5193776270265024512, 'uint8'));
-- 5193776270265024512
Devuelve el ancho en píxeles de un ráster o de una tesela Raquet
width({raster,raquet}) → integer
SELECT width(ST_MakeEmptyRaster(3, 2, 0.0, 2.0, 1.0, -1.0, 0.0, 0.0, 4326));
-- 3
SELECT width(raquet('\x01020304'::bytea, 2, 2, 5193776270265024512, 'uint8'));
-- 2
Devuelve el alto en píxeles de un ráster o de una tesela Raquet
height({raster,raquet}) → integer
SELECT height(ST_MakeEmptyRaster(3, 2, 0.0, 2.0, 1.0, -1.0, 0.0, 0.0, 4326));
-- 2
SELECT height(raquet('\x01020304'::bytea, 2, 2, 5193776270265024512, 'uint8'));
-- 2
Devuelve el nombre del tipo de dato de píxel de una banda de un ráster o de una tesela Raquet
bandPixelType(raster,band integer=1) → text bandPixelType(raquet) → text
El nombre devuelto es el que aceptan los constructores, es decir, uno de uint8, int8, uint16, int16, uint32, int32, uint64, int64, float16, float32 o float64. Los constructores leen el nombre sin distinguir mayúsculas de minúsculas, de modo que el nombre que el ráster de PostGIS da a un tipo de píxel pasa a ellos tal cual; el nombre devuelto aquí es la grafía en minúsculas que la especificación RaQuet da al campo type de una tesela, tanto para una banda de PostGIS como para una tesela, de modo que una banda y una tesela del mismo tipo informan el mismo nombre.
SELECT bandPixelType(ST_AddBand(ST_MakeEmptyRaster(1, 1, 0, 0, 1), '16BSI'));
-- int16
-- Read back the layout of a packaged tile
SELECT quadbin(tile), width(tile), height(tile), bandPixelType(tile)
FROM (SELECT raquet('\x01020304'::bytea, 2, 2, 5193776270265024512, 'uint8') AS tile) t;
-- 5193776270265024512 | 2 | 2 | uint8
Devuelve si una banda de un ráster o una tesela Raquet establece un valor nodata
bandHasNoDataValue(raster,band integer=1) → boolean bandHasNoDataValue(raquet) → boolean
Una banda que no establece ninguno no tiene píxel que excluir, de modo que cada píxel que contiene lleva un valor.
SELECT bandHasNoDataValue(ST_AddBand(ST_MakeEmptyRaster(1, 1, 0, 0, 1), '16BSI'::text,
0::float8, -9999::float8));
-- true
SELECT bandHasNoDataValue(raquet('\x01020304'::bytea, 2, 2, 5193776270265024512,
'uint8'));
-- false
Devuelve el valor nodata de una banda de un ráster o de una tesela Raquet
bandNoDataValue(raster,band integer=1) → float8 bandNoDataValue(raquet) → float8
Una banda que no establece ningún valor nodata devuelve NULL.
SELECT bandNoDataValue(ST_AddBand(ST_MakeEmptyRaster(1, 1, 0, 0, 1), '16BSI'::text,
0::float8, -9999::float8));
-- -9999
SELECT bandNoDataValue(raquet('\x01020304'::bytea, 2, 2, 5193776270265024512, 'uint8',
255));
-- 255
-- A tile built without a nodata value states none
SELECT bandNoDataValue(raquet('\x01020304'::bytea, 2, 2, 5193776270265024512, 'uint8'));
-- NULL
Devuelve los bytes de píxeles de un mosaico Raquet
pixels(raquet) → bytea
Los bytes están en orden de fila mayor y empaquetados, width × height píxeles del tamaño de bandPixelType cada uno, en little-endian cuando un píxel ocupa más de un byte, que es la disposición que aceptan los constructores. Por lo tanto, un mosaico se reconstruye a través de sus propios accesores.
SELECT pixels(raquet('\x01020304'::bytea, 2, 2, 5193776270265024512, 'uint8'));
-- \x01020304