Agregado de caja delimitadora sobre una columna de valores tpcpoint, tpcpatch o tpcbox
extent({tpcpoint,tpcpatch,tpcbox}) → tpcbox
Devuelve el tpcbox más pequeño que contiene todas las entradas. Agregar a través de pcid distintos genera un error, la caja delimitadora sería ininterpretable ya que las dimensiones son relativas al pcid.
SELECT extent(v) FROM (VALUES (tpcpoint(pcpoint(1, 1, 1, 1), '2001-01-01'::timestamptz)), (tpcpoint(pcpoint(1, 2, 2, 2), '2001-01-02'::timestamptz))) t(v); -- TPCBOX(ZT(((1,1,1),(2,2,2)),[2001-01-01, 2001-01-02]), 1)
Conteo temporal y conteo por ventana de filas superpuestas en cada marca de tiempo
tCount({tpcpoint,tpcpatch}) → tint
wCount({tpcpoint,tpcpatch},interval) → tint
El resultado es un tint. Todas las filas de entrada deben compartir el mismo subtipo temporal (instante / secuencia / conjunto de secuencias).
SELECT tCount(v) FROM (VALUES (tpcpoint(pcpoint(1, 1, 1, 1), '2001-01-01'::timestamptz)),
(tpcpoint(pcpoint(1, 2, 2, 2), '2001-01-02'::timestamptz))) t(v);
-- {1@2001-01-01, 1@2001-01-02}
SELECT wCount(v, interval '1 day') FROM (VALUES
(tpcpoint(pcpoint(1, 1, 1, 1), '2001-01-01'::timestamptz)),
(tpcpoint(pcpoint(1, 2, 2, 2), '2001-01-02'::timestamptz))) t(v);
-- {[1@2001-01-01, 2@2001-01-02], (1@2001-01-02, 1@2001-01-03]}
Conteo de puntos de pcpatch por instante, sumado a través de las filas
tnpoints(tpcpatch) → tint
Distinto de tCount(tpcpatch), que cuenta el número de parches (siempre 1 por instante). tnpoints se lee como «cuántos puntos había en la nube en el tiempo t», la primitiva natural para el control de calidad de la ingesta y los paneles de densidad a lo largo del tiempo.
SELECT tnpoints(v) FROM (VALUES (tpcpatch(pcpatch(pcpoint(1, 1, 1, 1),
pcpoint(1, 2, 2, 2)), '2001-01-01'::timestamptz)),
(tpcpatch(pcpatch(pcpoint(1, 3, 3, 3),
pcpoint(1, 4, 4, 4)), '2001-01-02'::timestamptz))) t(v);
-- {2@2001-01-01, 2@2001-01-02}
Densidad de puntos por instante (numPoints / área-bbox-xy) sumada a través de las filas
tdensity(tpcpatch) → tfloat
Cada pcpatch lleva el PCBOUNDS en línea (xmin / xmax / ymin / ymax) por lo que el término de área de la caja delimitadora se lee directamente, sin recálculo. Un parche de 1 punto o colineal produce +Infinity para ese instante; filtre con isfinite() en consultas posteriores si es necesario.
-- Each patch holds 2 points over a 1x1 xy-bbox.
SELECT tdensity(v) FROM (VALUES (tpcpatch(pcpatch(pcpoint(1, 1, 1, 1),
pcpoint(1, 2, 2, 2)), '2001-01-01'::timestamptz)),
(tpcpatch(pcpatch(pcpoint(1, 3, 3, 3),
pcpoint(1, 4, 4, 4)), '2001-01-02'::timestamptz))) t(v);
-- {2@2001-01-01, 2@2001-01-02}
Combina múltiples valores temporales en uno solo con todos los instantes de entrada fusionados en orden temporal
mergeAgg(tpcpoint) → tpcpoint mergeAgg(tpcpatch) → tpcpatch
Todas las entradas deben compartir el mismo pcid y subtipo.
SELECT numInstants(mergeAgg(v)) FROM (VALUES (tpcpoint(pcpoint(1, 1, 1, 1), '2001-01-01'::timestamptz)), (tpcpoint(pcpoint(1, 2, 2, 2), '2001-01-02'::timestamptz))) t(v); -- 2
Agregados de construcción en flujo: appendInstant ensambla instantes en una secuencia; appendSequence ensambla secuencias en un conjunto de secuencias
appendInstantAgg(tpcpoint[,interp,maxt]) → tpcpoint appendInstantAgg(tpcpatch) → tpcpatch appendSequenceAgg(tpcpoint) → tpcpoint appendSequenceAgg(tpcpatch) → tpcpatch
Útil para cargadores de trayectorias que consumen filas en orden temporal.
SELECT numInstants(appendInstant(v ORDER BY startTimestamp(v))) FROM (VALUES (tpcpoint(pcpoint(1, 1, 1, 1), '2001-01-01'::timestamptz)), (tpcpoint(pcpoint(1, 2, 2, 2), '2001-01-02'::timestamptz))) t(v); -- 2