pgrouting学习记录

1 数据库尝试

路径规划的算法 pgr_dijkstra,pgr_astar, pgr_ksp,pgr_withpoints_参考1,pgr_withpoints_参考2

其中pgr_ksp
是dijkstra算法和yen算法结合,获取两点之间的k条最短路径

  • pgr_dijkstra 算法
SELECT gid, geom, node, cost, source, target, 
    ST_Reverse(geom) AS flip_geom FROM 
	pgr_dijkstra(
	'SELECT gid AS id,
		source, target,
		cost_len as cost, rcost_len as reverse_cost
	FROM r1',
	3, 7,
	directed := FALSE
),r1 WHERE edge = gid ORDER BY seq;
  • pgr_ksp

参数解释:3,7,3 分别为source, target, 返回的几条数据

select * from	
 pgr_ksp('SELECT gid as id, source, target, cost_len AS cost , cost_len AS revers_cost
 FROM r1',
						3, 7,3,false ),r1
     WHERE edge = gid ORDER BY seq
  • pgr_withpoints (edges_sql, points_sql, start_vid, end_vid)

pgr_withPoints和 pgr_dijkstra一样也是最短路径规划方法,输出结果也基本一致,但是两者的输入不一样。pgr_dijkstra需要输入的是路网节点编号,也就是说只能从道路的端点算起,而pgr_withPoints可以从道路的中间位置选择起点和终点。

  • 参数说明:
    edges_sql是从路网表选择出需要参与计算的路径的Sql字符串;
    points_sql是从POI表(下文会说明)选择出途径点的Sql字符串;
    start_vid是起点的节点id,正值为路网节点,负值为POI表数据;
    end_vid为终点节点,同样正值为路网节点,负值为POI表数据。
    注意在edges_sql中需要指定cost和reverse_cost(去的花费和来的花费),函数通过这两个值的正负情况来获知道路的通过性(单行、双向、不通)
  • pgr_astar
select * from
 pgr_astar('SELECT gid as id, source::int, target::int, cost_len::float AS cost,
		   x1,y1,x2,y2 FROM r1',
			array[2,3], array[7,26] ,false),r1
     WHERE edge = gid ORDER BY seq
  • pgr_bdastar
SELECT gid, geom, node, cost, source, target, 
    ST_Reverse(geom) AS flip_geom FROM 
 pgr_bdAstar('SELECT gid as id, source, target,
  cost_len AS cost,x1,y1,x2,y2
 FROM r1',
						2, 7 ,false),r1
     WHERE edge = gid ORDER BY seq
  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Webgiserin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值