La distancia entre una trgeometry y una geometría / pose / caja espaciotemporal / otra trgeometry se calcula sobre la geometría materializada: la forma de referencia rotada y trasladada de acuerdo con la pose. La distancia es exacta en cada marca de tiempo compartida; para entradas de secuencia, una bisección recursiva adaptativa emite marcas intermedias donde la trayectoria de distancia se desvía de una línea recta.
Devuelve la distancia temporal entre dos trgeometries
{geometry,trgeometry} <-> {geometry,trgeometry} → tfloat
tDistance({geometry,trgeometry}, {geometry,trgeometry}) → tfloat
SELECT round(maxValue(tDistance( trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0));Pose(Point(0 0), 0.0)@2001-01-01', trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0));Pose(Point(5 0), 0.0)@2001-01-01')), 6); -- 4 SELECT asText(tDistance( trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0));[Pose(Point(0 0), 0.0)@2001-01-01, Pose(Point(0 0), 0.0)@2001-01-02]', trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0));[Pose(Point(2 0), 0.0)@2001-01-01, Pose(Point(10 0), 0.0)@2001-01-02]')); -- [1@2001-01-01 ..., 9@2001-01-02 ...]
El despachador cubre cada combinación de subtipos: TINSTANT × TINSTANT, TINSTANT × TSEQUENCE asimétrica, TSEQUENCE × TSEQUENCE, TSEQUENCE × TSEQUENCESET, TSEQUENCESET × TSEQUENCESET. El núcleo de submuestreo adaptativo subyace a cada combinación continua; las combinaciones de instantes se materializan una vez. Los segmentos de traslación pura convergen en profundidad 0 (dos marcas extremas); los segmentos con mucha rotación emiten hasta 32 marcas por intervalo entre instantes. La cota sobre la aproximación interpolada LINEAL entre marcas es 1e-3 por construcción.
Devuelve la distancia más pequeña entre dos trgeometries sobre su dominio temporal compartido
{geometry,trgeometry,stbox} |=| {geometry,trgeometry,stbox} → float
nearestApproachDistance({geometry,trgeometry,stbox}, {geometry,trgeometry,stbox}) → float
SELECT trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0));[Pose(Point(0 0), 0.0)@2001-01-01, Pose(Point(10 0), 0.0)@2001-01-02]'
|=|
trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0));[Pose(Point(50 0), 0.0)@2001-01-01, Pose(Point(50 0), 0.0)@2001-01-02]';
-- 39
El operador |=| se puede utilizar para búsquedas de vecino más cercano contra índices GiST o SP-GiST (véase “Indexación”).
Devuelve el instante en el que los dos argumentos están a su menor distancia mutua
nearestApproachInstant({geometry,trgeometry}, {geometry,trgeometry}) → trgeometry
SELECT asText(nearestApproachInstant( trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0));[Pose(Point(0 0), 0.0)@2001-01-01, Pose(Point(10 0), 0.0)@2001-01-02]', geometry 'Point(5 5)')); -- POLYGON((5 0,6 0,6 1,5 1,5 0));Pose(POINT(5 0),0)@2001-01-01 12:00:00+00
Devuelve la línea que conecta los dos argumentos en su aproximación más cercana
shortestLine({geometry,trgeometry}, {geometry,trgeometry}) → geometry
SELECT ST_AsText(shortestLine( trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0));Pose(Point(0 0), 0.0)@2001-01-01', geometry 'Point(10 0)')); -- LINESTRING(1 0,10 0)