すべてのプロダクト
Search
ドキュメントセンター

PolarDB:ST_lcsSimilarity

最終更新日:Jul 01, 2024

この関数は、最長共通サブシーケンス (LSSS) アルゴリズムに基づいて2つの軌道オブジェクト間の類似性を計算する。

構文

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');

パラメーター

パラメーター

説明

traj1

軌道オブジェクト1。

traj2

軌道オブジェクト2.

dist

2つの軌道点間の距離公差。 単位: メートル。

lag

2つの軌道点間の時間公差。

unit

距離の単位。 有効な値:

  • 'M': メートル。

  • 「KM」: キロメートル。

  • 'D': 度。 この値は、軌道オブジェクトの空間参照システム識別子 (SRID) がWGS84 (デフォルトでは4326) の場合にのみ有効です。

説明

LCSSアルゴリズムは、2つの軌道オブジェクト間の最大類似度を計算するために使用される。 2つの軌道点間の一貫性は、空間および時間におけるそれらの距離に基づいて決定される。 この関数は、2つの軌道オブジェクト間の類似性を計算し、一貫した軌道点の数を返します。

Similarity calculation algorithm

前の図に示すように、軌道点1、3、および6は、一貫性の条件を満たす。 この場合、この関数は3を返します。

一般に、軌道オブジェクトは有効なSRIDを有する。 指定しない場合、SRIDはデフォルトで4326されます。

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)