postgresql+postgis+pgrouting实现最短路径查询(2)---openlayers+geoserver实现最短路径
自己的最短路径实现基本上是按照参考博文的1、2和3进行的,实现的时候也是问题不断,只能是一个一个解决。
问题1:自己发布的geoserver服务无法和OSM底图叠加到一起。
解决:参考博文2提到发布服务时需将投影设为900913,我认为大可不必,仍然用4326即可,只是openlayers加载时配置好相关的参数即可,如下:
//定义地图边界
//var bounds= new OpenLayers.Bounds(12960129.562300, 4788641.902700, 12986389.084400, 4817845.581900); var bounds = new OpenLayers.Bounds(116.145027, 39.756095, 116.703957, 40.027940);
var options = {
projection: "EPSG:900913",
displayProjection: new OpenLayers.Projection('EPSG:4326'),
center: new OpenLayers.LonLat(116.46760559087, 39.936089796286),
maxExtent:bounds.transform(
new OpenLayers.Projection("EPSG:4326"),
new OpenLayers.Projection("EPSG:900913")
)
}; map = new OpenLayers.Map('map_element', options); var osmLayer = new OpenLayers.Layer.OSM();
map.addLayer(osmLayer);
var baseLayer = new OpenLayers.Layer.WMS("OpenLayers WMS",
//geoserver所在服务器地址
'http://localhost:8080/geoserver/ProjectLLL/wms',
{
layers: 'ProjectLLL:beijing_line',
format: "image/png",
transparent: true,
styles: '',
},
{
isBaseLayer: false,
singleTile: true,
ratio:1
}
);
//var baseLayer = new OpenLayers.Layer.OSM(); map.addLayer(baseLayer);
//添加control空间
map.addControl(new OpenLayers.Control.MousePosition());
map.addControl(new OpenLayers.Control.ScaleLine());
map.addControl(new OpenLayers.Control.Scale); map.zoomToExtent(bounds);
OSM底图的投影是900913,设置代码:
projection: "EPSG:900913",
displayProjection: new OpenLayers.Projection('EPSG:4326'),
就能将两者摞到一起。
问题2:navigation图层的参数问题
解决:参数按照下面设置即可,navigation也是一个图层,只不过是一个加了SQL语句的空图层,向geoserver发出请求时,会自动执行SQL语句,得到图层。
result = new OpenLayers.Layer.WMS("navLayer",
'http://localhost:8080/geoserver/ProjectLLL/wms',
{ FORMAT: 'image/png',
transparent: true,
LAYERS: 'ProjectLLL:navigation',
viewparams:viewparams,
styles:'shortpath'
},
{isBaseLayer:false,
opacity: 1,
}
);
问题1中把自己发布的图层也加载到了osm底图上,可以不用加载它,直接在osm底图上操作,geoserver会返回最短路径的结果显示到osm底图上。
问题3:最短路径的SQL语句怎么写?很关键
解决:核心算法采用dijkstra算法,一开始主要参考1和4两篇文章写SQL语句,但总是得不到最后的结果,尝试了很多很多次,都以失败告终,其间的心情三言两语说不清楚啊。4中的方法条理逻辑很清晰,思路明确,但总是出错。1中的方法总体来说较为粗糙,也说的通,考虑的不够周全,但也是不知道出现了什么鬼错误,调试了无数次都没结果。最后的最后在万分绝望中,无意之间,看到了writing a pl/pgsql wrapper(http://workshop.pgrouting.org/chapters/wrapper.html)这是官方出的一个帮助说明,里面也说到一个方法和1中的方法差不多,我用这个尝试了一个,突然就成了,太突然了都,官网的东西都没怎么看,现在看来,官网的东西还是很实用的嘛。
最后,主要是按照3中给出的代码框架,对参数等进行调整,最后可以实现最短路径查询,只是SQL的算法写的有点粗糙,以后有时间再改一改。
参考博文:
3、基于openlayers的最短路径规划(1、2和3和上一篇的1和2是一个系列的,这个系列基本上涵盖了整个流程,但自己实现的时候也是问题不断。最好的办法就是看懂别人的思路,根据自己机器环境修改或者重写别人的代码,最后得到实现)
4、使用pgrouting求任意两点的最短路径(和我上一篇的4是一个系列的,这一篇文章里面的思路是很好的,但自己尝试了很多次没实现,只能含恨而终)
postgresql+postgis+pgrouting实现最短路径查询(2)---openlayers+geoserver实现最短路径的更多相关文章
- GeoServer+PostgreSQL+PostGIS+pgRouting实现最短路径查询
一.软件安装 GeoServer下载地址: http://geoserver.org/download/ PostgreSQL下载地址: https://www.postgresql.org/down ...
- postgresql+postgis+pgrouting实现最短路径查询(3)--流程图
项目结束,做一个项目的总结汇报,就把最短路径查询的实现流程图画了一下,现在补出来:
- postgresql+postgis+pgrouting实现最短路径查询(1)---线数据的处理和建立拓扑
准备一个线shp数据,并将其导入postgres里面,postgres安装postgis和pgrouting两个插件(方法见http://www.cnblogs.com/nidaye/p/455352 ...
- 路径分析—QGIS+PostgreSQL+PostGIS+pgRouting(一)
前言 因业务需求,需要做最短路径分析.最近几天查询资料,并自己动手,实现了简单的路径分析. 下面就介绍具体的实现过程. 本篇文章最终结果是在 PostgreSQL 数据库中实现的,后续的可视化展示会继 ...
- postgresql+postgis+pgrouting安装步骤图解
1.在此(https://www.bigsql.org/postgresql/installers.jsp/)下载postgresql(开源数据库,gis行业推荐使用); 2.在此(http://wi ...
- WFS: postgresql(postgis)和shp文件查询效率对比
对GeoServer上的WFS的各种数据源查询效率感兴趣,做个测试.本次测试了Postgresql.geopackage.shp文件三种数据源的查询效率,无论是本机还是服务器环境,pg存储查询效率都比 ...
- OpenLayers 3+Geoserver+PostGIS实现点击查询
WebGIS开发中,点击查询是最经常使用的一种查询方式,在ArcGIS api 中.这样的查询叫IdentifyTask,主要作用是前台提交參数.交ArcServer查询分析返回. 本文从开源框架的角 ...
- PostGIS pgrouting路径分析
--让数据库支持PostGIS和pgRouting的函数和基础表(安装后第一次使用时执行,以后都不再执行) CREATE EXTENSION postgis; CREATE EXTENSION pgr ...
- PostgreSql+PostGIS和uDig的安装
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 总体来说,这两款开源软件均是很好安装的,一般按照提示一步一步 ...
随机推荐
- git 自己创建了一个项目A,我的同事fork一个B,当我的项目更新的时候,怎么样在他fork的repo上进行相应的更新?
先把B clone到本地 git clone B_REPOSITORY_URL 再cd到本地B的目录,把A作为一个remote加到本地的B中(一般命名为upstream) git remote add ...
- div+css 让一个小div在另一个大div里面 垂直居中
方法1: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 .parent { width:800px; height:500px; ...
- WINDOWS安装mysql5.7.20
MSI安装包链接 http://pan.baidu.com/s/1mhI0SMO 提取密码 gaqu 安装前要把老版本的MYSQL卸载干净 之前用官网的archive免安装版安装一直失败,放弃,用MS ...
- [译文和个人分析]REST vs RPC - RESTful究竟是什么?
一 好烦啊,分不清REST RPC RESTful的区别,所以只能翻译一篇谷歌的文章,括号中是我的补充 原文连接 REST vs RPC - What is RESTful? 注意需要*** 二 译文 ...
- jQuery中遇到的坑
在jQuery 1.6之前,只有attr()函数可用,该函数不仅承担了attribute的设置和获取工作,还同时承担了property的设置和获取工作.例如:在jQuery 1.6之前,attr()也 ...
- Java 实例 - 标签(Label)
Java 实例 Java 中的标签是为循环设计的,是为了在多重循环中方便的使用break 和coutinue . 以下实例当在循环中使用 break 或 continue 循环时跳到指定的标签处: ...
- c#实现16进制和字符串之间转换的代码
以下示例演示如何执行下列任务: 获取字符串中每个字符的十六进制值. 获取与十六进制字符串中的每个值对应的字符. 将十六进制 string 转换为整型. 将十六进制 string 转换为浮点型. 将字节 ...
- Centos 从零开始 (二)
因为我是搞 nodejs的 所以以后会安装一些依赖于node的 比如mongodb数据库等. 6:安装nodejs 安装的时候遇到个小问题.yum install nodejs 报错 说没有这个包.然 ...
- C#语言-07.文件操作
a. 文件操作:适用于相对简单的数据保存 i. 读写文件的步骤: . 创建文件流 . 创建读写器 . 读写文件 . 关闭读写器 . 关闭文件流 ii. FileStream(文件流),它主要用于读写文 ...
- tomcat启动编码等部署遇到问题
版权声明:本文为博主原创文章,转载请注明文章链接.https://blog.csdn.net/xiaoanzi123/article/details/58254318 2017-02-27 21:01 ...