全部产品
Search
文档中心

:ST_lcsSimilarity

更新时间:Jul 02, 2025

Fungsi ini menghitung kesamaan antara dua objek trajektori menggunakan algoritma sub-sekuens umum terpanjang (LCSS).

Sintaksis

integer ST_lcsSimilarity(trajectory traj1, trajectory traj2, float8 dist, distanceUnit unit default 'M');
integer ST_lcsSimilarity(trajectory traj1, trajectory traj2, float8 dist, interval lag, distanceUnit unit default 'M');

Parameter

Parameter Deskripsi
traj1 Objek trajektori 1.
traj2 Objek trajektori 2.
dist Toleransi jarak antara dua titik trajektori. Satuan: meter.
lag Toleransi waktu antara dua titik trajektori.
unit Satuan dari jarak. Nilai yang valid:
  • 'M': meter.
  • 'KM': kilometer.
  • 'D': derajat. Nilai ini hanya valid ketika pengenal sistem referensi spasial (SRID) dari objek trajektori adalah WGS84 (4326 secara default).

Deskripsi

Algoritma LCSS digunakan untuk menghitung kesamaan maksimum antara dua objek trajektori. Konsistensi antara dua titik trajektori ditentukan berdasarkan jarak mereka di ruang dan waktu. Fungsi ini menghitung kesamaan antara dua objek trajektori dan mengembalikan jumlah titik trajektori yang konsisten.

Algoritma perhitungan kesamaan

Seperti yang ditunjukkan pada gambar di atas, titik-titik trajektori 1, 3, dan 6 memenuhi kondisi konsistensi. Dalam hal ini, fungsi ini mengembalikan nilai 3.

Umumnya, objek trajektori memiliki SRID yang valid. Jika tidak ditentukan, nilai default SRID adalah 4326.

Contoh

With traj AS (
    Select ST_makeTrajectory('STPOINT', 'LINESTRINGZ(114.000528 33.588163 54.87, 114.000535 33.588235 54.85, 114.000447 33.588272 54.69, 114.000348 33.588287 54.73, 114.000245 33.588305 55.26, 114.000153 33.588305 55.3)'::geometry,
                             ARRAY['2010-01-01 11:30'::timestamp, '2010-01-01 11:31', '2010-01-01 11:32', '2010-01-01 11:33','2010-01-01 11:34','2010-01-01 11:35'], NULL) a,
           ST_makeTrajectory('STPOINT', 'LINESTRINGZ(114.000529 33.588163 54.87, 114.000535 33.578235 54.85, 114.000447 33.578272 54.69, 114.000348 33.578287 54.73, 114.000245 33.578305 55.26, 114.000163 33.588305 55.3)'::geometry,
                             ARRAY['2010-01-01 11:29:58'::timestamp, '2010-01-01 11:31:02', '2010-01-01 11:33', '2010-01-01 11:33:09','2010-01-01 11:34','2010-01-01 11:34:30'], NULL) b)
Select st_LCSSimilarity(a, b, 100) from traj;
  st_lcssimilarity    
-------------------
 2
 (1 row)

 With traj AS (
    Select ST_makeTrajectory('STPOINT', 'LINESTRINGZ(114.000528 33.588163 54.87, 114.000535 33.588235 54.85, 114.000447 33.588272 54.69, 114.000348 33.588287 54.73, 114.000245 33.588305 55.26, 114.000153 33.588305 55.3)'::geometry,
                             ARRAY['2010-01-01 11:30'::timestamp, '2010-01-01 11:31', '2010-01-01 11:32', '2010-01-01 11:33','2010-01-01 11:34','2010-01-01 11:35'], NULL) a,
           ST_makeTrajectory('STPOINT', 'LINESTRINGZ(114.000529 33.588163 54.87, 114.000535 33.578235 54.85, 114.000447 33.578272 54.69, 114.000348 33.578287 54.73, 114.000245 33.578305 55.26, 114.000163 33.588305 55.3)'::geometry,
                             ARRAY['2010-01-01 11:29:58'::timestamp, '2010-01-01 11:31:02', '2010-01-01 11:33', '2010-01-01 11:34:15','2010-01-01 11:34:50','2010-01-01 11:34:30'], NULL) b)
Select st_LCSSimilarity(a, b, 100, interval '30 seconds') from traj;
 st_lcssimilarity   
-------------------
2 
(1 row)