Spatiotemporal relationships
tContains(geometry,{tpose,tposechain}) → tbool
tCovers(geometry,{tpose,tposechain}) → tbool
tDisjoint({geometry,tpose,tposechain},{geometry,tpose,tposechain}) → tbool
tDwithin({geometry,tpose,tposechain},{geometry,tpose,tposechain},float) → tbool
tIntersects({geometry,tpose,tposechain},{geometry,tpose,tposechain}) → tbool
tTouches(geometry,{tpose,tposechain}) → tbool
tTouches({tpose,tposechain},geometry) → tbool
The temporal relationships compute the topological or distance relationship at each instant and result in a tbool. 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: tContains and tCovers take the geometry first only, and tTouches has no direction between two temporal poses, since a moving point neither contains nor covers a geometry and two moving points do not touch.
SELECT tIntersects(tpose '[Pose(Point(1 1), 0.1)@2001-01-01,
Pose(Point(3 3), 0.1)@2001-01-03]', geometry 'Polygon((0 0,0 2,2 2,2 0,0 0))');
-- {[t@2001-01-01, t@2001-01-02], (f@2001-01-02, f@2001-01-03]}
SELECT tDisjoint(tpose '[Pose(Point(1 1), 0.1)@2001-01-01,
Pose(Point(3 3), 0.1)@2001-01-03]', geometry 'Polygon((0 0,0 2,2 2,2 0,0 0))');
-- {[f@2001-01-01, f@2001-01-02], (t@2001-01-02, t@2001-01-03]}
SELECT tContains(geometry 'Polygon((0 0,0 2,2 2,2 0,0 0))',
tpose 'Pose(Point(0 0), 0.1)@2001-01-01');
-- f@2001-01-01
SELECT tCovers(geometry 'Polygon((0 0,0 2,2 2,2 0,0 0))',
tpose 'Pose(Point(0 0), 0.1)@2001-01-01');
-- t@2001-01-01
SELECT tTouches(tpose 'Pose(Point(0 0), 0.1)@2001-01-01',
geometry 'Polygon((0 0,0 2,2 2,2 0,0 0))');
-- t@2001-01-01
SELECT tDwithin(tpose '[Pose(Point(1 1),0.3)@2001-01-01,
Pose(Point(1 1),0.5)@2001-01-03)',
tpose '[Pose(Point(1 1),0.5)@2001-01-01, Pose(Point(3 3),0.3)@2001-01-03)', 1);
/* {[t@2001-01-01, t@2001-01-01 16:58:14.025894],
(f@2001-01-01 16:58:14.025894, f@2001-01-03)} */