Spatiotemporal relationships
tContains({geometry,trgeometry},{geometry,trgeometry}) → tbool
tCovers({geometry,trgeometry},{geometry,trgeometry}) → tbool
tDisjoint({geometry,trgeometry},{geometry,trgeometry}) → tbool
tDwithin({geometry,trgeometry},{geometry,trgeometry},float) → tbool
tIntersects({geometry,trgeometry},{geometry,trgeometry}) → tbool
tTouches({geometry,trgeometry},{geometry,trgeometry}) → tbool
The temporal relationships compute the topological or distance relationship at each instant and result in a tbool. A rigid geometry covers an area, so every relationship is declared in both directions and between two temporal rigid geometries. A body that meets another only between two instants of a linear value thus answers false at both. For a value in three dimensions, tIntersects and tDisjoint do not yet answer rightly, since a point inside the body at an instant is reported as not meeting it, and tContains, tCovers and tTouches are not yet supported.
SELECT tIntersects(trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0)); [Pose(Point(0 0),0)@2001-01-01, Pose(Point(3 3),0)@2001-01-03]', geometry 'Polygon((0 0,0 2,2 2,2 0,0 0))'); -- [t@2001-01-01, f@2001-01-03]
tDwithin uses the temporal distance of the section called “Distance Operations”, with the same requirements on the geometries. Its result changes at the exact times at which the distance crosses the given distance. In the example, a square turns a quarter turn next to a point. It is within 1.7 of the point from 07:26:20 to 16:33:39.
SELECT tDwithin(trgeometry 'Polygon((-1 -1,1 -1,1 1,-1 1,-1 -1));
[Pose(Point(0 0),0)@2001-01-01, Pose(Point(0 0),1.5707963267948966)@2001-01-02]',
geometry 'Point(3 0)', 1.7);
-- {[f@2001-01-01, t@2001-01-01 07:26:20.193911, t@2001-01-01 16:33:39.806089],
-- (f@2001-01-01 16:33:39.806089, f@2001-01-02]}