Devuelve una pose temporal simplificada asegurando que los puntos consecutivos estén separados al menos una cierta distancia o intervalo de tiempo
minDistSimplify(tpose,mindist float) → tpose minTimeDeltaSimplify(tpose,mint interval) → tpose
La simplificación opera sobre la trayectoria de los puntos de la pose temporal y preserva la orientación en cada instante que sobrevive. La trayectoria se simplifica en el plano, por lo que una pose geodésica con interpolación lineal genera un error. La simplificación se aplica únicamente a secuencias temporales o conjuntos de secuencias con interpolación lineal. En todos los demás casos, se devuelve una copia del valor dado.
SELECT asText(minDistSimplify(tpose '[Pose(Point(1 1), 0)@2001-01-01, Pose(Point(2 2), 0)@2001-01-02, Pose(Point(3 3), 0)@2001-01-03]', 2)); -- [Pose(POINT(1 1),0)@2001-01-01, Pose(POINT(3 3),0)@2001-01-03] SELECT asText(minTimeDeltaSimplify(tpose '[Pose(Point(1 1), 0)@2001-01-01, Pose(Point(2 2), 0)@2001-01-02, Pose(Point(3 3), 0)@2001-01-04]', interval '2 days')); -- [Pose(POINT(1 1),0)@2001-01-01, Pose(POINT(3 3),0)@2001-01-04]
Devuelve una pose temporal simplificada mediante el algoritmo de Douglas-Peucker
maxDistSimplify(tpose,maxdist float,syncdist boolean=true) → tpose douglasPeuckerSimplify(tpose,maxdist float,syncdist boolean=true) → tpose
El argumento syncdist indica si la distancia se mide entre instantes sincronizados; cuando es falso la distancia es la espacial, ignorando el tiempo.
SELECT asText(maxDistSimplify(tpose '[Pose(Point(1 1), 0)@2001-01-01, Pose(Point(2 1), 0)@2001-01-02, Pose(Point(3 3), 0)@2001-01-03]', 1)); -- [Pose(POINT(1 1),0)@2001-01-01, Pose(POINT(3 3),0)@2001-01-03] SELECT asText(douglasPeuckerSimplify(tpose '[Pose(Point(1 1), 0)@2001-01-01, Pose(Point(2 1), 0)@2001-01-02, Pose(Point(3 3), 0)@2001-01-03]', 1)); -- [Pose(POINT(1 1),0)@2001-01-01, Pose(POINT(3 3),0)@2001-01-03]