Transform a temporal circular buffer to another subtype
tcbufferInst(tcbuffer) → tcbufferInst tcbufferSeq(tcbuffer) → tcbufferSeq tcbufferSeqSet(tcbuffer) → tcbufferSeqSet
SELECT asText(tcbufferSeq(tcbuffer 'Cbuffer(Point(1 1), 0.5)@2001-01-01', 'discrete'));
-- {Cbuffer(POINT(1 1),0.5)@2001-01-01}
SELECT asText(tcbufferSeq(tcbuffer 'Cbuffer(Point(1 1), 0.5)@2001-01-01'));
-- [Cbuffer(POINT(1 1),0.5)@2001-01-01]
SELECT asText(tcbufferSeqSet(tcbuffer 'Cbuffer(Point(1 1), 0.5)@2001-01-01'));
-- {[Cbuffer(POINT(1 1),0.5)@2001-01-01]}
Transform a temporal circular buffer to another interpolation
setInterp(tcbuffer,interp text) → tcbuffer
SELECT asText(setInterp(tcbuffer 'Cbuffer(Point(1 1),0.2)@2001-01-01','linear'));
-- [Cbuffer(POINT(1 1),0.2)@2001-01-01]
SELECT asText(setInterp(tcbuffer '{[Cbuffer(Point(1 1),0.1)@2001-01-01],
[Cbuffer(Point(1 1),0.2)@2001-01-02]}', 'discrete'));
-- {Cbuffer(POINT(1 1),0.1)@2001-01-01, Cbuffer(POINT(1 1),0.2)@2001-01-02}
Round the points and the radii of the temporal circular buffer to the number of decimal places
round(tcbuffer,integer) → tcbuffer
SELECT asText(round(tcbuffer '{[Cbuffer(Point(1 1.123456789),0.123456789)@2001-01-01,
Cbuffer(Point(1 1),0.5)@2001-01-02)}', 3));
-- {[Cbuffer(POINT(1 1.123),0.123)@2001-01-01, Cbuffer(POINT(1 1),0.5)@2001-01-02)}
Extract the subsequences where the temporal circular buffer stays within an area with a specified maximum size for at least the given duration
stops(tcbuffer,maxdist float=0.0,minduration interval='0 minutes') → tcbuffer
The size of the area is the greatest distance between two centres of the subsequence, and a stop that begins or ends at the first or last instant of a sequence includes that instant only if the sequence does, as stated for a temporal point in stops.
SELECT asText(stops(tcbuffer '[Cbuffer(Point(1 1), 0.5)@2001-01-01,
Cbuffer(Point(1 1), 0.5)@2001-01-02, Cbuffer(Point(2 2), 0.5)@2001-01-03,
Cbuffer(Point(2 2), 0.5)@2001-01-04]'));
/* {[Cbuffer(POINT(1 1),0.5)@2001-01-01, Cbuffer(POINT(1 1),0.5)@2001-01-02],
[Cbuffer(POINT(2 2),0.5)@2001-01-03, Cbuffer(POINT(2 2),0.5)@2001-01-04]} */
Return a temporal value translated by given offsets
translate(tcbuffer,deltax float,deltay float) → tcbuffer
The motion moves the centre of every circular buffer and keeps its radius. A circular buffer is planar, so it takes no vertical offset and no rotation about the x or y axis.
The motion is a planar map, so a geodetic value raises an error.
SELECT asText(translate(tcbuffer '[Cbuffer(Point(1 1),0.5)@2001-01-01, Cbuffer(Point(3 2),1)@2001-01-02]', 1, 2), 6); -- [Cbuffer(POINT(2 3),0.5)@2001-01-01, Cbuffer(POINT(4 4),1)@2001-01-02]
Return a temporal value rotated counter-clockwise about the origin or about a point
rotate(tcbuffer,angle float) → tcbuffer rotate(tcbuffer,angle float,x0 float,y0 float) → tcbuffer
The motion moves the centre of every circular buffer and keeps its radius. A circular buffer is planar, so it takes no vertical offset and no rotation about the x or y axis.
The motion is a planar map, so a geodetic value raises an error.
SELECT asText(rotate(tcbuffer '[Cbuffer(Point(1 1),0.5)@2001-01-01, Cbuffer(Point(3 2),1)@2001-01-02]', 0.7, 1, 1), 6); /* [Cbuffer(POINT(1 1),0.5)@2001-01-01, Cbuffer(POINT(1.885467 3.053278),1)@2001-01-02] */
Return a temporal value rotated counter-clockwise about the z axis
rotateZ(tcbuffer,angle float) → tcbuffer
The motion moves the centre of every circular buffer and keeps its radius. A circular buffer is planar, so it takes no vertical offset and no rotation about the x or y axis.
The motion is a planar map, so a geodetic value raises an error.
SELECT asText(rotateZ(tcbuffer '[Cbuffer(Point(1 1),0.5)@2001-01-01, Cbuffer(Point(3 2),1)@2001-01-02]', 0.7), 6); /* [Cbuffer(POINT(0.120625 1.40906),0.5)@2001-01-01, Cbuffer(POINT(1.006091 3.462337),1)@2001-01-02] */