基于PostgreSQL+Geoserver+OpenLayers的Webgis台风路径地图服务发布

您所在的位置:网站首页 世界台风实时路径图 基于PostgreSQL+Geoserver+OpenLayers的Webgis台风路径地图服务发布

基于PostgreSQL+Geoserver+OpenLayers的Webgis台风路径地图服务发布

2023-01-24 03:23| 来源: 网络整理| 查看: 265

基于PostgreSQL+Geoserver+OpenLayers的Webgis台风路径地图服务发布 一、实现效果二、环境要求1. PostgreSQL2.GeoServer3.OpenLayers4.Qgis 三、数据准备1.底图数据发布Geoserver图层发布Geoserver图层符号化Geoserver图层组发布台风数据 2.前端渲染OpenLayers调用Geoserver WMS服务OpenLayers台风路径可视化

一、实现效果

实现效果 路径对比图(来源:浙江水利厅http://typhoon.zjwater.gov.cn/default.aspx###): 在这里插入图片描述

二、环境要求 1. PostgreSQL

安装了PostgreSQL之后还需要安装对应版本的空间数据存储拓展(Postgis)才能支撑空间数据的管理,安装的流程不再赘述,网上教程大都可行。

2.GeoServer

GeoServer是OpenGIS Web服务器规范的J2EE实现的社区开源项目,利用GeoServer可以方便的发布地图数据,允许用户对特征数据进行更新、删除、插入操作。获得GeoServer服务的最直接的方法在其官网http://geoserver.org/下载zip压缩包,解压后双击bin目录下的startup.bat文件就可以启动(前提需要安装了JDK)。 在这里插入图片描述 看到如下图的命令行说明GeoServer启动成功 在这里插入图片描述 启动成功后在浏览器输入http://localhost:8080/geoserver/web/即可进入GeoServer地图服务管理界面,点击右上角的登录(默认用户名是admin,密码是geoserver)

3.OpenLayers

OpenLayers使用的是5版本,可以去官网https://openlayers.org/下载压缩包或者直接使用cdn都可以。

4.Qgis

Qgis是跨平台开源的桌面地理信息系统,可以说是目前比较优秀的开源GIS软件,功能强大,基本能够满足要求,使用Qgis的主要原因是利于对底图进行标注,这在第三部分会提到。

三、数据准备

数据准备可以分为两个部分,一个是底图数据,另一个是台风路径数据,底图数据主要包括世界地图、中国行政区划图、九段线、南海诸岛,台风数据主要包括各个时刻台风的经纬度、风力、风速等信息。

1.底图数据发布

底图数据使用的是全国大学生GIS技能大赛试题(台风路径分析)提供的数据,包含了世界地图、中国行政区划、九段线、南海诸岛,这些数据进行了一些处理,原始数据可以在网上下载,处理后的数据上传在csdn底图数据直接下载,可以直接下载。

Geoserver图层发布

数据处理完成后即可使用Gesosever进行地图服务的发布,Geoserver如何发布地图服务可以参考这两位兄弟的教程 geoserver地图发布服务教程(5)—发布postgis数据

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

将所有的底图图层都发布之后,可以在图层中看到添加的底图 在这里插入图片描述 点击【Layer Preview】可以对发布的图层进行多种预览(OpenLayers、GML、KML等) 在这里插入图片描述

Geoserver图层符号化

和实现效果相比较,明显不是我们需要的效果,这就是之前提到的使用Qgis进行地图标注的原因。 Geoserver图层风格支持ZIP和SLD两种格式,推荐使用SLD,更加方便快捷,SLD是风格化图层描述器(Styled Layer Descriptor)的简称,Geoserver支持手写SLD也支持使用工具生成(Qgis就可以做到)。

打开安装好的Qgis(安装教程可以参考这位老哥的Qgis安装教程)将文件加载到Qgis中,右键图层选择【属性】,对【符号化】和【标注】进行设置。 在这里插入图片描述

达到想要的效果后,在符号化的左下角点击【样式】下拉框,选择【保存样式】,将其保存为SLD格式 在这里插入图片描述 回到geoserver,点击【Styles】->【Add a new Styles】,设置Name、工作区、风格文件格式、图层的类型后选择对应的SLD文件选择上传,进行Validate后没问题选择保存。 注意要素在Qgis中和在PostgreSQL中的属性大小写是否匹配的问题,SLD中必须和PostgreSQL中匹配。

Style没问题后,点击【图层】,单击【Title】下的对应图层,切换到【发布】,将Styles与图层进行关联,选择自定义的符号化样式。在这里插入图片描述 保存后再次预览,已经进行了符号化,其余图层同上。 在这里插入图片描述

Geoserver图层组发布

发布图层后只能预览单个图层,而底图是所有图层叠加显示,可以同时调用多个图层进行图层的叠加,更好的办法是使用geoserver的图层组,对多个图层进行叠加组合后以单个服务的形式发布。

单击【图层组】->【添加新的图层组】,对Name、工作区、坐标参考系(ESPG4326)进行设置 在这里插入图片描述 然后就可以进行图层的添加,单击【添加图层】,会列出【图层】中可以添加的图层,在这里插入图片描述 分别进行添加,对图层的先后顺序进行设置后就可以保存 在这里插入图片描述 在Layer Preview中多了一个图层组,选择open layers预览,达到了我们的预期 在这里插入图片描述

台风数据

台风数据使用数据库管理软件直接导入数据库中 在这里插入图片描述

2.前端渲染

在html中引入OpenLayers依赖后就可以直接调用WMS服务加载底图并渲染台风路径

OpenLayers调用Geoserver WMS服务 var map = new ol.Map({ layers: [ new ol.layer.Tile({ //调用geoserver source: new ol.source.TileWMS({ url: 'http://localhost:8080/geoserver/typhoon/wms', params: { 'LAYERS': 'typhoon:base_map', 'TILED': true }, serverType: 'geoserver', crossOrigin: 'anonymous', transition: 0, }) }) ], target: 'map', view: new ol.View({ projection: 'EPSG:4326', center: [120, 33], zoom: 4.5, }), controls: [new ol.control.MousePosition()] }); OpenLayers台风路径可视化

台风数据存储在PostgreSQL中,所以还需要从数据库中读取,所以需要一个简单的后端去请求数据库,使用了Ajax异步请求得到数据后再进行渲染。

// 添加一个绘制的线使用的layer var drawLayer = new ol.layer.Vector({ //layer所对应的source source: new ol.source.Vector(), }) //把layer加入到地图中 map.addLayer(drawLayer); $.ajax({ type: "get", dataType: "json", url: "http://localhost:8081/api/typhoon/find_typhoon?name=莫兰蒂", contentType: "application/json; charset=utf-8", success: function (result) { for (var i = 0; i console.log("请求失败") } }) function addPoint(lng, lat) { //创建一个点 var point = new ol.Feature({ geometry: new ol.geom.Point([lng, lat]), }) drawLayer.getSource().addFeatures([point]) }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3