Remove pontos de desvio de um objeto de trajetória com base em limiares combinados de velocidade, distância e tempo. Um ponto da trajetória é excluído somente quando todas as três condições são atendidas simultaneamente.
Sintaxe
trajectory ST_removeDriftPoints(trajectory traj, float8 speed, float8 dist, interval offset);
Parâmetros
|
Parâmetro |
Tipo |
Descrição |
|
|
trajectory |
Objeto de trajetória de source. |
|
|
float8 |
Limiar de velocidade, em metros por segundo. O cálculo ocorre em tempo real com base na posição do ponto da trajetória e no deslocamento temporal. |
|
|
float8 |
Limiar de distância, em metros. A medição corresponde à distância esférica entre o ponto atual e o anterior. |
|
|
interval |
Limiar de intervalo de tempo. Utilize a sintaxe de |
A remoção de um ponto da trajetória ocorre quando sua velocidade excede speed, sua distância em relação ao ponto anterior supera dist e seu intervalo de tempo ultrapassa offset. O sistema mantém os pontos que satisfazem apenas uma ou duas dessas condições.
Valor retornado
Retorna o objeto de trajetória atualizado. O objeto resultante sempre contém pelo menos dois pontos de trajetória. Caso a trajetória de entrada possua exatamente dois pontos, nenhuma remoção será efetuada.
Notas de uso
Sistema de referência de coordenadas (CRS): Por padrão, os objetos de trajetória utilizam o World Geodetic System 1984 (WGS 84). Para adotar um CRS diferente, especifique um identificador de sistema de referência espacial (SRID) durante a criação do objeto de trajetória ou invoque ST_SetSRID para defini-lo posteriormente. O cálculo das distâncias esféricas toma como base o SRID configurado e o resultado é expresso em metros.
Exemplo
Este exemplo remove pontos de desvio de uma trajetória com 53 pontos, aplicando um limiar de velocidade de 25,72 m/s (aproximadamente 92,6 km/h), um limiar de distância de 9.620 m e um limiar de tempo de 30 segundos. Dois pontos atendem às três condições simultaneamente e são removidos, restando 49 pontos.
-- Check the initial point count
SELECT id, st_leafcount(traj) FROM table_name WHERE id = 1;
id | st_leafcount
----+--------------
1 | 53
(1 row)
-- Remove drift points: speed > 25.72 m/s (~92.6 km/h), distance > 9,620 m, time interval > 30 seconds
UPDATE table_name SET traj = ST_removeDriftPoints(traj, 25.72, 9620, interval '30 seconds') WHERE id = 1;
-- Two drift points removed. New count: 49
SELECT id, st_leafcount(traj) FROM table_name WHERE id = 1;
id | st_leafcount
----+--------------
1 | 49
(1 row)