基于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类型的数据存储,数据库连接指向上面表所在的数据库。按以下步骤
-
图层-添加新的资源
-
选择数据存储,新建图层
-
配置新的SQL视图
将上面SQL语句中的SQL数字替换成字符串变量,使用%括起来。
-
从SQL猜想的参数
-
刷新属性
将geometry的srid值改成相应的坐标系,如4326。
保存。 -
编辑图层界面,设置边框等,保存。完成SQL视图图层发布。
-
如果要更新SQL,单击Edit sql view,回到编辑SQL视图,编辑完成后重新保存SQL,保存图层。
以上操作完成后,即完成最短路径查询图层的发布。可以使用WMS服务或者WFS服务来查询结果。
预览结果
由于发布时设置了默认值,可以直接在geoserver中预览到查询结果。
如果你想查看其它两点之间的最短路径,在预览地址最后面加上参数&viewparams=from:xxx;to:xxx
转载自:https://blog.csdn.net/u012413551/article/details/85145966