Ever and always relationships
eContains(geometry,{tpose,tposechain}) → boolean
eCovers(geometry,{tpose,tposechain}) → boolean
eDisjoint({geo,tpose,tposechain},{geo,tpose,tposechain}) → boolean
eDwithin({geo,tpose,tposechain},{geo,tpose,tposechain},float) → boolean
eIntersects({geo,tpose,tposechain},{geo,tpose,tposechain}) → boolean
eTouches(geometry,{tpose,tposechain}) → boolean
eTouches({tpose,tposechain},geometry) → boolean
aContains(geometry,{tpose,tposechain}) → boolean
aCovers(geometry,{tpose,tposechain}) → boolean
aDisjoint({geo,tpose,tposechain},{geo,tpose,tposechain}) → boolean
aDwithin({geometry,tpose,tposechain},{geometry,tpose,tposechain},float) → boolean
aIntersects({geo,tpose,tposechain},{geo,tpose,tposechain}) → boolean
aTouches(geometry,{tpose,tposechain}) → boolean
aTouches({tpose,tposechain},geometry) → boolean
The ever and always relationships determine whether the topological or distance relationship is ever or always satisfied and result in a boolean. A temporal pose answers them at the position it occupies, so a value with linear interpolation is answered along its trajectory rather than at its instants alone. The temporal pose declares the relationships a moving point answers: eContains, aContains, eCovers and aCovers take the geometry first only, and eTouches and aTouches have no direction between two temporal poses, since a moving point neither contains nor covers a geometry and two moving points do not touch. A temporal pose chain answers them at the position of the temporal pose its composition gives, 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