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

ApsaraDB RDS:ST_{2D | 2DT | 3D | 3DT}Intersects_IndexLeft

最終更新日:Jan 15, 2024

この関数は、2つのオブジェクトが指定された軸で交差するかどうかを判断します。 この関数では、最初に指定したオブジェクトを格納する列のインデックスを使用するように指定することもできます。

構文

bool ST_{2D | 2DT | 3D | 3DT}Intersects_IndexLeft(trajectory traj1、trajectory traj2、timestamp ts、timestamp te);

パラメーター

パラメーター

説明

traj1

比較する軌道、または比較するサブ軌道を含む元の軌道。

traj2

比較する軌道、または比較するサブ軌道を含む元の軌道。

ts

サブ軌道を抽出する時間範囲の始まり。 このパラメーターはオプションです。

te

サブ軌道を抽出する時間範囲の終わり。 このパラメーターはオプションです。

説明

ST_ndIntersects関数を呼び出して、ST_{2D | 2DT | 3D | 3DT} 交差 (trajectory traj1, trajectory traj2, timestamp ts, timestamp te) 構文を使用して2つのサブ軌道を比較する場合、関数は使用するインデックスを決定できません。 これは、追加の計算オーバーヘッドを引き起こす。

ST_ndIntersects_IndexLeft(...) 関数の使用を推奨します。 この関数を使用すると、最初に指定したサブ軌道を格納する列のインデックスを手動で指定できます。 これにより、コンピューティングオーバーヘッドが削減されます。

例:

EXPLAIN SELECT count(*) FROM sqltr_test_trajs WHERE ST_2DIntersects_IndexLeft(traj, ST_makeTrajectory('STPOINT ', 'LINESTRING(-70 -30, -72 -34, -73 -35))'::geometry, '[2000-01-01 00:01-01: 1:30, 2000-01
  '{"leafcount":3、"attributes": {"velocity": {"type": "integer" 、"length": 2、"nullable" : true、"value": [120,130,140]} 、"accuracy": {"type": "float" 、"length": 4、"nullable" : false、"value" [120,130,140]} 、"bearing": {"type": "float" 、"length": 8、"nullable" : false、"value": [120,130,140]} 、"acceleration": {"type": "string" 、"length": 20、"nullable" : true、"value": ["120" 、"130" 、"140"]} 、"active": {"type": "timestamp" 、"nullable" : false、"value": ["Fri Jan 01 11:35:00 2010" 、"Fri Jan 01 12:35:00 2010" 、"Fri Jan 01 13:30:00 2010"]} 、"events": [{"2": "Fri Jan 02 15:00:00 2010"} 、{"3" "Fri Jan 02 15:30:00 2010"}]') 、ST_PGEpochToTS(0) 、ST_PGEpochToTs(7000);

クエリ計画
------------------
集計 (コスト=4201.04 .. 4201.05行=1幅=8)
   -> sqltr_test_trajsのビットマップヒープスキャン (コスト=98.64 .. 4199.77行=505幅=0)
         Recheck Cond :( 'BOX2DT(-73 -35 2000-01-01 00:01:29.999994、-70 -30 2000-01-01 00:15:00)'::boxndf &#& traj)
         フィルター:_st_2dcrosses (traj, '{"trajectory":{"version":1,"type":"STPOINT","leafcount":3,"start_time":"2000-01-01 00:01:30","end_time":"2000-01 00:15:00","spatial":"LINESTRING(-70 -30,-72 -34)-73 -35)","timeline":["2000-01-01 00:01:30","2000-01-01 00:08:15","2000-01-01 00:15:00"],"attributes":{"leafcount":3,"velocity":{"type":"integer","length":2,"nullable":true,"value" [120,130,140]},"accuracy":{"type":"float","length":4,"nullable":false,"value":[120.0,130.0,140.0]},"bearing":{"type":"float","length":8,"nullable":false,"value":[120.0,130.0,140.0]} 、"acceleration":{"type":"string" 、"length":20、"nullable":true、"value":["120" 、"130" 、"140"]} 、"active":{"type":"timestamp" 、"length":8、"nullable":false、"value" ["2010-01-01 11:35:00","2010-01-01 12:35:00","2010-01-01 13:30:00"]}}, "events":[{"2":"2010-01-02 15:00:00" },{ "3":"2010-01-02 15:30:00"}]}}': 軌道, '2000-01-00:01-00:00: ': タイムゾーンなしのタイムスタンプ、'2000-01-01 01:56:40':: タイムゾーンなしのタイムスタンプ)
         -> sqltr_test_traj_gist_2dtのビットマップインデックススキャン (コスト=0.00 .. 98.51行=1515幅=0)
               Index Cond: (traj &#& 'BOX2DT(-73 -35 2000-01-01 00:01:29.999994,-70 -30 2000-01-01 00:15:00)'::boxndf)