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 geometrías rígidas temporales
{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 geometrías rígidas temporales 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
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)