Trajectory SQL は、時間の経過に伴うオブジェクトの移動をモデル化し、クエリするための PolarDB for Oracle の拡張機能です。このページでは、Trajectory SQL を使用する際に登場する主要なデータ型と概念を定義します。
トラジェクトリオブジェクト
トラジェクトリオブジェクトは、移動オブジェクト (車両、人、または時間の経過とともに位置が変化する任意のエンティティ) の完全な移動履歴を記録します。これは、トラジェクトリポイントとイベントで構成される高次元の構造で、時間、空間、属性、イベントの 4 つのディメンションにまたがります。
次の表では、トラジェクトリオブジェクトの各コンポーネントを定義します。
| 用語 | 説明 |
|---|---|
| トラジェクトリポイント | 特定の時点における移動オブジェクトのスナップショットです。各ポイントは、オブジェクトの空間位置 (2D または 3D 座標) と、さまざまなデータ型を使用する任意の数の属性フィールドを記録します。 |
| トラジェクトリオブジェクト | 移動オブジェクトの完全な時空間レコードです。トラジェクトリポイントとイベントで構成され、時間、空間、属性、イベントを含みます。 |
| トラジェクトリタイムライン | トラジェクトリにおけるタイムスタンプの順序付きシーケンスです。タイムスタンプは連続している必要があります。欠落や順序の入れ替わりは許可されません。 |
| トラジェクトリスペイシャル | トラジェクトリの空間ジオメトリです。通常、すべてのトラジェクトリポイントを順番に接続する LineString として表現されます。空間ジオメトリの記述には、ほとんどの場合このデータ型が使用されます。 |
| トラジェクトリリーフ | 特定の時点における移動オブジェクトの空間位置です。 |
| トラジェクトリ属性 | 各トラジェクトリポイントで記録される時変属性です。例:速度、方向。 |
| トラジェクトリ属性フィールド | トラジェクトリポイントごとに 1 つの値を記録する、名前付きの属性チャネルです。たとえば、速度フィールドには車両のルート上の各ポイントで速度の測定値が格納され、方向フィールドには各ポイントで方位角が格納されます。属性フィールド内の値の数は、トラジェクトリ内のトラジェクトリポイント数と同じです。 |
| トラジェクトリフィールド値 | 特定の時点における、特定のトラジェクトリ属性フィールドの値です。たとえば、速度フィールドにおける 14:32:05 の速度の測定値、または同時刻の方向フィールドにおける方位角です。 |
| トラジェクトリイベント | 通常の属性サンプリングでは記録されない、トラジェクトリ上の離散的な発生事象です。車両のトラジェクトリでは、給油、故障、車両ロックなどが該当します。各イベントは、イベントタイプ ID とイベント時刻によって識別されます。 |
次の図は、移動オブジェクトのトラジェクトリを示しています。

用語の関係
トラジェクトリオブジェクトは最上位の構造です。以下の要素で構成されます:
トラジェクトリタイムライン:時間軸です。各観測がいつ発生したかを定義します。上の図では、タイムラインはオブジェクトのパスに沿ったタイムスタンプのシーケンスに対応します。
トラジェクトリスペイシャル:空間軸です。すべての空間位置を LineString として接続します。上の図では、これは連続したパスです。
トラジェクトリ属性:1 つ以上の属性フィールド (速度や方向など) です。各フィールドは、タイムライン上の各ポイントに対して 1 つの値を記録します。
トラジェクトリイベント:不規則な発生事象 (給油停止など) です。通常のサンプリング間隔の範囲外にあり、イベントタイプ ID とイベント時刻とともに記録されます。
タイムライン上の各位置は トラジェクトリポイントに対応します。トラジェクトリポイントは、その時点の位置 (トラジェクトリリーフ) と、その時点の属性値 (トラジェクトリフィールド値) を組み合わせたものです。
BoxNDF オブジェクト
トラジェクトリオブジェクトとジオメトリオブジェクトは構造が複雑な場合があり、特定のクエリの計算コストが高くなることがあります。クエリを簡素化するために、Trajectory SQL は BoxNDF データ型を提供します。これは、トラジェクトリまたはジオメトリの範囲を近似する多次元の時空間キューブです。
BoxNDF オブジェクトは、最大 4 つの軸における最小値と最大値によって定義されます:
| 軸 | ディメンション |
|---|---|
| x | 空間 |
| y | 空間 |
| z | 空間 |
| t | 時間 |
4 つすべての軸が必須ではありません。BoxNDF は任意の組み合わせに対応できます。たとえば、2D の空間クエリでは (x, y) のボックス、時間範囲を含む 2D の空間クエリでは (x, y, t) のボックス、完全な 4 次元クエリでは (x, y, z, t) のボックスを使用できます。
クエリを実行する際、BoxNDF キューブを使用してクエリ範囲を指定できます。また、トラジェクトリ型またはジオメトリ型のバウンディングボックスを使用して、クエリを容易にすることもできます。
次の図は、x、y、t 軸上を移動するオブジェクトのトラジェクトリとバウンディングボックスを示しています。
