Devuelve la distancia más cercana
{geo,cbuffer,tcbuffer,stbox} |=| {geo,cbuffer,tcbuffer,stbox} → float
El operador |=| se puede utilizar para realizar búsquedas del vecino más cercano utilizando un índice GiST o SP-GiST (ver “Indexación”).
SELECT tcbuffer '[Cbuffer(Point(2 2), 0.3)@2001-01-01, Cbuffer(Point(2 2), 0.7)@2001-01-02]' |=| geometry 'Linestring(50 50,55 55)'; -- 67.18225099390857 SELECT tcbuffer '[Cbuffer(Point(2 2), 0.3)@2001-01-01, Cbuffer(Point(2 2), 0.7)@2001-01-02]' |=| cbuffer 'Cbuffer(Point(1 1), 0.5)'; -- 0.2142135623730952
Devuelve el instante del primer búfer circular temporal en el que los dos argumentos están a la distancia más cercana
nearestApproachInstant({geo,cbuffer,tcbuffer},{geo,cbuffer,tcbuffer}) → tcbuffer
SELECT asText(nearestApproachInstant(tcbuffer '[Cbuffer(Point(2 2), 0.3)@2001-01-01, Cbuffer(Point(2 2), 0.7)@2001-01-02]', geometry 'Linestring(50 50,55 55)')); -- Cbuffer(POINT(2 2),0.7)@2001-01-02 SELECT asText(nearestApproachInstant(tcbuffer '[Cbuffer(Point(2 2), 0.3)@2001-01-01, Cbuffer(Point(2 2), 0.7)@2001-01-02]', cbuffer 'Cbuffer(Point(1 1), 0.5)')); -- Cbuffer(POINT(2 2),0.7)@2001-01-02
Devuelve la línea que conecta el punto de aproximación más cercano entre los dos argumentos
shortestLine({geo,cbuffer,tcbuffer},{geo,cbuffer,tcbuffer}) → geometry
La función devuelve la primera línea que encuentre si hay más de una
SELECT ST_AsText(shortestLine(tcbuffer '[Cbuffer(Point(2 2), 0.3)@2001-01-01, Cbuffer(Point(2 2), 0.7)@2001-01-02]', geometry 'Linestring(50 50,55 55)')); -- LINESTRING(2.494974746830583 2.494974746830583,50 50) SELECT ST_AsText(shortestLine(tcbuffer '[Cbuffer(Point(2 2), 0.3)@2001-01-01, Cbuffer(Point(2 2), 0.7)@2001-01-02]', cbuffer 'Cbuffer(Point(1 1), 0.5)')); -- LINESTRING(1.505025253169417 1.505025253169417,1.353553390593274 1.353553390593274)
Devuelve la distancia temporal
{geo,cbuffer} <-> tcbuffer → tfloat
tcbuffer <-> {geo,cbuffer,tcbuffer} → tfloat
SELECT tcbuffer '[Cbuffer(Point(1 1), 0.3)@2001-01-01, Cbuffer(Point(1 1), 0.5)@2001-01-03]' <-> cbuffer 'Cbuffer(Point(1 1), 0.2)'; -- [0@2001-01-01, 0@2001-01-03] SELECT tcbuffer '[Cbuffer(Point(1 1), 0.3)@2001-01-01, Cbuffer(Point(1 1), 0.5)@2001-01-03]' <-> geometry 'Point(50 50)'; -- [68.99646455628165@2001-01-01, 68.79646455628166@2001-01-03] SELECT tcbuffer '[Cbuffer(Point(1 1), 0.3)@2001-01-01, Cbuffer(Point(1 1), 0.5)@2001-01-03]' <-> tcbuffer '[Cbuffer(Point(1 1), 0.3)@2001-01-02, Cbuffer(Point(1 1), 0.5)@2001-01-04]'; -- [0@2001-01-02, 0@2001-01-03]
Devuelve la distancia espacial mínima entre dos conjuntos de búferes circulares temporales, ignorando el tiempo
minDistance(tcbuffer[],tcbuffer[]) → float
La distancia se mide entre las áreas recorridas sin tener en cuenta el tiempo, igual a ST_Distance del área recorrida de cada argumento, y el resultado es el mínimo sobre todos los pares tomados de los dos conjuntos. Dos valores cuyos discos barren la misma región en momentos distintos están por lo tanto a distancia cero. La magnitud sincronizada en el tiempo, que compara dos argumentos solo en los instantes que comparten, es |=|. Un único par es el caso de un elemento.
SELECT minDistance(ARRAY[tcbuffer '[Cbuffer(Point(0 0),1)@2001-01-01, Cbuffer(Point(2 0),1)@2001-01-02]'], ARRAY[tcbuffer '[Cbuffer(Point(0 5),0.5)@2001-01-03, Cbuffer(Point(2 5),0.5)@2001-01-04]']); -- 3.5