Geoserver+postSQL+openlayer实现路径规划

转载请注明出处!!!

转载请注明出处!!!

转载请注明出处!!!

获取路网数据,可以自己模拟,可以去osm网站下载,将路网数据存入postSQL数据库

文档:获取贵阳市路网数据.note
链接:http://note.youdao.com/noteshare?id=20acd381a39bb6bed683a33ac28331c4

将获取的路网数据用arcmap打开,建立拓扑打断点。

右侧目录点击文件夹连接文件夹

打开arcmap,右击图层—添加数据

在文件夹连接里选择shp数据导入,

原始路网结果展示

右键点击开始编辑

打开地理----arctoolbox----数据管理工具(Data management tools)——>要素(Features)——>要素转线(Feature to line)这样就可以得到一条一条线段

将打断点之后的数据导出为shp文件,导入postSQL中,

CREATE EXTENSION postgis;
CREATE EXTENSION pgrouting;
CREATE EXTENSION postgis_topology;
CREATE EXTENSION fuzzystrmatch;
CREATE EXTENSION address_standardizer;--添加起点idALTER TABLE testline ADD COLUMN source integer;--添加终点idALTER TABLE testline ADD COLUMN target integer;--添加道路权重值ALTER TABLE testline ADD COLUMN length double precision;--为sampledata表创建拓扑布局,即为source和target字段赋值SELECT pgr_createTopology('testline',0.0001, 'geom', 'gid');--为source和target字段创建索引CREATE INDEX source_idx ON testline("source");CREATE INDEX target_idx ON testline("target");--为length赋值
//或者用已有的字段长度赋值,下面shape_length为shp中已有的长度属性
update testline set length =st_length(geom);或者
UPDATE crossroad SET length = shape_length;
--将长度值赋给reverse_cost,作为路线选择标准
ALTER TABLE crossroad ADD COLUMN reverse_cost double precision;
UPDATE crossroad SET reverse_cost =length;使用pgr_dijkstra算法查询
SELECT seq, id1 AS node, id2 AS edge, cost FROM pgr_dijkstra('
SELECT gid AS id,
source::integer,
target::integer,
length::double precision AS cost
FROM crossroad,
1, 9, false, false);4用geoserver发布图层(路网图层).用geoserver发布视图(最短路径)
第一个为路网,第二个为道路交汇点发布完成后,发布视图
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
FROM testline',
%from%, %to%, false, false) as di
join testline pt
on di.id2 = pt.gid

编写前端页面调用地图图层

<html>
<head><link rel="stylesheet" href="js/ol.css" type="text/css"><style>.map {height: 90vh;width: 100%;}</style><script src="js/jquery-1.12.3.min.js"></script><script src="js/ol.js"></script><title>路径规划</title>
</head>
<body><div><input type="number" id = "fromInput"><input type="number" id = "toInput"><button type="button" id="add">路径查询</button></div><div id = 'map'></div><script src="js/get_rout.js"></script><script>$(document).ready(function(){initMap();           });$('#add').click(function(){var from = $("#fromInput").val();var to = $("#toInput").val();getRoutingByAjax(from,to);});       </script></body>
</html>

js文件内容

var map;
function initMap() {var tileLayer = new ol.layer.Tile({title: "天地图底图",source: new ol.source.XYZ({url: "http://t0.tianditu.com/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=你的密钥"})});//标注图层var tileMark = new ol.layer.Tile({title: "天地图文字标注",source: new ol.source.XYZ({url: "http://t0.tianditu.com/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=你的密钥"})});// 路网图层数据var roadLayer = new ol.layer.Tile({source: new ol.source.TileWMS({url: 'http://localhost:8080/geoserver/workspace/wms',params: { 'LAYERS': 'workspace:export_output', 'TILED': true },// serverType: 'geoserver',}),})//道路交汇处打断点var roadPoint = new ol.layer.Tile({source: new ol.source.TileWMS({url: 'http://localhost:8080/geoserver/workspace/wms',params: { 'LAYERS': 'workspace:export_output_vertices_pgr', 'TILED': true },// serverType: 'geoserver',}),})map = new ol.Map({target: 'map',view: new ol.View({center: [110.52650, 29.12068],zoom: 16,projection: "EPSG:4326"}),layers: [tileLayer,//顺序不能出错tileMark,roadLayer,roadPoint]});
}var routeSource = new ol.source.Vector();
var routeLayer = new ol.layer.Vector({source: routeSource,style: new ol.style.Style({stroke: new ol.style.Stroke({color: 'green',width: 5})}),name: 'route'
});function getRoutingByAjax(fromID, toID) {clearLayer();var data = {'service': 'wfs','version': '1.0.0','request': 'GetFeature','typeName': 'workspace:testSqlView1','outputFormat': 'application/json','viewparams': 'from:' + fromID + ';to:' + toID};$.ajax({type: "POST",url: "http://localhost:8080/geoserver/workspace/wfs",data: data}).then(function (response) {var features = new ol.format.GeoJSON().readFeatures(response);routeSource.addFeatures(features);})
}function clearLayer() {map.removeLayer(routeLayer);map.addLayer(routeLayer);routeSource.clear();
}

结果展示

参考:

https://blog.csdn.net/u014529917/article/details/72866436
https://blog.csdn.net/u012413551/article/details/85217105
https://blog.csdn.net/u012413551/article/details/85145966

Geoserver+postSQL+openlayer实现路径规划相关推荐

  1. postgresql 新建decimal字段_postgresql路径规划插件pgrouting使用

    pgrouting是postgresql的路径规划拓展插件.支持用户使用数据库中的路网数据构建拓扑,并基于拓扑路网数据进行最短路径查询或耗费成本计算,并支持矩阵运算. pgrouting的官方文档见: ...

  2. autoware使用rosbag数据生成路径点并进行路径规划(七)

    autoware使用rosbag数据生成路径点并进行路径规划(七) 第一步启动autoware和播放数据包 $ cd ~/autoware.ai $ source install/setup.bash ...

  3. 智能算法的应用记录一点点-----TSP 路径规划

    在研究智能算法的时候,想到怎么应用了吗?单纯的使用基准函 数进行测试就能证明算法是优秀的吗?? 文章链接: [图文]几种智能算法概述及其应用_百度文库 https://wenku.baidu.com/ ...

  4. 基于Dijkstra算法的武汉地铁路径规划!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:牧小熊,华中农业大学,Datawhale原创作者 前言 最近爬取了 ...

  5. 【路径规划】Astart算法——图文直观解析

    Astart算法详解 1. Astart算法路径搜索原理 2. 栅格网络的Astart算法 3. Astart算法优缺点 1. Astart算法路径搜索原理   Dijkstra算法已经是非常经典的求 ...

  6. 【路径规划】Dijkstra算法——超详细原理图解

    Dijkstra算法详解 1. Dijkstra算法原理  1.1. 有向图的Dijkstra算法  1.2. 无向图和栅格网络的拓展   1.2.1. 无向图   1.2.2. 栅格网络 2. Di ...

  7. 车 局部路径规划与避障

    双目避障 单目避障是否可行? 全局路径规划有RRT.A*.D*. 局部路径规划有DWA.TEB. 控制有 MPC.

  8. 路径规划(Path Planning)与运动规划(Motion Planning)

    路径规划(Path Planning)与运动规划(Motion Planning) 评论区有个观点: 也可以把路径规划理解为运动规划的一份.我个人具体的认识是,特别是在实现的时候,路径规划我们强调的是 ...

  9. 机器人抓取汇总|涉及目标检测、分割、姿态识别、抓取点检测、路径规划

    作者:Tom Hardy Date:2020-02-14 来源:机器人抓取汇总|涉及目标检测.分割.姿态识别.抓取点检测.路径规划

  10. CBS多机器人路径规划

    CBS多机器人路径规划    单个机器人通过路径规划.运动控制,能够躲避环境中的障碍物,但会面临一个严峻的问题.当一个场景中存在多辆移动机器人时,即使每个机器人都有避障策略,也很容易就会造成道路拥堵. ...

最新文章

  1. mysql注入实例获取答案_本文实例讲述了MySQL解决SQL注入的另类方法。分享给大家供大家参考,具体如下:问题解读我觉得,这个问题每年带来的成本可以高达数十亿美元了。本文就来谈谈,...
  2. 项目需求|室内场景三维空间重建项目
  3. 计算机基础课程金课建设,大学计算机基础金课建设探索与实践
  4. 学典教育计算机二级,层次化分类的离线中文签名真伪鉴别方法-计算机工程与应用.PDF...
  5. js操作json数据的一些感受
  6. java 前端导出exvel_java导出数据到Excel文件 前端进行下载
  7. 了解SQL Server中的GUID数据类型
  8. SylixOS 内存管理源代码分析--phyPage.c
  9. vscode有趣插件
  10. h5难做吗_H5系列课程| 做一只涨工资的H5 没有你想得那么难
  11. 数量关系--容斥原理
  12. 浊音、清音、爆破音音频分析
  13. 交易系统的高盈亏比怎么实现?
  14. 真实的感情---可是你没有
  15. 实现图片在时间轴左右交替放置
  16. matlab 固有频率 振型,基于MATLAB语言多自由度振动系统固有频率及主振型计算分析.pdf...
  17. 解决redis缓存穿透、redis缓存雪崩问题
  18. element 表格背景颜色透明
  19. origin作统计图(两个x正轴,一个y轴效果)
  20. Vue项目实战之人力资源平台系统(一)框架介绍及项目环境搭建

热门文章

  1. 实对称矩阵的奇异值等于特征值
  2. java爬虫新闻网站_java爬虫 之 搜狐新闻爬虫(一)
  3. Fortran入门教程(三)——输入输出
  4. 我的世界java版地牢种子_《我的世界》12个地牢种子位置解析
  5. setuna截图怎么放大缩小_手机中的望远镜 华为P30pro是怎么做到50倍变焦?
  6. AD7124-4/8芯片的模拟通道、基准、顺从电压、测三线制RTD电路等注意事项
  7. 手把手教你实现自己的预设滤镜
  8. vue 动态scss变量,包含16进制转rgba,rgba转16进制
  9. VB基础入门教程.doc
  10. c语言有趣源代码,分享一段有趣的小代码