chaoshu的个人博客分享 http://blog.sciencenet.cn/u/chaoshu

博文

Tomcat+Geoserver+PostgreSQL+PostGIS+OpenLayers

已有 3626 次阅读 2020-6-29 10:56 |个人分类:GIS|系统分类:科研笔记

一、所涉及的软件下载链接:

链接: https://pan.baidu.com/s/1W2AR_-5lvgNcWZx5XyxNqQ

提取码: vsa1

二、使用Tomcat搭建Web服务器

安装JDK并配置环境:https://how2j.cn/k/helloworld/helloworld-jdk/141.html

Tomcat官网地址:https://tomcat.apache.org/download-70.cgi

从百度网盘或者从Tomcat官方网站下载最新的版本Tomcat,在Windows 10系统下解压缩即可使用:

1.png

在bin目录下在cmd终端打开startup.bat,略等片刻,在浏览器中输入localhost:8080,出现Tomcat网页,说明配置成功:

2.png

3.png

接下来需要在conf目录下打开tomcat-users.xml文件,将最后的信息改为以下文字:

4.png

这样,设定登陆Tomcat的帐号为:admin,密码为:tomcat。

之后需要将webapps目录下,manager目录下,WEB-INF文件夹中web.xml打开,找到<max-file-size>一项,将其中的数值第一位由5改为8,即82428800,同理将<max-request-size>改为上值。如下图:

5.png

这是因为GeoServer大于了50M,超过了默认的限制。

接下来去GeoServer官方网站下载最新的版本:http://blog.geoserver.org/

下载war文件。在下载后的压缩包中可以看到geoserver.war文件(这其实是一个压缩文件,如果把.war改成.zip后可以直接解压看看里面的内容),这个就是GeoServer的服务器文件了。将这个文件复制到webapps目录下。

6.png

接下来,重启Apache-Tomcat服务器,在浏览器中输入localhost:8080,点击首页上方的Manager App,输入帐号:admin和密码:tomcat即可登录应用管理器:

7.png

进入以后查看到如下界面,有一个/geoserver,这是由geoserver.war自动解压出来的目录:

9.png

8.png


在网页下方出现的/geoserver应用,点击可以进入GeoServer的首页。

这时可以设置GeoServer的管理员帐号。帐号admin,密码geoserver。当出现下图时,说明服务器配置成功。

10.png

11.png

三、PostgreSQL+PostGIS地理数据库

对于地理信息数据需要使用到空间数据库,本文采用百度网盘中的WebGIS-master\OpenLayers3\CHINA数据,如何导入数据呢?参考下面,具体操作过程就不讲了!

https://zhuanlan.zhihu.com/p/62160223

完成数据导入以后的效果如下:

28.png

四、Geoserver发布WMS服务

打开浏览器,进入GeoServer首页,点击左侧的工作区(Workspaces),再点击添加新的工作区(Add new workspaces)可以创建工作空间。工作空间的作用是在于将不同数据来源的数据保存在一起。在设置URI时,须设置为http://localhost:8080/china,china代表的是工作空间的名字,这样所有与之相关的网页均在这个URI之后。

13.png

14.png

接下来点击数据存储(Stores),再点击添加新的数据存储(Add new store),可以添加一个新的数据源。从图中我们可以看出,GeoServer支持多种数据类型。在这里我们以PostGIS为例进行服务的发布。

15.png

16.png

点击PostGIS选项,进入数据源信息的页面。先点击工作区(Workspace)下拉选项,可以选择具体的工作空间,例如本文中选择china。

接下来输入数据源名称,这是标识不同数据的依据,例如本文中输入postgis_25_sample。

在连接参数中,输入host,若为本机则为localhost,端口5432,再输入数据源在PostgreSQL中的数据库名称,之后输入连接PostgreSQL的帐号和密码,保存以后即可完成数据库的连接。

17.png

接下来就要发布具体的图层了。点击图层(Layers),即可进入图层选择界面;再点击添加一个新图层(Add a new resource),即可发布具体的图层。点击后,先选择具体的数据源,会出现该数据源下的各种表,选择需要发布为图层的数据表,点击发布(publish),即可进行发布。

19.png

可以根据需要输入图层名称,也可以直接使用默认的图层名称。需要注意的是地图投影的定义:

在这里可以输入地图投影。如果原图没有投影,将不会进行显示,在这里可以点击Find,输入投影的代码(如WGS84为4326)进行查找。接下来在下方的范围中,点击从数据中计算(Compute from data),即可算出范围。

其他的文本框可以不填。保存之后即为图层的发布。

20.png

为了查看发布后的效果,可以点击左侧的Layer Preview,找到刚刚发布的内容。GeoServer提供了多种数据格式可以调用。点击OpenLayers可以直接看到使用OpenLayers调用的图层。

21.png

URL地址:

http://localhost:8080/geoserver/china/wms?service=WMS&version=1.1.0&request=GetMap&layers=china%3Achina_2014gdp&bbox=8175445.5%2C2056264.75%2C1.5037809E7%2C7087594.0&width=768&height=563&srs=EPSG%3A3857&format=application/openlayers

在网页右键查看网页源代码,可以看到如果调用geoserver发布的wms服务的

23.png

四、使用OpenLayers作为前端

OpenLayers是一个用于开发WebGIS客户端的JavaScript包。OpenLayers 支持的地图来源包括Google Maps、Yahoo、 Map、微软Virtual Earth 等,用户还可以用简单的图片地图作为背景图,与其他的图层在OpenLayers 中进行叠加,在这一方面OpenLayers提供了非常多的选择。除此之外,OpenLayers实现访问地理空间数据的方法都符合行业标准。OpenLayers 支持Open GIS 协会制定的WMS(Web Mapping Service)和WFS(Web Feature Service)等网络服务规范,可以通过远程服务的方式,将以OGC 服务形式发布的地图数据加载到基于浏览器的OpenLayers 客户端中进行显示。OpenLayers采用面向对象方式开发,并使用来自Prototype.js和Rico中的一些组件。

https://segmentfault.com/a/1190000009679800

https://openlayers.org/

利用html文本调用wms服务脚本代码如下:

Test_WMS.html

<!DOCTYPE html>
<html>
  <head>
    <title>WMS</title>
    <link
      rel="stylesheet"
      href="https://openlayers.org/en/v3.20.1/css/ol.css"
      type="text/css"
    />
    <script src="https://openlayers.org/en/v3.20.1/build/ol.js"></script>
  </head>
  <body>
    <div id="map" class="map"></div>
    <script>
      var format = 'image/png';
      var bounds = [8175445.5, 2056264.75,
                    15037809, 7087594];
        //中国各省底图(面)
       var ImageMap = new ol.layer.Image({
        source: new ol.source.ImageWMS({
          ratio: 1,
          url: 'http://localhost:8080/geoserver/china/wms',
          params: {'FORMAT': format,
                   'VERSION': '1.1.1',  
                "LAYERS": 'china:china_2014gdp',
                "exceptions": 'application/vnd.ogc.se_inimage',
                }
            })
        });
        //设置地图投影
         var projection = new ol.proj.Projection({
          code: 'EPSG:3857',
          units: 'm',
          global: true
        });
        //设置地图
        var map = new ol.Map({
            //地图中的比例尺等控制要素
            controls: ol.control.defaults({
                attribution: false
            }).extend([
                new ol.control.ScaleLine()
            ]),
            //设置显示的容器
            target: 'map',
            //设置图层
            layers: [
                //添加图层
                ImageMap
            ],
            //设置视图
            view: new ol.View({
                //设置投影
                projection: projection
            })
        });
        //地图显示
        map.getView().fit(bounds, map.getSize());
    </script>
  </body>
</html>

注意实测发现,代码不能再Edge浏览器运行;最好选择谷歌浏览器!

参考资料:

https://www.cnblogs.com/kkyyhh96/p/6379515.html

http://webgis.cn/gconfig-setup.html




https://blog.sciencenet.cn/blog-858128-1239833.html

上一篇:WebGIS开源架构
下一篇:基于raspberry PI和mosaic-X5实现rtk定位
收藏 IP: 119.79.228.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-27 06:14

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部