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 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 bool=true) → tpose douglasPeuckerSimplify(tpose,maxdist float,syncdist bool=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]