qgis 计算最短路径_使用pgrouting求任意两点的最短路径 | 学步园

要利用rgrouting实现像QGIS那样求任意两点间的最短路径,可以按照以下步骤使用pl/pgsql进行自定义函数:

1 函数的参数为:_myShortPath(startxfloat, starty float,endx float,endy float,costfile varchar),前四个参数为起点和终点的坐标,最后一个参数为最短路径分析时的cost字段;

2 分别找出距离起点和终点最近的两条线,可以使用:

ST_DWithin(geography gg1, geography gg2, double precisiondistance_meters);

在距离gg2在distance_meters范围内的gg1的线,之后使用ST_Distance(geometryg1, geometry g2);进行排序,并取第一个。

3 找出在上一步求出最近线上距离起点(终点)最近的点。使用:

ST_ClosestPoint(geometryg1, geometry g2)

4 根据第2步求出的离起点最近先的target和离终点最近线的source,求最短路径。使用

SELECTst_linemerge(st_union(b.geom)) into v_res

FROMpgr_kdijkstraPath(

'SELECTid, source, target, ' || costfile ||' as cost FROM route',

v_startTarget,array[v_endSource], true, false

)a,

routeb

WHEREa.id3=b.id

GROUPby id1

ORDE

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值