基于PostGIS+PgRouting的最短路径查询的实现(二):Geoserver篇


上一篇记录了在PostgreSQL数据库中如何组织和查询最短路径,由于Geoserver支持PostGIS数据库,在开源WebGIS领域,通常用这两个组合来发布地图服务,因此,这一篇将介绍在如何在Geoserver中发布最短路径查询服务。

最短路径查询

回顾下上一篇最后,查询最短路径的SQL:

select seq, id1 as node, id2 as edge, cost, geom  from pgr_dijkstra('
select gid as id,
source::integer,
target::integer,
length::double precision as cost,
rev_length::double precision as reverse_cost
from road ',
7,12,true,true) as di
join road pt
on di.id2 = pt.gid

在这个查询第8行,7、12分别代表你要查询的起点和终点ID。可以在表“XXX_vertices_pgr”中ID字段找到这两个编号,这两个编号对应的节点位置可以通过QGIS或者ArcMap 来进行查看。

将查询发布成服务

假设你已经创建了工作空间,并且创建了PostGIS类型的数据存储,数据库连接指向上面表所在的数据库。按以下步骤

  1. 图层-添加新的资源
    geoserver添加图层

  2. 选择数据存储,新建图层
    geoserver新建图层

  3. 配置新的SQL视图
    将上面SQL语句中的SQL数字替换成字符串变量,使用%括起来。
    geoserver配置SQL视图

  4. 从SQL猜想的参数

  5. 刷新属性
    将geometry的srid值改成相应的坐标系,如4326。
    geoserver SQL视图属性
    保存。

  6. 编辑图层界面,设置边框等,保存。完成SQL视图图层发布。
    geoserver 图层发布

  7. 如果要更新SQL,单击Edit sql view,回到编辑SQL视图,编辑完成后重新保存SQL,保存图层。

geoserver 编辑SQL视图

以上操作完成后,即完成最短路径查询图层的发布。可以使用WMS服务或者WFS服务来查询结果。

预览结果

由于发布时设置了默认值,可以直接在geoserver中预览到查询结果。

goeserver 结果预览

如果你想查看其它两点之间的最短路径,在预览地址最后面加上参数&viewparams=from:xxx;to:xxx

转载自:https://blog.csdn.net/u012413551/article/details/85145966

You may also like...