我正在尝试找到一种从线串上的最近点路由到我当前位置(纬度,经度)的方法。到目前为止,我能够获得最短路径,但它从线串(又名源)的最开始开始。我正在使用 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