Append a temporal instant or a temporal sequence
appendInstant(tpose,tposeInst) → tpose
appendSequence(tpose,tposeSeq) → tpose
SELECT asText(appendInstant(tpose 'Pose(Point(1 1), 0.5)@2001-01-01', 'Pose(Point(2 2), 1)@2001-01-02')); -- [Pose(POINT(1 1),0.5)@2001-01-01, Pose(POINT(2 2),1)@2001-01-02] SELECT asText(appendSequence(tpose '[Pose(Point(1 1), 0.5)@2001-01-01]', '[Pose(Point(2 2), 1)@2001-01-02]')); -- {[Pose(POINT(1 1),0.5)@2001-01-01], [Pose(POINT(2 2),1)@2001-01-02]}
Merge the temporal poses
merge(tpose,tpose) → tpose
merge(tpose[]) → tpose
merge(tpose) → tpose
SELECT asText(merge(tpose '[Pose(Point(1 1 1),1,0,0,0)@2001-01-01, Pose(Point(2 2 2),0,1,0,0)@2001-01-02]', '[Pose(Point(2 2 2),0,1,0,0)@2001-01-02, Pose(Point(3 3 3),0,0,0,1)@2001-01-03]')); /* [Pose(POINT Z (1 1 1),1,0,0,0)@2001-01-01, Pose(POINT Z (2 2 2),0,1,0,0)@2001-01-02, Pose(POINT Z (3 3 3),0,0,0,1)@2001-01-03] */ SELECT asText(merge(ARRAY[tpose '{[Pose(Point(1 1),0.1)@2001-01-01, Pose(Point(2 2),0.2)@2001-01-02], [Pose(Point(3 3),0.3)@2001-01-03, Pose(Point(4 4),0.4)@2001-01-04]}', '[Pose(Point(4 4),0.4)@2001-01-04, Pose(Point(5 5),0.5)@2001-01-05]'])); /* {[Pose(POINT(1 1),0.1)@2001-01-01, Pose(POINT(2 2),0.2)@2001-01-02], [Pose(POINT(3 3),0.3)@2001-01-03, Pose(POINT(5 5),0.5)@2001-01-05]} */ WITH temp(inst) AS ( SELECT tpose 'Pose(Point(1 1),0.1)@2001-01-01' UNION SELECT tpose 'Pose(Point(2 2),0.2)@2001-01-02' UNION SELECT tpose 'Pose(Point(3 3),0.3)@2001-01-03' ) SELECT asText(merge(inst)) FROM temp; /* {Pose(POINT(1 1),0.1)@2001-01-01, Pose(POINT(2 2),0.2)@2001-01-02, Pose(POINT(3 3),0.3)@2001-01-03} */