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

PolarDB:ST_CurvatureRadius

最終更新日:Jul 02, 2024

このトピックでは、ST_CurvatureRadius関数について説明します。 この関数は、各中間点での軌道の回転半径を計算し、浮動小数点数の配列を返します。

構文

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

パラメーター

パラメーター

説明

traj

軌道オブジェクト。

hasdirection

軌道の回転方向を計算するかどうかを指定します。

軌道の回転方向が計算されると、軌道が反時計回りに回転するときに負の値が返される。

説明

この関数は、各中間点における軌道の回転半径を計算する。 軌道がn個の点を有する場合、軌道の中間点の数は、nと2との間の差である。 軌道が直線に沿って移動するか、または中間点で不変のままである場合、軌道の回転半径は無限大である。 軌道の回転半径が小さいほど、カーブはシャープになります。

SELECT ST_CurvatureRadius(ST_MakeTrajectory('STPOINT'::leaftype,'LINESTRING(0 0, 0 8, 6 8, 12 8, 12 8)', '2000-01-01', '2000-01-01'::timestamp+ '1 day'::interval* (ST_NPoints('LINESTRING(0 0, 0 8, 6 8, 12 8, 12 8)')-1), '{}'));
  st_curvatureradius   
-----------------------
 {5,Infinity,Infinity}


SELECT ST_CurvatureRadius(ST_MakeTrajectory('STPOINT'::leaftype,'LINESTRING(0 0, 0 8, 6 8, 12 8, 12 8, 6 8, 0 8, 0 0)', '2000-01-01', '2000-01-01'::timestamp+ '1 day'::interval* (ST_NPoints('LINESTRING(0 0, 0 8, 6 8, 12 8, 12 8, 6 8, 0 8, 0 0)')-1), '{}'));
st_curvatureradius 
-----------
 {5,Infinity,Infinity,Infinity,Infinity,5}


SELECT ST_CurvatureRadius(ST_MakeTrajectory('STPOINT'::leaftype,'LINESTRING(0 0, 0 8, 6 8, 12 8, 12 8, 6 8, 0 8, 0 0)', '2000-01-01', '2000-01-01'::timestamp+ '1 day'::interval* (ST_NPoints('LINESTRING(0 0, 0 8, 6 8, 12 8, 12 8, 6 8, 0 8, 0 0)')-1), '{}'), true);
 st_curvatureradius 
-----------
 {5,Infinity,Infinity,Infinity,Infinity,-5}


SELECT ST_CurvatureRadius(ST_MakeTrajectory('STPOINT'::leaftype,'LINESTRING(0 0, 0 8, 6 8, 12 8, 12 8, 6 8, 0 8, 0 0, 0 4, 3 4)', '2000-01-01', '2000-01-01'::timestamp+ '1 day'::interval* (ST_NPoints('LINESTRING(0 0, 0 8, 6 8, 12 8, 12 8, 6 8, 0 8, 0 0, 0 4, 3 4)')-1), '{}'), true);
st_curvatureradius
-----------
 {5,Infinity,Infinity,Infinity,Infinity,-5,0,2.5}