我正在尝试找到一种从线串上最近的点到我当前位置(纬度,经度)的路线。到目前为止,我能够获得最短路径,但它从线串的最开头(也称为源)开始。我正在使用 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;
Run Code Online (Sandbox Code Playgroud)
origin 是起始路线的 id
sourcePos 是沿线串偏移的距离
目的地是结束线串的id
destPos 是结束线串的分数
全部按此处指定:http ://docs.pgrouting.org/2.0/en/src/trsp/doc/index.html