Agregado de caja delimitadora sobre una columna de valores tpcpoint, tpcpatch o 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.
extent(tpcpoint) → tpcbox extent(tpcpatch) → tpcbox extent(tpcbox) → tpcbox
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. El resultado es un tint. Todas las filas de entrada deben compartir el mismo subtipo temporal (instante / secuencia / conjunto de secuencias).
tCount(tpcpoint) → tint, tCount(tpcpatch) → tint
wCount(tpcpoint,interval) → tint, wCount(tpcpatch,interval) → tint
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. 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.
tnpoints(tpcpatch) → tint
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. 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.
tdensity(tpcpatch) → tfloat
-- 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. Todas las entradas deben compartir el mismo pcid y subtipo.
merge(tpcpoint) → tpcpoint, merge(tpcpatch) → tpcpatch
mergeAgg(tpcpoint) → tpcpoint, mergeAgg(tpcpatch) → tpcpatch
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. Útil para cargadores de trayectorias que consumen filas en orden temporal.
appendInstant(tpcpoint[,interp,maxt]) → tpcpoint, appendInstant(tpcpatch) → tpcpatch
appendInstantAgg(tpcpoint[,interp,maxt]) → tpcpoint, appendInstantAgg(tpcpatch) → tpcpatch
appendSequence(tpcpoint) → tpcpoint, appendSequence(tpcpatch) → tpcpatch
appendSequenceAgg(tpcpoint) → tpcpoint, appendSequenceAgg(tpcpatch) → tpcpatch
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