Geoserver+Postgis+Mapbox实现路径规划

本文详细介绍了如何利用PostGIS数据库对LineString的Shp文件进行路径规划,并通过Geoserver发布结果,然后在Mapbox中调用WMS服务显示。首先,通过pgAdmin导入Shp文件,接着使用SQL语句进行最短路径分析,包括A*算法和kdijkstra算法。然后,在Geoserver中创建SQL视图并发布图层。最后,使用Mapbox加载WMS服务展示路径规划结果。

​ 2020/10/14,利用Postgis数据库对LineString的Shp文件进行路径规划,利用Geoserver对规划的结果进行发布,在Mapbox中使用WMS服务调用并呈现在地图上。

​ 本文是以经纬度坐标为依据进行计算,参考其他网上已有教程可以选择以节点进行计算,其他链接放置本文底部。

软件版本

  • Geoserver:geoserver-2.17.2-bin;
  • PostGIS:2.1.7
  • PostgreSQL:9.3
  • QGIS:3.14.15

操作步骤

  1. pgAdmin中导入shp文件,本次示例以roadLine文件为例,效果如图:

在这里插入图片描述

坐标系如图:
在这里插入图片描述

文件字段如图,框选内容字段是之前实验其他博文所添加,在本文中没有作用:在这里插入图片描述

使用pgAdmin连接到数据库,直接导入文件,这里的模式选择为public,表名为gyroad,坐标系设置4326。
在这里插入图片描述

注意:红框内容强调,最后一个必须勾选才能生成单个的geometry。
在这里插入图片描述

  1. 数据导入完毕之后会在当前数据库的public模式生成表,
    在这里插入图片描述

接下来对数据库使用SQL语句,这里采用QGIS的SQL窗口,pgAdmin下的SQL也可以使用。

--向数据库导入支持PostGIS和pgRouting的函数和基础表(安装后只需要执行一次,以后会一直存在于本数据库中)。
CREATE EXTENSION postgis;
CREATE EXTENSION pgrouting;
CREATE EXTENSION postgis_topology;
CREATE EXTENSION fuzzystrmatch;
CREATE EXTENSION postgis_tiger_geocoder;
CREATE EXTENSION address_standardizer; 
-----------------------------------------
--以起始点坐标为参数进行最短路径分析

--以gyroad表作为实例--
-----------------------------------------
ALTER TABLE gyroad ADD COLUMN source integer;	--设置起点字段 
ALTER TABLE gyroad ADD COLUMN target integer;	--设置终点字段
ALTER TABLE gyroad ADD COLUMN length double precision;		--增加路线长度字段(根据长度设置计算权重)
UPDATE gyroad SET length = ST_Length(geom);	--计算路线长度
select pgr_createTopology('gyroad', 0.0001, 'geom', 'gid');	--创建拓扑模式

--为表增加起始点坐标x,y字段
ALTER TABLE gyroad ADD COLUMN x1 double precision;
ALTER TABLE gyroad ADD COLUMN y1 double precision;
ALTER TABLE gyroad ADD COLUMN x2 double precision;
ALTER TABLE gyroad ADD COLUMN y2 double precision;


--计算起始点坐标
UPDATE gyroad SET x1 =ST_x(ST_PointN(geom, 1));
UPDATE gyroad SET y1 =ST_y(ST_PointN(geom, 1));
UPDATE gyroad SET x2 =ST_x(ST_PointN(geom, ST_NumPoints(geom)));
UPDATE gyroad SET y2 =ST_y(ST_PointN(geom, ST_NumPoints(geom)));

--测试1
--A*算法路径查询
SELECT seq, id1 AS node, id2 AS edge, cost FROM pgr_astar(
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值