軌道の各中間点における回転半径を計算し、結果を倍精度浮動小数点数の配列として返します。回転半径が小さいほど、曲線は鋭くなります。直線セグメントまたは静止点の場合は、Infinity が返されます。
構文
double precision[] ST_CurvatureRadius(trajectory traj, boolean hasdirection default false);パラメーター
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
traj | trajectory | — | 軌道オブジェクトです。 |
hasdirection | boolean | false | 結果に回転方向を含めるかどうかを指定します。true を指定すると、反時計回りの回転に対して負の値が返されます。 |
仕組み
n 個のポイントからなる軌道の場合、ST_CurvatureRadius は、最初と最後のポイントを除いた n − 2 個の中間ポイントそれぞれについて回転半径を計算します。両端のポイントは除外される理由は、曲率を計算するには各側にポイントが必要となるためです。
| 条件 | 返される値 |
|---|---|
| 直線セグメント | Infinity |
| 静止点(連続する同一座標) | Infinity |
| 曲線セグメント | 正の値。値が小さいほど、曲線は鋭くなります |
反時計回りの回転(hasdirection が true の場合) | 負の値 |
例
基本的な使用方法
以下の軌道は 5 個のポイントからなり、中間ポイントは 3 個あります。
SELECT ST_CurvatureRadius(ST_MakeTrajectory('LINESTRING(0 0, 0 8, 6 8, 12 8, 12 8)'));
st_curvatureradius
-----------------------
{5,Infinity,Infinity}
(1 row)結果 {5, Infinity, Infinity} は、3 個の中間ポイントに対応しています。
| 配列内の位置 | 座標 | ジオメトリ | 回転半径 |
|---|---|---|---|
| 1 | (0, 8) | 90 度のターン | 5 |
| 2 | (6, 8) | 水平方向の直線セグメント | Infinity |
| 3 | (12, 8) | 静止点(次のポイントと同一) | Infinity |
対称軌道
SELECT ST_CurvatureRadius(ST_MakeTrajectory('LINESTRING(0 0, 0 8, 6 8, 12 8, 12 8, 6 8, 0 8, 0 0)'));
st_curvatureradius
-------------------------------------------
{5,Infinity,Infinity,Infinity,Infinity,5}
(1 row)この軌道では、最初および最後の中間ポイントでターンが発生し(回転半径は 5)、中央の 4 個の中間ポイントでは直線的に移動します(回転半径は Infinity)。
方向指定あり
時計回りと反時計回りの回転を区別するには、hasdirection を true に設定します。
SELECT ST_CurvatureRadius(ST_MakeTrajectory('LINESTRING(0 0, 0 8, 6 8, 12 8, 12 8, 6 8, 0 8, 0 0)'), true);
st_curvatureradius
--------------------------------------------
{5,Infinity,Infinity,Infinity,Infinity,-5}
(1 row)最初の中間ポイントでは時計回りのターンが発生し(回転半径は 5)、最後の中間ポイントでは反時計回りのターンが発生します(回転半径は -5)。
方向情報を含む混合曲率
SELECT ST_CurvatureRadius(ST_MakeTrajectory('LINESTRING(0 0, 0 8, 6 8, 12 8, 12 8, 6 8, 0 8, 0 0, 0 4, 3 4)'), true);
st_curvatureradius
--------------------------------------------------
{5,Infinity,Infinity,Infinity,Infinity,-5,0,2.5}
(1 row)拡張されたパスにより、2 個の中間ポイントが追加されています。
| 配列内の位置 | 座標 | ジオメトリ | 回転半径 |
|---|---|---|---|
| 7 | (0, 0) | 即時取消し | 0 |
| 8 | (0, 4) | なだらかな曲線 | 2.5 |