Las relaciones topológicas y de distancia descritas en “Relaciones espaciales”, como eIntersects, aDwithin o tContains, se definen en el espacio geográfico, mientras que los puntos de la red temporal se definen en el espacio de la red. Cada una de estas relaciones también acepta directamente un argumento tnpoint: cada operando de punto de red se convierte en un punto geométrico temporal mediante la conversión estándar tnpoint::tgeompoint (el punto resuelto a lo largo de su ruta) y la relación correspondiente del punto geométrico temporal calcula el resultado, exactamente como si la conversión se hubiera escrito manualmente. Una secuencia conserva la interpolación que lleva, de modo que una con la interpolación lineal predeterminada se responde a lo largo de su ruta y no solo en sus instantes.
Las relaciones alguna vez y siempre determinan si la relación topológica o de distancia se satisface alguna vez o siempre y dan como resultado un boolean. Un punto de red temporal las responde en la posición a la que se resuelven su ruta y su fracción, de modo que una secuencia con interpolación lineal se responde a lo largo de su ruta y no solo en sus instantes. El punto de red temporal declara las relaciones que responde un punto en movimiento: eContains, aContains, eCovers y aCovers toman la geometría en primer lugar únicamente, y eTouches y aTouches no tienen dirección entre dos puntos de red temporales, ya que un punto en movimiento no contiene ni cubre una geometría y dos puntos en movimiento no se tocan.
eContains(geometry,tnpoint) → boolean
eCovers(geometry,tnpoint) → boolean
eDisjoint({geometry,tnpoint},{geometry,tnpoint}) → boolean
eDwithin({geometry,tnpoint},{geometry,tnpoint},float) → boolean
eIntersects({geometry,tnpoint},{geometry,tnpoint}) → boolean
eTouches(geometry,tnpoint) → boolean
eTouches(tnpoint,geometry) → boolean
aContains(geometry,tnpoint) → boolean
aCovers(geometry,tnpoint) → boolean
aDisjoint({geometry,tnpoint},{geometry,tnpoint}) → boolean
aDwithin({geometry,tnpoint},{geometry,tnpoint},float) → boolean
aIntersects({geometry,tnpoint},{geometry,tnpoint}) → boolean
aTouches(geometry,tnpoint) → boolean
aTouches(tnpoint,geometry) → boolean
SELECT eContains(geometry 'SRID=5676;Polygon((0 0,0 50,50 50,50 0,0 0))', tnpoint '[Npoint(1, 0.1)@2001-01-01, Npoint(1, 0.3)@2001-01-03]'); -- false SELECT eCovers(geometry 'SRID=5676;Polygon((0 0,0 50,50 50,50 0,0 0))', tnpoint 'Npoint(1, 0.1)@2001-01-01'); -- false SELECT eDisjoint(geometry(npoint 'NPoint(2, 0.0)'), tnpoint '[Npoint(1, 0.1)@2001-01-01, Npoint(1, 0.3)@2001-01-03]'); -- true SELECT eIntersects(tnpoint '[Npoint(1, 0.1)@2001-01-01, Npoint(1, 0.3)@2001-01-03]', tnpoint '[Npoint(2, 0.0)@2001-01-01, Npoint(2, 1)@2001-01-03]'); -- false SELECT eTouches(tnpoint 'Npoint(1, 0.1)@2001-01-01', geometry 'SRID=5676;Polygon((0 0,0 50,50 50,50 0,0 0))'); -- false SELECT aDwithin(tnpoint '[Npoint(1, 0.3)@2001-01-01, Npoint(1, 0.5)@2001-01-03]', tnpoint '[Npoint(1, 0.5)@2001-01-01, Npoint(1, 0.3)@2001-01-03]', 1); -- false
Las relaciones temporales calculan la relación topológica o de distancia en cada instante y dan como resultado un tbool. Un punto de red temporal las responde en la posición a la que se resuelven su ruta y su fracción. El punto de red temporal declara las relaciones que responde un punto en movimiento: tContains y tCovers toman la geometría en primer lugar únicamente, y tTouches no tiene dirección entre dos puntos de red temporales, ya que un punto en movimiento no contiene ni cubre una geometría y dos puntos en movimiento no se tocan.
tContains(geometry,tnpoint) → tbool
tCovers(geometry,tnpoint) → tbool
tDisjoint({geometry,tnpoint},{geometry,tnpoint}) → tbool
tDwithin({geometry,tnpoint},{geometry,tnpoint},float) → tbool
tIntersects({geometry,tnpoint},{geometry,tnpoint}) → tbool
tTouches(geometry,tnpoint) → tbool
tTouches(tnpoint,geometry) → tbool
SELECT tContains(geometry 'SRID=5676;Polygon((0 0,0 50,50 50,50 0,0 0))',
tnpoint '[Npoint(1, 0.1)@2001-01-01, Npoint(1, 0.3)@2001-01-03]');
-- {[f@2001-01-01, f@2001-01-03]}
SELECT tCovers(geometry 'SRID=5676;Polygon((0 0,0 50,50 50,50 0,0 0))',
tnpoint 'Npoint(1, 0.1)@2001-01-01');
-- f@2001-01-01
SELECT tDisjoint(geometry(npoint 'NPoint(2, 0.0)'),
tnpoint '[Npoint(1, 0.1)@2001-01-01, Npoint(1, 0.3)@2001-01-03]');
-- {[t@2001-01-01, t@2001-01-03]}
SELECT tTouches(tnpoint 'Npoint(1, 0.1)@2001-01-01',
geometry 'SRID=5676;Polygon((0 0,0 50,50 50,50 0,0 0))');
-- f@2001-01-01
SELECT tIntersects(tnpoint '[Npoint(1, 0.1)@2001-01-01, Npoint(1, 0.3)@2001-01-03]',
tnpoint '[Npoint(1, 0.3)@2001-01-01, Npoint(1, 0.1)@2001-01-03]');
-- {[f@2001-01-01, t@2001-01-02], (f@2001-01-02, f@2001-01-03]}
SELECT tDwithin(tnpoint '[Npoint(1, 0.3)@2001-01-01, Npoint(1, 0.5)@2001-01-03]',
tnpoint '[Npoint(1, 0.5)@2001-01-01, Npoint(1, 0.3)@2001-01-03]', 1);
/* {[f@2001-01-01, t@2001-01-01 22:19:04.400634,
t@2001-01-02 01:40:55.599365], (f@2001-01-02 01:40:55.599365,
f@2001-01-03]} */