このトピックでは、ST_3DGridPath関数について説明します。 この関数は、3Dグリッドシステムを使用してパスを計算します。
構文
geomgrid[] ST_3DGridPath (ジオメトリ開始、ジオメトリ終了、box3d範囲、gridcost[] バリア、paramsテキストのデフォルト '');
パラメーター
パラメーター | 説明 |
start | スタートポイント。 |
終了 | エンドポイント。 |
範囲 | パス計画の範囲。 |
障壁 | 障壁を持つすべてのグリッドのコスト。 |
params | 計算に使用されるパラメーター。 |
次のリストは、paramsパラメーターのフィールドを示しています。
algorithm: pathfindingアルゴリズム
dij: ダイクストラのアルゴリズム
astar (デフォルト): A * アルゴリズム
nb_astar: 双方向A * アルゴリズム
動き: 動きモード
cross (デフォルト): 隣接するグリッドにのみ移動します
オクトソープ: 隣接する斜めのグリッドに移動
strict_octothorpe: 隣接するグリッドが通過可能な場合に対角グリッドに移動
distance: 距離推定方法
euclidean: ユークリッド距離
マンハッタン (デフォルト): マンハッタン距离
チェビシェフ: チェビシェフの距離
例: {"algorithm":"astar","movement":"strict_octothorpe"}
paramsパラメーターが空のままであるか、パラメーターの一部のフィールドが設定されていない場合、システムはデフォルト値を使用します。
説明
この関数は、指定されたデータに基づいてグリッドパスを計算します。
開始点および終了点は、z軸上の値が不正確であり得る3D点である。 アルゴリズムは、3D点のz軸上の適切な値を自動的に見つけ、経路を計画する。
範囲パラメータは、デジタル表面モデル (DSM) データに基づいて構成される経路計画の範囲を指定する。
バリアパラメータは、すべてのグリッドのコストとバリアを組み合わせます。 ST_CostUnion操作を呼び出して、このパラメーターの値を照会できます。
paramsパラメーターが空の場合、システムはデフォルトでaster、cross、manhattanを使用します。 計算結果は、順番に配置されたジオメトリグリッドの配列です。
例
st_astext(ST_3DGridPath(st_geomfromewkt('srid=4490;POINT Z (1 1 1)')) 、st_geomfromewkt('srid=4490;POINT Z (5 6 3)') 、'BOX3D(0 0 0,10 10)'::box3d、st_costunion(array[st_setcost(array[st_gridfromtext('GZ0000000001)],1) 、st_setcost(array[st_gridfromtext ('GZ00005')],5)));
--------------------------------------------------------------------------------
{GZ0000000006、GZ0000000042、GZ0000000046、GZ0000000064、GZ0000000420、GZ0000000422、GZ0000000426、GZ0000000604、GZ0000000640、GZ0000000644、GZ0000004200、GZ0000004240、GZ0000004244、GZ0000004600、GZ0000004602、GZ0000004620、GZ0000004622、GZ0000006400、GZ0000006420}
ST_3DGridPath(st_geomfromewkt('srid=4490;POINT Z (1 1 1)')) 、st_geomfromewkt('srid=4490;POINT Z (5 6 3)') 、'BOX3D(0 0 0,10 10)'::box3d、st_costunion(array[st_setcost(array[st_gridfromtext ('GZ000000001')]] 、1) 、st_setcost(array[st_gridfromtext ('GZ00005')] 、5)) 、'{"algorithm":"" "" movement"
--------------------------------------------------------------------------------
{GZ0000000006、GZ0000000060、GZ0000000066、GZ0000000600、GZ0000000606、GZ0000000660、GZ0000000666、GZ0000006000、GZ0000006040、GZ0000006044、GZ0000006420}