基于PostgreSQL+Geoserver+OpenLayers的Webgis台风路径地图服务发布 |
您所在的位置:网站首页 › 世界台风实时路径图 › 基于PostgreSQL+Geoserver+OpenLayers的Webgis台风路径地图服务发布 |
基于PostgreSQL+Geoserver+OpenLayers的Webgis台风路径地图服务发布
一、实现效果二、环境要求1. PostgreSQL2.GeoServer3.OpenLayers4.Qgis
三、数据准备1.底图数据发布Geoserver图层发布Geoserver图层符号化Geoserver图层组发布台风数据
2.前端渲染OpenLayers调用Geoserver WMS服务OpenLayers台风路径可视化
一、实现效果
安装了PostgreSQL之后还需要安装对应版本的空间数据存储拓展(Postgis)才能支撑空间数据的管理,安装的流程不再赘述,网上教程大都可行。 2.GeoServerGeoServer是OpenGIS Web服务器规范的J2EE实现的社区开源项目,利用GeoServer可以方便的发布地图数据,允许用户对特征数据进行更新、删除、插入操作。获得GeoServer服务的最直接的方法在其官网http://geoserver.org/下载zip压缩包,解压后双击bin目录下的startup.bat文件就可以启动(前提需要安装了JDK)。 OpenLayers使用的是5版本,可以去官网https://openlayers.org/下载压缩包或者直接使用cdn都可以。 4.QgisQgis是跨平台开源的桌面地理信息系统,可以说是目前比较优秀的开源GIS软件,功能强大,基本能够满足要求,使用Qgis的主要原因是利于对底图进行标注,这在第三部分会提到。 三、数据准备数据准备可以分为两个部分,一个是底图数据,另一个是台风路径数据,底图数据主要包括世界地图、中国行政区划图、九段线、南海诸岛,台风数据主要包括各个时刻台风的经纬度、风力、风速等信息。 1.底图数据发布底图数据使用的是全国大学生GIS技能大赛试题(台风路径分析)提供的数据,包含了世界地图、中国行政区划、九段线、南海诸岛,这些数据进行了一些处理,原始数据可以在网上下载,处理后的数据上传在csdn底图数据直接下载,可以直接下载。 Geoserver图层发布数据处理完成后即可使用Gesosever进行地图服务的发布,Geoserver如何发布地图服务可以参考这两位兄弟的教程 geoserver地图发布服务教程(5)—发布postgis数据 搭建简易Web GIS网站:使用GeoServer+PostgreSQL+PostGIS+OpenLayers3 将所有的底图图层都发布之后,可以在图层中看到添加的底图 和实现效果相比较,明显不是我们需要的效果,这就是之前提到的使用Qgis进行地图标注的原因。 Geoserver图层风格支持ZIP和SLD两种格式,推荐使用SLD,更加方便快捷,SLD是风格化图层描述器(Styled Layer Descriptor)的简称,Geoserver支持手写SLD也支持使用工具生成(Qgis就可以做到)。 打开安装好的Qgis(安装教程可以参考这位老哥的Qgis安装教程)将文件加载到Qgis中,右键图层选择【属性】,对【符号化】和【标注】进行设置。 达到想要的效果后,在符号化的左下角点击【样式】下拉框,选择【保存样式】,将其保存为SLD格式 Style没问题后,点击【图层】,单击【Title】下的对应图层,切换到【发布】,将Styles与图层进行关联,选择自定义的符号化样式。 发布图层后只能预览单个图层,而底图是所有图层叠加显示,可以同时调用多个图层进行图层的叠加,更好的办法是使用geoserver的图层组,对多个图层进行叠加组合后以单个服务的形式发布。 单击【图层组】->【添加新的图层组】,对Name、工作区、坐标参考系(ESPG4326)进行设置 台风数据使用数据库管理软件直接导入数据库中 在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 |