All Products
Search
Document Center

ApsaraDB RDS:ST_removeDriftPoints

Last Updated:Mar 29, 2026

Menghapus titik drift dari objek trajectory berdasarkan ambang batas kecepatan, jarak, dan waktu yang digabungkan. Titik trajectory hanya dihapus jika ketiga kondisi tersebut terpenuhi secara bersamaan.

Sintaksis

trajectory ST_removeDriftPoints(trajectory traj, float8 speed, float8 dist, interval offset);

Parameter

ParameterTypeDescription
trajtrajectoryObjek trajectory sumber.
speedfloat8Ambang batas kecepatan, dalam meter per detik. Dihitung secara real time berdasarkan posisi titik trajectory dan offset waktu.
distfloat8Ambang batas jarak, dalam meter. Diukur sebagai jarak bola (spherical distance) dari titik saat ini ke titik sebelumnya.
offsetintervalAmbang batas interval waktu. Gunakan sintaksis interval PostgreSQL, misalnya interval '30 seconds' atau interval '1 minute'.

Titik trajectory dihapus jika kecepatannya melebihi speed, jaraknya dari titik sebelumnya melebihi dist, dan interval waktunya melebihi offset. Titik yang hanya memenuhi satu atau dua kondisi tetap dipertahankan.

Nilai kembalian

Mengembalikan objek trajectory yang telah diperbarui. Objek yang dikembalikan selalu berisi minimal dua titik trajectory. Jika trajectory input hanya memiliki dua titik, tidak ada titik yang dihapus.

Catatan penggunaan

Coordinate reference system (CRS): Secara default, objek trajectory menggunakan World Geodetic System 1984 (WGS 84). Untuk menggunakan CRS yang berbeda, tentukan spatial reference system identifier (SRID) saat membuat objek trajectory atau panggil ST_SetSRID untuk mengaturnya setelahnya. Jarak bola dihitung berdasarkan SRID yang dikonfigurasi dan dinyatakan dalam meter.

Contoh

Contoh ini menghapus titik drift dari trajectory yang memiliki 53 titik, dengan ambang batas kecepatan 25,72 m/detik (sekitar 92,6 km/jam), ambang batas jarak 9.620 m, dan ambang batas waktu 30 detik. Dua titik memenuhi ketiga kondisi tersebut dan dihapus, sehingga tersisa 49 titik.

-- Periksa jumlah titik awal
SELECT id, st_leafcount(traj) FROM table_name WHERE id = 1;
 id | st_leafcount
----+--------------
  1 |           53
(1 row)

-- Hapus titik drift: kecepatan > 25,72 m/detik (~92,6 km/jam), jarak > 9.620 m, interval waktu > 30 detik
UPDATE table_name SET traj = ST_removeDriftPoints(traj, 25.72, 9620, interval '30 seconds') WHERE id = 1;

-- Dua titik drift dihapus. Jumlah baru: 49
SELECT id, st_leafcount(traj) FROM table_name WHERE id = 1;
 id | st_leafcount
----+--------------
  1 |           49
(1 row)