ラインストリング上の最も近いポイントから現在の場所 (緯度、経度) にルーティングする方法を見つけようとしています。これまでのところ、最短パスを取得できますが、それはラインストリング (別名ソース) の最初から始まります。 ラインストリングに沿って開始位置を指定する機能があるため、prg_trsp http://docs.pgrouting.org/2.0/en/src/trsp/doc/index.htmlを使用しています。ラインストリングに沿って距離を正しく計算し、値を関数に渡すことはできますが、関数 (pgr_costResult[]) からの結果を使用してルートの開始位置を指定する方法がわかりません (部分的に最も近いラインストリングに沿って)。
ルーティング アルゴリズムの結果をエッジ テーブルに結合してジオメトリを取得しようとすると、結合に問題があると感じます。これは、結合時にセグメントではなくエッジ テーブルの完全なジオメトリが使用されるためです。ただし、ドキュメントを見ると、ルーティング関数から返されたセグメントがどこにあるのかわかりません。
以下は、私がやろうとしていること (赤い線) と私が持っているもの (青い線) のスクリーンショットです。ポイントは現在の場所です。赤い線は、qgis で pgrouting プラグインを trsp(edge) を選択して使用した結果です。
以下のコードを参照してください。
どんな助けでも大歓迎です!
SELECT st_linemerge(edgeTable.geom_way) FROM pgr_trsp('SELECT id, source, target, cost FROM edgeTable',
(SELECT id FROM origin),
(SELECT * FROM sourcePos),
(SELECT id FROM destination),
(SELECT * FROM destPos),
false, false) AS shortestPath
JOIN edgeTable ON shortestPath.id2 = edgeTable.id;
origin は開始ルートの ID です
sourcePos は、線ストリングに沿ってオフセットする距離です
宛先は、最後の折れ線の ID です
destPos は、最後のラインストリングの一部です
ここで指定されているすべて: http://docs.pgrouting.org/2.0/en/src/trsp/doc/index.html