Las funciones atGeometry, minusGeometry, atStbox y minusStbox restringen una trgeometry a (el complemento de) una geometría o una caja espaciotemporal. La semántica refleja la de tpose: una geometría rígida temporal está «en» una región en el instante t si y solo si su centroide (antena) en t se encuentra en esa región.
Restringe al (complemento de) una pose o un conjunto de poses
atValue(trgeometry,pose) → trgeometry minusValue(trgeometry,pose) → trgeometry atValues(trgeometry,poseset) → trgeometry minusValues(trgeometry,poseset) → trgeometry
SELECT asText(atValue(trgeometry 'Polygon((1 1,2 2,3 1,1 1));
[Pose(Point(1 1), 0.2)@2001-01-01, Pose(Point(1 1), 0.4)@2001-01-02,
Pose(Point(1 1), 0.5)@2001-01-03]', pose 'Pose(Point(1 1), 0.5)'));
-- POLYGON((1 1,2 2,3 1,1 1));{[Pose(POINT(1 1),0.5)@2001-01-03]}
SELECT asText(minusValue(trgeometry 'Polygon((1 1,2 2,3 1,1 1));
{Pose(Point(1 1), 0.3)@2001-01-01, Pose(Point(1 1), 0.5)@2001-01-02,
Pose(Point(1 1), 0.5)@2001-01-03}', pose 'Pose(Point(1 1), 0.5)'));
-- POLYGON((1 1,2 2,3 1,1 1));{Pose(POINT(1 1),0.3)@2001-01-01}
El valor de restricción es una pose, el valor base que interpola una geometría rígida temporal. La geometría de referencia se conserva sin cambios, de modo que el resultado describe el mismo cuerpo.
Restringe una trgeometry a (el complemento de) una geometría
atGeometry(trgeometry,geometry) → trgeometry minusGeometry(trgeometry,geometry) → trgeometry
SELECT temporalTime(atGeometry( trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0));
[Pose(Point(0 0), 0.0)@2001-01-01, Pose(Point(4 0), 0.0)@2001-01-05]',
geometry 'Polygon((1 -1,3 -1,3 1,1 1,1 -1))'));
-- {[2001-01-02, 2001-01-04]}
SELECT temporalTime(minusGeometry( trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0));
[Pose(Point(0 0), 0.0)@2001-01-01, Pose(Point(4 0), 0.0)@2001-01-05]',
geometry 'Polygon((1 -1,3 -1,3 1,1 1,1 -1))'));
-- {[2001-01-01, 2001-01-02), (2001-01-04, 2001-01-05]}
La restricción contra una geometría vacía devuelve NULL para atGeometry y la entrada original para minusGeometry.
Restringe una trgeometry a (el complemento de) una caja espaciotemporal
atStbox(trgeometry,stbox[,border_inc boolean=true]) → trgeometry minusStbox(trgeometry,stbox[,border_inc boolean=true]) → trgeometry
SELECT temporalTime(atStbox( trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0));
[Pose(Point(0 0), 0.0)@2001-01-01, Pose(Point(4 0), 0.0)@2001-01-05]',
stbox 'STBOX X((1, -1), (3, 1))'));
-- {[2001-01-02, 2001-01-04]}
SELECT temporalTime(atStbox( trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0));
[Pose(Point(0 0), 0.0)@2001-01-01, Pose(Point(4 0), 0.0)@2001-01-05]',
stbox 'STBOX T([2001-01-02, 2001-01-04])'));
-- {[2001-01-02, 2001-01-04]}
Si la STBox solo tiene un componente temporal, la llamada se reduce a atTime estándar; si solo tiene un componente espacial, se conserva el dominio temporal.