PostGIS 结合Openlayers以及Geoserver实现最短路径分析(三)
接上篇,前面在ArcMap中和Postgis中将数据都已经进行了预处理。
接下来回到Geoserver中,进行数据发布。
1、新建工作区

2、填写完工作区信息

3、打开数据存储,添加新的数据存储

4、新建数据源,选择PostGIS

5、依次填写完如下信息,保存即可

6、添加新图层

7、新建图层,将前面处理好的图层发布,作为底图(这里发布两个图层,一个底图,一个sql图层)

8、底图发布完成后,再新建一个图层,这次选择“配置新的SQL视图”

9、填写完红框信息,保存
sql 视图:
SELECT * FROM pgr_shortestpath(‘zy’, %x1%, %y1%, %x2%, %y2%)
验证的正则表达式:^-?[\d.]+$
类型:LingString
SRID:3857


10、验证,Openlayers调用
改一下调用地址和点击坐标即可
<!DOCTYPE html>
<html> <head>
<meta charset="utf-8" />
<title>网络分析</title>
<link href="../lib/css/ol.css" rel="stylesheet" type="text/css">
<style>
#id {
width: 1000px;
height: 1000px;
}
</style>
<script type="text/javascript" src="../lib/ol/ol-debug.js"></script>
</head> <body>
<div id="map"></div>
<script> var roadLayer = new ol.layer.Tile({
source: new ol.source.TileWMS({
url: 'http://10.19.151.238:8080/geoserver/NA/wms',
params: { 'LAYERS': 'NA:zy', 'TILED': true },
serverType: 'geoserver'
})
})
var map = new ol.Map({
target: document.getElementById("map"),
layers: [
roadLayer
],
view: new ol.View({
center: [12985322, 4799338],
projection: 'EPSG:3857',
zoom: 12
})
});
var startCoord = [12991487.849, 4800716.518];
var destCoord = [12993333.603, 4799171.652];
var params = {
LAYERS: 'NA:func_shortestpath',
FORMAT: 'image/png',
};
var viewparams = [
'x1:' + startCoord[0], 'y1:' + startCoord[],
'x2:' + destCoord[], 'y2:' + destCoord[]
//'x1:' + 12952117.2529, 'y1:' + 4836395.5717,
//'x2:' + 12945377.2585, 'y2:' + 4827305.7549
];
console.log(viewparams);
params.viewparams = viewparams.join(';');
result = new ol.layer.Image({
source: new ol.source.ImageWMS(
{
url: 'http://10.19.151.238:8080/geoserver/NA/wms',
params: params
})
});
console.info(result);
map.addLayer(result);
</script>
</body> </html>
11、原理
PostGIS做的网络分析,主要原理在于将数据建立拓扑后,导入到PostGIS数据库
先用pgRouting插件里带有的dijkstra算法接口,找出两点间的最短路径经过的线段,通过截取、拼接的方式美化开始段、结束段,最后用函数的形式封装完,利用Geoserver发布成服务
前端页面用Openlayers调用服务,实现功能展示
12、正式版效果

PostGIS 结合Openlayers以及Geoserver实现最短路径分析(三)的更多相关文章
- PostGIS 结合Openlayers以及Geoserver实现最短路径分析(二)
前文讲述了怎么用ArcMap制作了测试数据,并导入了PostGIS,接下来我们需要结合PgRouting插件,对入库的数据再进行一下处理. 1.在pgAdmin中,执行下面的sql语句 --添加起点字 ...
- PostGIS 结合Openlayers以及Geoserver实现最短路径分析(一)
环境: Win10 ArcMap10.4(用于数据处理) postgresql9.4 postgis2.2.3 pgRouting2.3(postgresql插件) ##附上本文配套素材下载地址:ht ...
- postgresql+postgis+pgrouting实现最短路径查询(2)---openlayers+geoserver实现最短路径
自己的最短路径实现基本上是按照参考博文的1.2和3进行的,实现的时候也是问题不断,只能是一个一个解决. 问题1:自己发布的geoserver服务无法和OSM底图叠加到一起. 解决:参考博文2提到发布服 ...
- Arcgis Engine最短路径分析
ArcEngine 最短路径分析(源码) using System; using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.Geometry; using ESRI ...
- ArcGIS API for JavaScript 4.2学习笔记[27] 网络分析之最短路径分析【RouteTask类】
要说网页端最经典的GIS应用,非网络分析莫属了. 什么?你没用过?百度高德谷歌地图的路线分析就是活生生的例子啊!只不过它们是根据大实际背景优化了结果显示而已. 这个例子使用RouteTask进行网络分 ...
- arcgis api 3.x for js 入门开发系列十三地图最短路径分析(附源码下载)
前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...
- 以Network Dataset(网络数据集)方式实现的最短路径分析
转自原文 以Network Dataset(网络数据集)方式实现的最短路径分析 构建网络有两种方式,分别是网络数据集NetworkDataset和几何网络Geometric Network,这个网络结 ...
- ArcGIS网络分析之Silverlight客户端路径分析(三)
原文:ArcGIS网络分析之Silverlight客户端路径分析(三) 首先贴上最终的效果图: a.路径查询 2.最近设施点查询 3.服务区分析 说明: 1.以上的示例使用的数据是随意在ArcMap中 ...
- OpenLayers 3+Geoserver+PostGIS实现点击查询
WebGIS开发中,点击查询是最经常使用的一种查询方式,在ArcGIS api 中.这样的查询叫IdentifyTask,主要作用是前台提交參数.交ArcServer查询分析返回. 本文从开源框架的角 ...
随机推荐
- Git 项目提交新仓库
提示:进入项目文件操作 步骤: 1.git init ----------初始化git仓库 2.git remote add origin 你的项目地址 ------------------如: ...
- 轻量级CNN模型之squeezenet
SqueezeNet 论文地址:https://arxiv.org/abs/1602.07360 和别的轻量级模型一样,模型的设计目标就是在保证精度的情况下尽量减少模型参数.核心是论文提出的一种叫&q ...
- Java IO_003.Reader与Writer--字符流以及编码对数据的操作(读取与写入)
Java IO之Reader与Writer对象常用操作(包含了编码问题的处理) 涉及到文件(非文件夹)内容的操作,如果是纯文本的情况下,除了要用到File(见之前文章),另外就必须用到字符输入流或字符 ...
- travis-ci + php + casperjs 持续集成
.travis.yml 文件添加内容: sudo: required language: php php: - 5.5 before_script: - npm install -g casperjs ...
- 组合+封装+property+多态+鸭子类型(day21)
目录 昨日回顾 继承 什么是继承 继承的目的 什么是抽象 继承背景下,对象属性的查找顺序 派生 什么是派生 子类派生出新的属性,重用父类的属性 新式类和经典类 钻石继承的继承顺序 今日内容 一.组合 ...
- Mysql数据库(二)Mysql数据库管理
一 .创建数据库 1.通过CREATE DATABASE db_library;创建名称为db_library的数据库. 2.通过CREATE SCHEMA db_library1;创建名称为db_l ...
- (四)Kinect人脸识别
kinect可以通过摄动摄像头不仅可以获取人脸位置旋转信息,也可以获取脸部轮廓的三维坐标 可以参考插件中的场景KinectFaceTrackingDemo1-4,在kinectManager基础上需要 ...
- django-URL之include函数(五)
三种格式:(1)incude(module,namespace=None) from django.urls import path,include from book import urls url ...
- python wraps的作用
1.__name__用来显示函数的名称,__doc__用来显示文档字符串也就是("""文档字符串""")这里面的内容 2.首先我们来看不加@ ...
- spring cloud 2.x版本 Feign服务发现教程(内含集成Hystrix熔断机制)
前言 本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3 本文基于前两篇文章eureka-server和eureka-client的实现. 参考 ...