搭建简易Web GIS网站:使用GeoServer+PostgreSQL+PostGIS+OpenLayers3

news/2024/5/20 21:20:55/文章来源:https://blog.csdn.net/weixin_30338461/article/details/99803736

搭建简易Web GIS网站:使用GeoServer+PostgreSQL+PostGIS+OpenLayers3

1         服务器搭建

使用Tomcat需要先安装Java。从Oracle官方网站下载Java最新版本:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

安装完成Java后,需要配置环境变量。具体方法请自行百度。安装成功后可以下载服务器了。

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

http://tomcat.apache.org/

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

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

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

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

接下来去GeoServer官方网站下载最新的版本:

http://blog.geoserver.org/

下载war文件。在下载后的压缩包中可以看到geoserver.war文件,这个就是GeoServer的服务器文件了。将这个文件复制到webapps目录下。

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

 

在网页下方找到WAR file to deploy,选择geoserver.war文件,上传,稍等片刻,等待上传成功即可。此时刷新网页,上方会出现geoserver应用,点击可以进入GeoServer的首页。

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

该图即为GeoServer在服务器上的首页。可以在本页进行数据的连接和发布。

2         地理信息数据导入及发布

在本段中,笔者将使用中国2014GDP数据作为例子,进行数据的发布。

对于地理信息数据的导入,需要使用到空间数据库。在本文中,笔者使用的是PostgreSQL+PostGIS完成这一任务。接下来,将详细介绍如何导入数据。

首先去PostgreSQL官方网站下载最新版的软件,推荐9.5及以前的版本:

https://www.postgresql.org/

安装的时候需要注意记住数据库访问的帐号和密码,为了方便,均可以设置为postgres作为测试。设置端口为默认值5432.

在安装完成后,可以继续安装PostgreSQL的插件管理软件,其中可以选择PostGIS进行安装,也可以前往PostGIS的官方网站进行下载:

http://www.postgis.org/

在安装的过程中,注意勾选安装空间数据库。需要登录PostgreSQL数据库时,使用先前设定的帐号密码即可。

安装结束后,打开pgAdmin管理工具,可以对PostgreSQL进行管理。

首先是连接PostgreSQL,接下来可以通过右键(点击数据库)或者使用SQL语句,根据需要,新建一个数据库。

建立完成数据库后,点击该数据库下的架构->public->数据表,使用SQL语句添加空间数据库管理插件PostGIS:

CREATE EXTENSION PostGIS

成功后,刷新,数据表中会出现spatial_ref_sys,说明可以导入空间数据了。

点击pgAdmin上方的插件,选择PostGIS插件,可以导入shp文件。选择Add File,通过路径选择shp文件,再点击import,即可导入文件。

此时数据已经导入了空间数据库,可以进行数据发布的操作了。

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

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

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

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

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

在最下面点击保存即可。

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

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

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

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

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

在下拉选框中还可以选择WMS和WFS服务等。这些也就构成了服务器端的数据。

3      使用OpenLayers作为前端

笔者使用OpenLayers进行前端的编写。目前最新的版本是OpenLayers3,可以前往GitHub下载代码:

https://github.com/openlayers/openlayers

其中包含了css文件和js文件,在写前端时需要包含在网页中:

<link rel="stylesheet" type="text/css" href="CSS/ol.css" />

<script type="text/javascript" src="Scripts/ol.js"></script>

其API文档在官方网站上有:

http://openlayers.org/en/latest/apidoc/

也可以参考官方给出的案例进行学习:

http://openlayers.org/en/latest/examples/

此外,为了完成能够完成前后端的交互,还应下载jQuery。

http://jquery.com/download/

之后也应将其添加在网页中。

OpenLayers的核心部件为Map (ol.map),相当于地图的容器。整个地图的数据就是通过该部件进行显示。

Map中包含了Layer图层控件和View视图控件,分别是对于图层数据的操控和对于用户视图的操控。Layer (ol.layer)控制数据的可视化显示,支持Tile (瓦片地图)、Image (影像数据)、Vector (矢量数据)的显示;而View (ol.view)控制地图的中心点、放大、投影等设置。

添加一个地图并进行显示的js代码如下:

复制代码
 1 <div id="map">
 2     <script>
 3         var format = 'image/png';
 4 var bounds = [73.441277, 18.159829,  5 135.08693, 53.561771];//范围  6  7 //中国各省底图(面)  8 var ImageMap = new ol.layer.Image({  9 source: new ol.source.ImageWMS({ 10 ratio: 1, 11 //自己的服务url 12 url: 'http://localhost:8080/geoserver/CHINA/wms', 13 //设置服务参数 14  params: { 15 'FORMAT': format, 16 'VERSION': '1.1.0', 17 STYLES: '', 18 //图层信息 19 LAYERS: 'CHINA:china_2014gdp', 20  } 21  }) 22  }); 23 24 //设置地图投影 25 var projection = new ol.proj.Projection({ 26 code: 'EPSG:4326',//投影编码 27 units: 'degrees', 28 axisOrientation: 'neu' 29  }); 30 31 //设置地图 32 var map = new ol.Map({ 33 //地图中的比例尺等控制要素 34  controls: ol.control.defaults({ 35 attribution: false 36  }).extend([ 37 new ol.control.ScaleLine() 38  ]), 39 //设置显示的容器 40 target: 'map', 41 //设置图层 42  layers: [ 43 //添加图层 44  ImageMap 45  ], 46 //设置视图 47 view: new ol.View({ 48 //设置投影 49  projection: projection 50  }) 51  }); 52 53 //地图显示 54  map.getView().fit(bounds, map.getSize()); 55 </script> 56 </div>
复制代码

首先需要定义一个图层,而这个图层调用的是由GeoServer发布的WMS服务,其数据源是服务的url,可以通过进入服务器,找到相应服务,点击相应的WMS服务获取其url。

接下来需要设置显示的格式,这里设置了地图投影为WGS84,即代号4326.

之后创建了地图容器map,将图层添加进去,并设置了投影。

接下来分别设置了地图初始的显示范围,最后调用getView().fit函数,显示地图。

效果图:

 

具体代码和数据可以参考github:https://github.com/kkyyhh96/WebGIS

 

2017.2.24更新声明:用最新中文版软件替换原先英文版软件,插入一些新的图片,增加案例讲解,修改代码展示。

转载请注明作者和出处——天靖居士:http://www.cnblogs.com/kkyyhh96/ 海阔凭鱼跃,天高任鸟飞
标签: PostgreSQL, OpenLayers, GeoServer
好文要顶 关注我 收藏该文
天靖居士
关注 - 2
粉丝 - 4
+加关注
3
0
« 上一篇:Ubuntu学习小结(二)PostgreSQL的使用,进程的查看关闭,编辑器之神Vim入门
» 下一篇:MATLAB数字图像处理(一)基础操作和傅立叶变换
posted @ 2017-02-08 18:55 天靖居士 阅读(2568) 评论(6) 编辑 收藏

转载于:https://www.cnblogs.com/jiapengsongweb/p/7509342.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_783578.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对象网站中全局信息的抽象(Web.Config)

几个常用的全局常量 调用Web.config节点的方法 本文转自博客园张占岭&#xff08;仓储大叔&#xff09;的博客&#xff0c;原文链接&#xff1a;对象网站中全局信息的抽象&#xff08;Web.Config&#xff09;&#xff0c;如需转载请自行联系原博主。

seo如何优化文章-知识交流_SEO优化文章如何发布可以实现快速排名

很多人做SEO优化的时候&#xff0c;不知道如何发文章&#xff0c;大家的感觉就是SEO优化很难写&#xff0c;今天知啦娱乐网小编手把手教大家如何发文章&#xff0c;而且是发有用的文章&#xff0c;可以实现搜索引擎快速排名。如果想了解&#xff0c;请继续往下看&#xff1a;SE…

SeaJS 前端模块化开发探索与网站性能优化实践

2019独角兽企业重金招聘Python工程师标准>>> PDF链接&#xff1a;http://pan.baidu.com/s/1CCz4C 转载于:https://my.oschina.net/shawnSongxiaoqiang/blog/361020

网站域名可访问但经过搜索引擎访问不了的解决办法

今天接了个这样的活&#xff0c;这个自己也头一次遇到&#xff0c;把经验分享给大家。网上下载的免费的asp源码&#xff0c;底部写着九牧科技这个公司源码&#xff0c;网站做好了&#xff0c;被百度收录发现不能访问&#xff0c;看着地址也没有错的&#xff0c;有的浏览器提示重…

ASP.NET的SEO: 服务器控件背后——SEO友好的Html和JavaScript

本系列目录 假设你需要从一个页面转向其他页面&#xff0c;下面有很多种方式&#xff0c;你是如何选择的呢&#xff1f;你能清晰的说明理由么&#xff1f; <%--链接的表现形式--%><asp:HyperLink ID"HyperLink1"runat"server"NavigateUrl"…

有什么网站是python做的_自学python有什么网站

Python是未来人工智能最好的编程语言&#xff0c;很多程序员在有其她编程基础的情况选择学习python是比较容易的&#xff0c;当然现在很多想进入编程界的新手选择python开始接触学习编程&#xff0c;但是由于经费有限&#xff0c;只能选择最便宜的学习方式就是自学成才&#xf…

关键词组合工具_网站关键词的定位和布局

每个SEO人员都会有自己的核心关键字定义。百度的核心关键词一直是人们讨论的话题。我们知道&#xff0c;这是一个流量拥挤和匮乏的时代。核心关键字的选择决定了我们对流量的选择以及基于品牌搜索流量的网站定位。那么关键词怎么选呢&#xff1f;选择关键词有七种方法&#xff…

访问量超过100万的电子商务网站技术架构=LVS

本连载首篇介绍到电子商务网站高性能、高可用解决方案。从架构图上的方案&#xff0c;应用的是LVSkeepalived负载均衡。实现高性能、高可用解决方案 (服务器组成集群&#xff0c;达到负载均衡&#xff0c;高性能、高可用、高可伸缩性的服务器集群)互联网->LVS负载均衡(前端四…

中head函数_wordpress插件,怎样向网站添加数据?试试wp_head()函数

有时候&#xff0c;我们会碰到这样一种情况&#xff1a;我们的wordpress网站主题模板已经定型了&#xff0c;但是&#xff0c;我们后期又想向wordpress网站添加一些新功能&#xff0c;这时候&#xff0c;我们该怎么办&#xff1f;是继续修改wordpress网站主题模板吗&#xff1f…

网站建设就要像2018世界杯的俄罗斯队大杀四方[图]

2019独角兽企业重金招聘Python工程师标准>>> 今天心情不错&#xff0c;因为昨天晚上观看了世界杯比赛&#xff0c;尤其是对俄罗斯队的大杀四方感到十分霸气侧漏啊&#xff0c;因此我联想到了自己的博客网站&#xff0c;我的博客是去年年底上线的&#xff0c;一直想建…

CSS实现onMouseOver、onMouseOut效果和层套菜单

在IE中 <a> 标签的。而实际上 WEB 标准里面&#xff0c; 应该对所有元素都支持。如果使用 Mozilla 或者 Opera, 那么可以看到不需要这个 htc 都可以正常运行的。 因为 htc 是 IE 特有的&#xff0c;别的浏览器不能理解&#xff0c;会忽略掉&#xff0c;不影响结果的显示。…

使用Apache搭建Web网站服务器

学习一个服务的过程&#xff1a; 此服务器的概述&#xff1a;名字&#xff0c;功能&#xff0c;特点&#xff0c;端口号安装配置文件的位置服务启动关闭脚本&#xff0c;查看端口此服务的使用方法 修改配置文件&#xff0c;实战举例排错&#xff08;从下到上&#xff0c;从内到…

【建站知识】360安全检测出轻微 X-Frame-Options头未设置,iis、apache、nginx使用X-Frame-Options防止网页被Frame的解决方法...

当然也是因为被360检测到了示&#xff02;X-Frame-Options头未设置&#xff02;&#xff0c;根据360的提示与百度了一些网上的一些资料整理了下&#xff0c;完美解决问题。 首先看下360给出的方案&#xff0c;但么有针对服务器的具体设置&#xff0c;不是每个人对服务器都很懂啊…

《从零开始学Swift》学习笔记(Day 2)——使用Web网站编写Swift代码

原创文章&#xff0c;欢迎转载。转载请注明&#xff1a;关东升的博客Swift程序不能在Windows其他平台编译和运行&#xff0c;有人提供了一个网站swiftstub.com&#xff0c;左栏是代码编辑窗口&#xff0c;右栏是运行结果窗口。可以在任何平台下编译和运行Swift程序。欢迎关注关…

VS2019新建网站并发布到IIS

发布网站特别注意事项整理 参考&#xff1a; https://blog.csdn.net/qingkaqingka/article/details/87011330 1、控制面板-程序-启动和关闭windows功能 特别注意以下选项要选中&#xff0c;默认是不选中的。 2、vs2019新建项目 3、发布 勾选 在发布期间预编译 这样就不会包含任…

IIS 发布网站无法显示图片

发布网站以后&#xff0c;图片全是叉号。 1、先确认&#xff0c;IIS服务管理器下面没有MIME类型这个选项 2、参考设置权限&#xff0c;&#xff08;我的程序是拷贝过来的&#xff09;&#xff1a; https://blog.csdn.net/yzm272/article/details/86506615 1、第一步打开IIS 控…

PC比电脑好玩的秘密是什么?答案就是因为有这些神奇的网站!

五花八门小工具合集http://www.nicetool.net/ 该网站真的很“乱”&#xff01;因为里面的小功能真的很多&#xff01;无论是Gif制作、证件照换底色、还是搞笑的王思聪微博生成&#xff0c;它都能让你得心意手&#xff01; 根据你的星座推荐电影https://magicmoviesorter.com/ 如…

案例学Python--案例四:Django实现一个网站的雏形(2)

续上篇&#xff0c;用Django创建了一个Web&#xff0c;我们肯定想展示自己的页面&#xff0c;简单点&#xff0c;我们想看到自己的HelloWorld。此处要从项目的配置说起&#xff0c;方法和路径配对了&#xff0c;展现页面分分钟的事情。 先上效果图吧&#xff1a; 项目结构&…

如何给网站添加SSL证书(免费)?

2019独角兽企业重金招聘Python工程师标准>>> 本篇只针对各位网站管理员&#xff09;做网站的一般都希望自己的网站有SSL证书&#xff0c;因为SSL可以使浏览者以加密的方式浏览网站&#xff0c;保证浏览者的隐私&#xff0c;同时还能提高网站的SEO。本文就教你如何给…

通过图片优化,我将网站大小减少了62%

图片是Web提供的最基本的一种内容类型。人们都说一张图片胜过千言万语。但如果你一不小心&#xff0c;它也可能占用你好几兆带宽。 虽说Web图像应该尽可能清晰明快&#xff0c;但文件大小必须是可管理的&#xff0c;以便保持较快的加载速度&#xff0c;并且应该将数据使用保持在…