美文网首页开源
pgRouting参考资料

pgRouting参考资料

作者: 阿群1986 | 来源:发表于2022-04-11 16:42 被阅读0次

博客

专栏作者:不睡觉的怪叔叔
https://blog.csdn.net/qq_35732147

知乎专栏pgRouting教程

(专栏作者:不睡觉的怪叔叔
https://www.zhihu.com/people/li-yang-qiao-89

路径导航示意图1 路径导航示意图2

pgrouting天然支持路径的weight权重系数(比如路段限速、上坡下坡、道路弯道多少、道路的车道数、道路的拥堵程度,都可以作为动态的weight值),支持多个路径规划算法,支持自定义规划算法。

路线查询的例子

此教程将会使用深圳市的一些地点信息,这些地点的地名和对应的shenzhen_roads_vertices_pgr表中的顶点id值为:

  • 世界之窗 —— 12089
  • 锦绣中华民俗村 —— 10564
  • 欢乐谷 —— 13019
  • 华侨城体育场 —— 7304

ALTER TABLE shenzhen_roads
ADD COLUMN source INTEGER,
ADD COLUMN target INTEGER,
ADD COLUMN cost DOUBLE PRECISION,
ADD COLUMN reverse_cost DOUBLE PRECISION;

UPDATE shenzhen_roads
SET cost = ST_Length(geom), reverse_cost = -1
WHERE oneway = 'F';

UPDATE shenzhen_roads
SET reverse_cost = ST_Length(geom), cost = -1
WHERE oneway = 'T';

UPDATE shenzhen_roads
SET cost = ST_Length(geom), reverse_cost = ST_Length(geom)
WHERE oneway = 'B';

SELECT pgr_createTopology(
    'shenzhen_roads', 
    0.001,
    'geom',
    'gid',
    'source',
    'target'
);

  1. 步行路线:从6831(锦绣中华民俗村)到44540(世界之窗)
-- 步行路线:从6831(锦绣中华民俗村)到44540(世界之窗)

SELECT * FROM pgr_dijkstra(
  'SELECT gid AS id, source, target, cost, reverse_cost FROM shenzhen_roads',
  6831, 44540,
  directed := FALSE
);

查询结果

第二步:整理途经的节点坐标

  • 使用LEFT JOIN 顶点表可以一并查询出最短路径途径顶点的坐标
SELECT path.seq, path.node, ST_AsEWKT(nodes.the_geom) as node_position
FROM pgr_dijkstra
  (
  'SELECT gid AS id, source, target, cost, reverse_cost FROM shenzhen_roads',
  6831, 44540,
  directed := FALSE
  ) AS path
LEFT JOIN shenzhen_roads_vertices_pgr AS nodes
ON path.node = nodes.id;

第三步:因当前使用的是3857墨卡托坐标系,有时候需要转换回4326经纬度坐标系

  • 使用ST_Transform(the_geom, 4326)完成参考坐标系转换操作
-- SELECT id, ST_Transform(the_geom, 4326) as the_geom4326
-- FROM shenzhen_roads_vertices_pgr
-- LIMIT 100;

SELECT id, ST_AsEWKT(ST_Transform(the_geom, 4326)) as the_geom4326_ewkt
FROM shenzhen_roads_vertices_pgr
LIMIT 100;
3857墨卡托坐标转为4326经纬度坐标的结果
  1. 步行路线:从45268(欢乐谷)到44540(世界之窗)

SELECT * FROM pgr_dijkstra(
  'SELECT gid AS id, source, target, cost, reverse_cost FROM shenzhen_roads',
  45268, 44540,
  directed := FALSE
);

相关文章

网友评论

    本文标题:pgRouting参考资料

    本文链接:https://www.haomeiwen.com/subject/qywisrtx.html