ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

PostGIS 结合Openlayers以及Geoserver实现最短路径分析(三)

2019-09-30 14:02:48  阅读:295  来源: 互联网

标签:路径分析 PostGIS ol Openlayers params var new 图层


接上篇,前面在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[1],
            'x2:' + destCoord[0], 'y2:' + destCoord[1]
            //'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,ol,Openlayers,params,var,new,图层
来源: https://www.cnblogs.com/giser-s/p/11612472.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有