Relaciones alguna vez y siempre
eContains(geometry,{tpose,tposechain}) → boolean
eCovers(geometry,{tpose,tposechain}) → boolean
eDisjoint({geometry,tpose,tposechain},{geometry,tpose,tposechain}) → boolean
eDwithin({geometry,tpose,tposechain},{geometry,tpose,tposechain},float) → boolean
eIntersects({geometry,tpose,tposechain},{geometry,tpose,tposechain}) → boolean
eTouches(geometry,{tpose,tposechain}) → boolean
eTouches({tpose,tposechain},geometry) → boolean
aContains(geometry,{tpose,tposechain}) → boolean
aCovers(geometry,{tpose,tposechain}) → boolean
aDisjoint({geometry,tpose,tposechain},{geometry,tpose,tposechain}) → boolean
aDwithin({geometry,tpose,tposechain},{geometry,tpose,tposechain},float) → boolean
aIntersects({geometry,tpose,tposechain},{geometry,tpose,tposechain}) → boolean
aTouches(geometry,{tpose,tposechain}) → boolean
aTouches({tpose,tposechain},geometry) → boolean
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. Una pose temporal las responde en la posición que ocupa, de modo que un valor con interpolación lineal se responde a lo largo de su trayectoria y no solo en sus instantes. La pose 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 poses temporales, ya que un punto en movimiento no contiene ni cubre una geometría y dos puntos en movimiento no se tocan. Una cadena de poses temporal las responde en la posición de la pose temporal que da su composición, tpose(tposechain).
SELECT eContains(geometry 'Polygon((0 0,0 50,50 50,50 0,0 0))', tpose '[Pose(Point(1 1),0.1)@2001-01-01, Pose(Point(3 3),0.3)@2001-01-03]'); -- true SELECT aCovers(geometry 'Polygon((0 0,0 50,50 50,50 0,0 0))', tpose '[Pose(Point(1 1),0.1)@2001-01-01, Pose(Point(3 3),0.3)@2001-01-03]'); -- true SELECT eDisjoint(geometry(pose 'Pose(Point(2 2), 0.0)'), tpose '[Pose(Point(1 1),0.1)@2001-01-01, Pose(Point(1 1),0.3)@2001-01-03)'); -- true SELECT eIntersects(tpose '[Pose(Point(1 1),0.1)@2001-01-01, Pose(Point(3 3),0.1)@2001-01-03]', tpose '[Pose(Point(3 3),0.1)@2001-01-01, Pose(Point(1 1),0.1)@2001-01-03]'); -- true SELECT eTouches(tpose 'Pose(Point(0 0), 0.1)@2001-01-01', geometry 'Polygon((0 0,0 2,2 2,2 0,0 0))'); -- true SELECT aDwithin(tpose '[Pose(Point(1 1),0.1)@2001-01-01, Pose(Point(3 3),0.1)@2001-01-03]', geometry 'Point(9 9)', 1.0); -- false SELECT eIntersects(tposechain 'PoseChain(Pose(Point(1 1),0), Pose(Point(9 -1),0))@2001-01-01', geometry 'Polygon((0 0,0 2,2 2,2 0,0 0))'); -- false