ST_Density は、軌道上の各ポイントに対応する近傍領域内のサンプリングポイント数を要素とする整数配列を返します。
構文
integer[] ST_Density(trajectory traj, float dr, interval dt);パラメーター
| パラメーター | 型 | 説明 |
|---|---|---|
traj | trajectory | 解析対象の軌道です。 |
dr | float | 近傍領域の空間的範囲です。 |
dt | interval | 近傍領域の時間的範囲です。 |
仕組み
軌道上の各ポイントについて、ST_Density は、当該ポイントからの空間的距離が dr 未満 かつ 時間的差分が dt 未満であるすべてのサンプリングポイントをカウントします。各ポイント自身は常にカウント対象となります。
空間的距離は、軌道の SRID を用いて計算されます。
例
以下の例では、5 ポイントからなる軌道を構築し、空間半径 400,000 単位および時間半径 10 分を用いて近傍密度を計算しています。
SELECT ST_Density(
st_makeTrajectory(
'STPOINT'::leaftype,
ARRAY[1::float8, 2, 3, 4, 5], -- x 座標
ARRAY[2::float8, 10, 9, 8, 7], -- y 座標
4326, -- SRID (WGS 84)
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'
]
),
400000, -- dr: 空間的範囲
'10 minute' -- dt: 時間的範囲
);実行結果:
st_density
-------------
{1,3,4,4,3}
(1 row)配列内の各値は、それぞれの軌道ポイントに対応します。
| ポイント番号 | タイムスタンプ | 近傍カウント数 |
|---|---|---|
| 1 | 11:30 | 1 |
| 2 | 11:31 | 3 |
| 3 | 11:32 | 4 |
| 4 | 11:33 | 4 |
| 5 | 11:34 | 3 |
中央のポイント(3 および 4)は、より多くの隣接ポイントの空間的・時間的範囲内に位置しているため、最も高いカウント数を示します。
次のステップ
ST_makeTrajectory: 座標配列およびタイムスタンプから軌道を作成します。
ST_DistanceCPA: 2つの軌道間の最接近点間距離を計算します。