pgrouting连通性分析

官方文档

1、安装pgrouting库
参考:pgrouting安装

主要涉及的两个函数:
1、 pgr_createTopology:创建空间拓扑,数据自动保存至新创建的表_vertices_pgr,将空间表的linestr的geometry数据拆分,将拆分后的每个点数据保存到新创建的表中,需要在本地的空间表中新建两个字段,source和target

varchar pgr_createTopology(text edge_table, double precision tolerance,
                   text the_geom:='the_geom', text id:='id',
                   text source:='source',text target:='target',
                   text rows_where:='true', boolean clean:=false)

edge_table:text,表名
tolerance:float8,误差缓冲值,两个点的距离在这个距离内,就算重合为一点。这个距离使用st_length计算
the_geom:text,该表的空间坐标字段
id:text,该表的主键
source:text,空间起点编号
target:text,空间终点编号
rows_where:text,条件选择子集或行。默认值为true,表示源或目标具有空值的所有行,否则将使用条件。
clean:text,每次执行都重建拓扑图,默认false

新表结构:
pgrouting连通性分析_第1张图片
pgrouting连通性分析_第2张图片
2、pgr_dijkstra:它是一种图搜索算法,它解决了非负代价边路径图的最短路径问题,即从起始顶点(start_vid)到结束顶点(end_vid)的最短路径。

pgr_dijkstra(Edges SQL, start_vid, end_vid [, directed])
pgr_dijkstra(Edges SQL, start_vid, end_vids [, directed])
pgr_dijkstra(Edges SQL, start_vids, end_vid [, directed])
pgr_dijkstra(Edges SQL, start_vids, end_vids [, directed])
pgr_dijkstra(Edges SQL, Combinations SQL [, directed]) – Proposed on v3.1
RETURNS SET OF (seq, path_seq [, start_vid] [, end_vid], node, edge, cost, agg_cost)
OR EMPTY SET

pgrouting连通性分析_第3张图片

SELECT * FROM pgr_dijkstra(
    'SELECT id, source, target, cost, reverse_cost FROM edge_table',
    2, 3
);

pgrouting连通性分析_第4张图片

你可能感兴趣的:(数据库)