このトピックでは、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 (弾道traj、float8 radius_threshold、float8 angle_threshold、float8 expansion_radius1、float8 expansion_radius2、float8 angle_compress_thresholdデフォルト0);
Parameters
パラメーター | 説明 |
traj | 元の軌道。 |
radius_threshold | 曲率半径は、カーブの中心点を認識するために指定されます。 この関数は、曲率半径がradius_thresholdパラメータの値よりも小さい曲線のすべての連続する点を認識し、これらの点から曲率半径が最小の点を曲線の中心点として選択します。 |
angle_threshold | 回転角度。 カーブ上の境界点の回転角度がこのパラメーターの値より小さい場合、境界点は削除されます。 その結果、曲線は、除去された境界点で2つの部分に分割される。 これにより、分割された曲線の各部分のすべての点の回転角がこのパラメータの値よりも大きくなります。 |
expansion_radius1 | ポイントでのカーブの曲率半径。 |
expansion_radius2 | 指定した点から中心点までのカーブの平均曲率半径。 |
angle_compress_threshold | ある点での曲線の回転角度がこのパラメータの値より小さい場合、サンプリングは実行されません。 これにより、サンプリング密度が低下し、過剰なサンプリングによって曲線が認識できなくなることが防止される。 |
レスポンスパラメーター:
パラメーター | 説明 |
loc | 曲線の中心点。軌道上の転換点のシリアル番号を示します。 例えば、locパラメータがnに設定されている場合、曲線の中心点は、軌道の (n + 1) 番目の転換点である。 |
高さ | カーブの中心点の曲率半径。 正の値は時計回りの曲率を示し、負の値は反時計回りの曲率を示す。 |
startloc | カーブの開始点。 |
endloc | カーブの終点。 |
説明
次のリストは、カーブ認識の実装について説明しています。
この関数は、曲率半径がradius_thresholdパラメータの値よりも小さい曲線のすべての連続する点を認識し、これらの点から曲率半径が最小の点を曲線の中心点として選択します。
この関数は、expand_radius1およびexpand_radius2パラメーターに基づいて、軌道上の曲線の隣接する中心点を軌道の点として選択します。 選択したポイントは、次の要件を満たす必要があります。
各点の曲率半径は、expansion_radius1パラメーターの値よりも小さくなります。
指定された点から中心点までのカーブの平均曲率半径は、expand_radius2パラメーターの値よりも小さくなります。
説明expansion_radius1およびexpansion_radius2パラメーターを指定しない場合は、構文1を使用できます。 この場合、デフォルト設定の
expansion_radius1 = radius_threshold * 2
およびexpansion_radius2 = radius_threshold * 4
が使用されます。この関数は、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" 、"空間":"LINESTRING(0 0,1 1,2 2,4 3,3 4,5 7,8 8,7 2000 4,0 0,1 2,4 3,3 4,5 7,8 8,7 4)" 、"timeline":["2000-01-01 00:00:00","-01-02 00:00:00","2000-01-03 00:00:00","2000-01-04 00:00:00:00","1,2-01-05 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:00」、「2000-01-11 00:00:00」、「2000-01-12 00:00:00:00」、「2000-01-13 00:00」、"2000-01-14 00:00:00","2000-01-15 00:00:00:00","2000-01-16 00:00:00"]}', 15, 1).*;
loc | 高さ | 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行)