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

PolarDB:ST_CurveRecognize

最終更新日:Jul 02, 2024

このトピックでは、ST_CurveRecognize関数について説明します。 この関数は、軌跡のカーブと曲率半径を認識します。

構文

  • 構文1

    SETOF trpeak ST_CurveRecognize (trajectory traj, float8 radius_threshold, float8 angle_threshold, float8 angle_compress_threshold default 0);
  • 構文2

    SETOF trpeak ST_CurveRecognize (trajectory traj, float8 radius_threshold, float8 angle_threshold, float8 expansion_radius1, float8 expansion_radius2,float8 angle_compress_threshold default 0);

Parameters

パラメーター

説明

traj

元の軌道。

radius_threshold

曲率半径は、カーブの中心点を認識するために指定されます。

この関数は、曲率半径がradius_thresholdパラメータの値よりも小さい曲線のすべての連続する点を認識し、これらの点から曲率半径が最小の点を曲線の中心点として選択します。

angle_threshold

回転角度。 カーブ上の境界点の回転角度がこのパラメーターの値より小さい場合、境界点は削除されます。 その結果、曲線は、除去された境界点で2つの部分に分割される。 これにより、分割された曲線の各部分のすべての点の回転角がこのパラメータの値よりも大きくなります。

expansion_radius1

ポイントでのカーブの曲率半径。

expansion_radius2

指定した点から中心点までのカーブの平均曲率半径。

angle_compress_threshold

ある点での曲線の回転角度がこのパラメータの値より小さい場合、サンプリングは実行されません。 これにより、サンプリング密度が低下し、過剰なサンプリングによって曲線が認識できなくなることが防止される。

レスポンスパラメーター:

パラメーター

説明

loc

曲線の中心点。軌道上の転換点のシリアル番号を示します。

例えば、locパラメータがnに設定されている場合、曲線の中心点は、軌道の (n + 1) 番目の転換点である。

height

カーブの中心点の曲率半径。 正の値は時計回りの曲率を示し、負の値は反時計回りの曲率を示す。

startloc

カーブの開始点。

endloc

カーブの終点。

説明

次のリストは、カーブ認識の実装について説明しています。

  1. この関数は、曲率半径がradius_thresholdパラメータの値よりも小さい曲線のすべての連続する点を認識し、これらの点から曲率半径が最小の点を曲線の中心点として選択します。

  2. この関数は、expand_radius1およびexpand_radius2パラメーターに基づいて、軌道上の曲線の隣接する中心点を軌道の点として選択します。 選択したポイントは、次の要件を満たす必要があります。

    1. 各点の曲率半径は、expansion_radius1パラメーターの値よりも小さくなります。

    2. 指定された点から中心点までのカーブの平均曲率半径は、expand_radius2パラメーターの値よりも小さくなります。

    説明

    expansion_radius1およびexpansion_radius2パラメーターを指定しない場合は、構文1を使用できます。 この場合、デフォルト設定のexpansion_radius1 = radius_threshold * 2およびexpansion_radius2 = radius_threshold * 4が使用されます。

  3. この関数は、angle_thresholdパラメーターの値に基づいて、曲線の境界点を削除するかどうかを決定します。 これにより、曲線上の境界点の回転角度がangle_thresholdパラメータの値よりも大きくなります。 曲線上の元の境界点の回転角度が指定されたしきい値よりも大きい場合、曲線の境界は両側に向かって拡張されます。 曲線上の元の境界点の回転角度が指定されたしきい値よりも小さい場合、曲線の境界は船体の内側に向かって縮小します。

SELECT (ST_CurveRecognize('{"trajectory":{"version":1,"type":"STPOINT","leafcount":16,"start_time":"2000-01-01 00:00:00","end_time":"2000-01-16 00:00:00","spatial":"LINESTRING(0 0,1 1,2 2,4 3,3 4,5 7,8 8,7 4,0 0,1 1,2 2,4 3,3 4,5 7,8 8,7 4)","timeline":["2000-01-01 00:00:00","2000-01-02 00:00:00","2000-01-03 00:00:00","2000-01-04 00:00:00","2000-01-05 00:00:00","2000-01-06 00:00:00","2000-01-07 00:00:00","2000-01-08 00:00:00","2000-01-09 00:00:00","2000-01-10 00:00:00","2000-01-11 00:00:00","2000-01-12 00:00:00","2000-01-13 00:00:00","2000-01-14 00:00:00","2000-01-15 00:00:00","2000-01-16 00:00:00"]}}', 15, 1)).*;
 loc |       height        | startloc | endloc
-----+---------------------+----------+--------
   2 |    5.70087712549569 |        2 |      2
   4 |  2.1023796041628637 |        4 |      8
  10 |    5.70087712549569 |       10 |     10
  12 |  2.1023796041628637 |       12 |     15
   3 | -1.1785113019775793 |        3 |      3
  11 | -1.1785113019775793 |       11 |     11
(6 rows)