Todos os produtos
Search
Central de documentação

ApsaraDB RDS:ST_removeDriftPoints

Última atualização: Jul 05, 2026

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

traj

trajectory

Objeto de trajetória de source.

speed

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.

dist

float8

Limiar de distância, em metros. A medição corresponde à distância esférica entre o ponto atual e o anterior.

offset

interval

Limiar de intervalo de tempo. Utilize a sintaxe de interval do PostgreSQL, como interval '30 seconds' ou interval '1 minute'.

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)