Restringir al (complemento de) un valor o un conjunto de valores
atValue(tpose,value) → tpose minusValue(tpose,value) → tpose atValues(tpose,valueset) → tpose minusValues(tpose,valueset) → tpose
SELECT atValue(tpose '[Pose(Point(2 2), 0.3)@2001-01-01,
Pose(Point(2 2), 0.7)@2001-01-03]', 'Pose(Point(2 2), 0.5)');
-- {[Pose(Point(2 2),0.5)@2001-01-02]}
SELECT minusValue(tpose '[Pose(Point(2 2), 0.3)@2001-01-01,
Pose(Point(2 2), 0.7)@2001-01-03]', 'Pose(Point(2 2), 0.5)');
/* {[Pose(Point(2 2),0.3)@2001-01-01, Pose(Point(2 2),0.5)@2001-01-02),
(Pose(Point(2 2),0.5)@2001-01-02, Pose(Point(2 2),0.7)@2001-01-03]} */
Restringir al (complemento de) una geometría
atGeometry(tpose,geometry) → tpose minusGeometry(tpose,geometry) → tpose
SELECT atGeometry(tpose '[Pose(Point(2 2), 0.3)@2001-01-01,
Pose(Point(2 2), 0.7)@2001-01-03]',
'Polygon((40 40,40 50,50 50,50 40,40 40))');
SELECT minusGeometry(tpose '[Pose(Point(2 2), 0.3)@2001-01-01,
Pose(Point(2 2), 0.7)@2001-01-03]',
'Polygon((40 40,40 50,50 50,50 40,40 40))');
/* {(Pose(Point(2 2),0.342593)@2001-01-01 05:06:40.364673,
Pose(Point(2 2),0.7)@2001-01-03]} */
Restringir al (complemento de) un span de elevación
atElevation(tpose,floatspan) → tpose minusElevation(tpose,floatspan) → tpose
La elevación de una pose es la elevación de su posición, por lo que la restricción conserva los tiempos en los que esa posición se encuentra dentro del span. La pose temporal debe tener dimensión Z.
SELECT asText(atElevation(tpose '[Pose(Point(0 0 0),1,0,0,0)@2001-01-01,
Pose(Point(0 0 4),1,0,0,0)@2001-01-05]', floatspan '[1, 2]'));
/* {[Pose(POINT Z (0 0 1),1,0,0,0)@2001-01-02,
Pose(POINT Z (0 0 2),1,0,0,0)@2001-01-03]} */
SELECT asText(minusElevation(tpose '[Pose(Point(0 0 0),1,0,0,0)@2001-01-01,
Pose(Point(0 0 4),1,0,0,0)@2001-01-05]', floatspan '[1, 2]'));
/* {[Pose(POINT Z (0 0 0),1,0,0,0)@2001-01-01,
Pose(POINT Z (0 0 1),1,0,0,0)@2001-01-02),
(Pose(POINT Z (0 0 2),1,0,0,0)@2001-01-03,
Pose(POINT Z (0 0 4),1,0,0,0)@2001-01-05]} */