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

PolarDB:ST_CurvatureRadius

最終更新日:Mar 29, 2026

軌道の各中間点における回転半径を計算し、結果を倍精度浮動小数点数の配列として返します。回転半径が小さいほど、曲線は鋭くなります。直線セグメントまたは静止点の場合は、Infinity が返されます。

構文

double precision[] ST_CurvatureRadius(trajectory traj, boolean hasdirection default false);

パラメーター

パラメーターデフォルト説明
trajtrajectory軌道オブジェクトです。
hasdirectionbooleanfalse結果に回転方向を含めるかどうかを指定します。true を指定すると、反時計回りの回転に対して負の値が返されます。

仕組み

n 個のポイントからなる軌道の場合、ST_CurvatureRadius は、最初と最後のポイントを除いた n − 2 個の中間ポイントそれぞれについて回転半径を計算します。両端のポイントは除外される理由は、曲率を計算するには各側にポイントが必要となるためです。

条件返される値
直線セグメントInfinity
静止点(連続する同一座標)Infinity
曲線セグメント正の値。値が小さいほど、曲線は鋭くなります
反時計回りの回転(hasdirectiontrue の場合)負の値

基本的な使用方法

以下の軌道は 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)。

方向指定あり

時計回りと反時計回りの回転を区別するには、hasdirectiontrue に設定します。

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