Se aplican los accesores estándar de los tipos temporales: cada uno devuelve la geometría materializada en la marca de tiempo solicitada (la forma de referencia rotada y trasladada de acuerdo con la pose interpolada), o un valor de metadatos derivado de la trayectoria de pose.
Devuelve la geometría materializada al inicio, al final o en una marca de tiempo elegida
startValue(trgeometry) → geometry endValue(trgeometry) → geometry valueAtTimestamp(trgeometry, timestamptz) → geometry
SELECT asText(startValue(trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0));[Pose(Point(0 0), 0.0)@2001-01-01, Pose(Point(10 0), 0.0)@2001-01-02]')); -- POLYGON((0 0,1 0,1 1,0 1,0 0)) SELECT asText(valueAtTimestamp( trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0));[Pose(Point(0 0), 0.0)@2001-01-01, Pose(Point(10 0), 0.0)@2001-01-02]', timestamptz '2001-01-01 12:00:00')); -- POLYGON((5 0,6 0,6 1,5 1,5 0))
Tenga en cuenta que la rotación interpola linealmente a lo largo del camino angular más corto; una rotación de 90° entre dos instantes separados por un día devuelve un polígono rotado 45° en el punto medio.
Devuelve el número de instantes, secuencias o marcas de tiempo distintos
numInstants(trgeometry) → integer numSequences(trgeometry) → integer numTimestamps(trgeometry) → integer
SELECT numInstants(trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0)); [Pose(Point(0 0), 0.0)@2001-01-01, Pose(Point(10 0), 0.0)@2001-01-02]'); -- 2 SELECT numSequences(trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0)); [Pose(Point(0 0), 0.0)@2001-01-01, Pose(Point(10 0), 0.0)@2001-01-02]'); -- 1 SELECT numTimestamps(trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0)); [Pose(Point(0 0), 0.0)@2001-01-01, Pose(Point(10 0), 0.0)@2001-01-02]'); -- 2
Devuelve el arreglo de instantes, secuencias o segmentos entre instantes constituyentes
instants(trgeometry) → trgeometry[] sequences(trgeometry) → trgeometry[] segments(trgeometry) → trgeometry[]
SELECT array_length(
instants(trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0));{Pose(Point(0 0), 0.0)@2001-01-01,
Pose(Point(5 0), 0.5)@2001-01-02, Pose(Point(0 0), 0.0)@2001-01-03}'),
1);
-- 3
Devuelve el conjunto de puntos del centroide (antena) distintos vistos a lo largo de la trgeometry
points(trgeometry) → geomset
SELECT asText(points(trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0));{Pose(Point(0 0),
0.0)@2001-01-01, Pose(Point(5 5), 0.0)@2001-01-02, Pose(Point(0 0), 0.0)@2001-01-03}'));
-- {"POINT(0 0)", "POINT(5 5)"}
Devuelve el ángulo yaw, pitch o roll como un flotante temporal, en radianes, bajo la convención Tait-Bryan intrínseca ZYX que exige la clase de conformidad Basic-YPR de OGC GeoPose
yaw(trgeometry) → tfloat pitch(trgeometry) → tfloat roll(trgeometry) → tfloat
Una geometría rígida lleva su orientación en sus poses, de modo que cada una de estas funciones se proyecta sobre la pose temporal y se lo pregunta, exactamente como lo hacen los accesores homónimos de tpose. Una geometría rígida 2D gira por el ángulo almacenado de cada pose y no cabecea ni alabea.
SELECT asText(yaw(trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0));[Pose(Point(0 0), 0.0)@2001-01-01, Pose(Point(0 0), 1.5)@2001-01-02]')); -- [0@2001-01-01, 1.5@2001-01-02] SELECT asText(pitch(trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0));[Pose(Point(0 0), 0.0)@2001-01-01, Pose(Point(0 0), 1.5)@2001-01-02]')); -- [0@2001-01-01, 0@2001-01-02]
Devuelve la geometría de referencia estática
geom(trgeometry) → geometry
SELECT ST_AsText(geom(trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0));Pose(Point(5 0), 0.5)@2001-01-01')); -- POLYGON((0 0,1 0,1 1,0 1,0 0))