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

news/2024/5/14 1:53:25/文章来源:https://blog.csdn.net/weixin_30853329/article/details/102280921

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

Web GIS系列:

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

使用GeoServer+QGIS发布WMTS服务

使用GeoServer+OpenLayers发布和调用WMTS、Vector Tile矢量切片服务

Leaflet入门:添加点线面并导入GeoJSON数据

 

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

Web GIS系列:

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

2.使用GeoServer+QGIS发布WMTS服务

3.使用GeoServer+OpenLayers发布和调用WMTS、Vector Tile矢量切片服务

4.Leaflet入门:添加点线面并导入GeoJSON数据

转载于:https://www.cnblogs.com/think90/p/11443547.html

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

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

相关文章

如何查询自己的网站备案号码

原文地址&#xff1a;http://www.5u5.cn/a/zhishiku/xunizhuji/2010/0110/141.html 时间:2010-01-10 10:33来源:无忧技术 作者:Wilber82首先登陆工信部备案网站 http://www.miibeian.gov.cn/ 左侧点击 公共查询 进入查询页面&#xff1a;点击 公共信息查询&#xff1a;右边输入…

php网站乱码,完美解决乱码、一键解决PHP的乱码、php网站乱码矫正神器、PHP乱码修复器

php乱码无非就是编码问题&#xff0c;可以使用phpwamp自带的常用工具一键解决 输入你的php版本文件的所在路径&#xff0c;点击修复&#xff0c;然后重启动环境就可以了

使用IIS部署PHP网站

接到通知&#xff0c;需要将云服务器上的PHP网站部署到自己的Windows服务器上。 反驳无效&#xff0c;动手就干。 0、准备工作 0.Windows Server 2012R2 1.IIS8 2.PHP CGI&#xff08; FastCGI 是一种标准协议&#xff0c;可允许应用程序框架的通用网关接口 (CGI) 可执行文件…

java 自适应响应式 网站 源码 SSM 生成 静态化 手机 平板 PC

前台&#xff1a; 支持四套模版&#xff0c; 可以在后台切换访问&#xff1a;三W点1b23点org 系统介绍&#xff1a;1.网站后台采用主流的 SSM 框架 jsp JSTL&#xff0c;网站后台采用freemaker静态化模版引擎生成html2.因为是生成的html&#xff0c;所以访问速度快&#xff0c;…

视频播放网站CDN内容分发网络实现

视频播放如果只有一台视频服务器&#xff0c;当访问用户过多时&#xff0c;服务器将承受不了负载。所以我们需要在视频服务器下面增加边缘服务器&#xff0c;下面以视频服务器加三台边缘服务器为例。网络环境图&#xff1a;1. 用户可通过PC机或手机访问网站。2. 网站将用户请求…

程序员应该访问的最佳网站中文版

原文链接 :https://github.com/tuteng/Best-websites-a-programmer-should-visit-zh/blob/master/README.md 一些对程序员有用的网站 在学习CS的时候有一些你必须知道的有用的站点来获取通知为了你的技术储备和学习新知识。这里是一个你应该访问的不是非常全面的一些站点的列表…

[SEO]让你的Asp.Net网站自动生成Sitemap——XmlSitemap

首先我要说明&#xff1a;Asp.Net内置的Sitemap与这里讲的Sitemap是完全不同的&#xff0c;Asp.Net中的Sitemap主要用于给用户导航&#xff0c;而这里说的Sitemap是用来给搜索引擎爬虫指路。还是直接来看看官方解释吧&#xff1a;什么是Sitemap&#xff1f;Sitemap 可方便管理员…

c# 模拟网站登陆

我们在写灌水机器人、抓资源机器人和Web网游辅助工具的时候第一步要实现的就是用户登录。那么怎么用C#来模拟一个用户的登录拉要实现用户的登录&#xff0c;那么首先就必须要了解一般网站中是怎么判断用户是否登录的。 HTTP协议是一个无连接的协议&#xff0c;也就是说这次对话…

Joomla 3.9.4 发布,免费建站系统

Joomla 3.9.4现已推出。这是针对3.x系列Joomla的安全修复程序版本&#xff0c;它解决了4个安全漏洞&#xff0c;包含28个错误修复和改进。 什么是3.9.4&#xff1f; Joomla 3.9.4包含4个安全漏洞修复程序以及一些错误和改进&#xff0c;包括&#xff1a; 安全问题已修复 高优先…

C# 代码生成器 网站架构设计

自己写的一个 web 版简易 C# Code Generator&#xff0c;可快速产生某个数据库中&#xff0c;所有表 Mapping 的 C# 3.0 类。可当作网站分层开发、表单大量传递用户输入值、在内存里持久化保存值之用&#xff0c;亦可当作 NHibernate 等 O/R Mapping 框架套用时的 C# 代码生成器…

网站秒杀那点破事(转)

2010年光荣的劳动者节日过后某上午&#xff0c;经过一番所谓的唇枪舌剑、唾沫星子狂喷之后&#xff0c;宣布&#xff0c;此次活动相当的烂&#xff0c;一干策划、设计、推广在会议上低下高贵的头&#xff0c;咱&#xff0c;技术部 &#xff0c;某小B就开始了反省了——多好的员…

ASP.NET WebForm开发WAP网站 (转)

随着手机上网的兴起&#xff0c;我们实际项目中可能会遇到专门针对手机开发的网站&#xff0c;虽然ASP.NET 也有专门的WAP控件库&#xff0c;但在某些时候&#xff0c;这也不是完美的解决方案。ASP.NET WebFrom具有高效开发网站的优势&#xff0c;但对于手机上网来说&#xff0…

iis 7根据pid查看对应的网站 对应的应用网站程序池

原文&#xff1a;https://www.cnblogs.com/yzb-bky/p/6408795.html 哎 今天一登服务器&#xff0c;看见cpu100%头疼。。 一看 居然还有个网站占了 2 30%的cpu 很奇怪。于是想查到底是哪个网站&#xff0c;找了一会资料&#xff0c;记录下来 最终找到是某个后台导致的&#…

网站架构模式:前后端分离与前后端不分离

前后端不分离 在前后端不分离的应用模式中&#xff0c;前端页面看到的效果都是由后端控制&#xff0c;由后端渲染页面或重定向&#xff0c;也就是后端需要控制前端的展示&#xff0c;前端与后端的耦合度很高。 这种模式比较适合纯网页应用&#xff0c;但是当后端对接App时&am…

.net 网站 播放flv格式视频

将返回的字符串打印在页面。 /// <summary>/// 适用flv文件/// </summary>/// <param name"videoUrl">视频url</param>/// <param name"height">播放器高度</param>/// <param name"width">播放器宽度…

php支付宝手机网站支付功能,Laravel5.5 支付宝手机网站支付的教程

1、安装使用Laravel扩展库yansongda/laravel-pay通过composer进行安装$ composer require yansongda/laravel-pay生成配置文件$ php artisan vendor:publish --provider"Yansongda\\LaravelPay\\PayServiceProvider" --taglaravel-pay2、配置支付信息&#xff0c;填写…

如何下载bilibili类似网站里面的视屏,之后转音频

现在想要免费完整听一首自己喜欢的歌实属不易&#xff0c;以下就是我们这些穷b党层层破关的步骤&#xff01;要是有帮助的话&#xff0c;还望大侠记得双击&#xff0c;么么哒&#xff01; 1 首先到达你所要下载视屏的网页&#xff0c;复制该网站的url 2 登录解析第一大网硕鼠网…

python网站开发实例 flask_【9】Python接口开发:flask Demo实例

举例1&#xff0c;返回当前时间接口 初始化&#xff1a;所有的Flask都必须创建程序实例&#xff0c; web服务器使用wsgi协议&#xff0c;把客户端所有的请求都转发给这个程序实例 程序实例是Flask的对象&#xff0c;一般情况下用如下方法实例化 Flask类只有一个必须指定的参数&…

seo按天扣费系统_企业为什么要做SEO优化?杭州志卓云搜宝为您解答!

信息化时代&#xff0c;企业要想持续稳定发展&#xff0c;自身实力固然重要&#xff0c;不过企业对外形象的展示作用也不容小觑。企业网站作为门面担当&#xff0c;好的网站会获得更多的展现机会&#xff0c;吸引更多的目标客户点击访问&#xff0c;从而达到品牌建设及流量变现…

Linux运行脚本忽略警告,Linux用shell脚本监控网站运行状态并发告警邮件

#!/bin/bash#DATEdate "%Y.%m.%d-%H:%M:%S"ACCESS_DIR/root/curl/accessERRO_DIR/root/curl/erroSUCCESS_DIR/root/curl/successFILEdate "%Y.%m.%d-%H"WRONG(){cat $ERRO_DIR/$FILE | awk -F {print $2$3"\n"}#有错误状态码的域名}CURL(){for…