基于GeoServer和OpenLayers的开源WebGIS框架研究

2024-06-19 07:23曾新励廖靖
科技资讯 2024年6期

曾新励 廖靖

开放科学(资源服务)标识码(OSID):DOI:10.16661/j.cnki.1672-3791.2312-5042-5345

通信作者:曾新励(1991—),男,硕士,工程师, 研究方向为计算机应用技术。E-mail:1361116508@qq.com。

摘  要:WebGIS是互联网环境下存储、管理、分析和发布出版空间信息数据的分布式计算机应用系统。首先在分析WebGIS服务端的基础上,基于GeoServer对外发布离线瓦片与矢量图层地图服务,然后设计并构建了基于OpenLayers的WebGIS客户端,客户端调用地图服务分别加载相应URL地址返回的图层影像数据进行图层叠加,最后通过解析航空器ADSB实时位置信息数据,将航班信息通过WebSocket的方式主动推送到客户端,客户端在图层上显示实时航班动态,能直观地显示出进出机场飞行中的航班信息。此方案开发的WebGIS服务平台具有良好的可扩展性,结构层次清晰,提高了开发效率,为开源组件实现WebGIS空间应用研究提供了新的思路,可运用于智慧机场建设等领域。

关键词:GeoServer  OpenLayers  WebGIS客户端  网络地图服务

中图分类号:P208;TP311.52

随着网络技术的飞速发展,机场对地理信息系统的需求不断增加,地理信息系统(Geographic Information System, GIS)为航空信息管理提供基础数据,利用网络传输协议来存储、管理、分析和发布出版空间信息数据供用户检索和分析,为机场运营和维护决策方面提供有效的数据支撑,是智慧机场建设发展的必然趋势。WebGIS是利用Web技术和GIS技术的结合以扩展和完善地理信息系统的一项技术,基于网络的B/S架构在服务端和客户端之间通过互联网进行信息交换。目前流行的开源WebGIS软件打破了传统商业GIS软件高价格对利用和发布空间数据的限制,其开放源代码使软件平台具有更高的开放性和可扩展性,更低的开发和维护成本,用户可以根据需要灵活配置。

1 关键技术分析

1.1 OGC相关标准

OGC是英文Open Geospatial Consortium开放地理空间信息协会的简称,主要研究地理信息服务、内容、信息处理以及数据共享[1]。OGC组织各成员单位制定了开放式地理数据的互操作规范OpenGIS,依照该规范应用开发者能够在单一的环境和工作流中使用分布在网络上的任何地理数据,构建本地化的地理信息服务软件系统。OGC的规范中比较重要的和WebGIS中用的最多的服务规范有WMS(Web Map Service)、WFS(Web Feature Service)和WMTS(Web Map Tile Service)。

1.2 WMTS切片地图服务

WMTS切片地图服务主要是把地图以若干个固定比例尺寸图块的形式提供服务。切片地图即地图瓦片技术,将一定坐标范围投影后的地图,在不同分辨率层次下按照固定比例切割成若干行列的正方形图片。切割后的每张图片也叫作Tile瓦片,瓦片模型表示的地图范围相同,从瓦片模型顶层到底层,分辨率越来越高,瓦片按指定格式预先缓存在文件系统或数据库中,形成金字塔模型的静态地图缓存。WMTS规范定义了两个基础性操作接口:GetCapabilities(请求地图服务相关元数据XML文档)、GetTile(根据参数请求取得png、jpeg等格式的瓦片图块),提供了一种预定义图块的形式进行数字地图服务发布的标准化方法[2]。

1.3 GeoServer

GeoServer是标准J2EE架构的开源WebGIS服务器[3],全面遵循OGC网络地图服务和网络要素服务规范,利用GeoServer可以方便地将地理位置信息数据转换为图层影像发布地图。GeoServer支持多种数据源,支持上百种投影方式,能够将网络地图输出为png、jpg、gif、pbf等多种格式资源,并且还支持Google Maps和Google Earth,地图影像叠加后能做出生动的应用[4]。

1.4 OpenLayers

2 基于GeoServer和OpenLayers的WebGIS设计

2.1 总体结构

WebGIS地理信息服务系统涉及客户端显示、地图服务器、空间数据存储表示,在逻辑上按照层次抽象成三层结构进行开发,包括与用户交互的视图层、提供数据的中间层和空间数据存储层。视图层体现为WebGIS客户端,选用OpenLayers作为地图可视化渲染引擎作为前端用户交互平台,视图层响应用户请求,通过HTTP连接到中间层。中间层体现为WebGIS服务端,根据请求类型分别调用提供空间数据的GeoServer地图服务器和提供业务数据处理的Web服务器,GeoServer服务器将空间数据存储层中的空间信息以图层形式返回视图层,与此同时Web服务器加载带有地理信息属性的业务数据返回视图层,经OpenLayers叠加优化后渲染到Web客户端实现对空间数据的显示和用户交互。

2.2 WebGIS服务端

服务端的搭建选用开源的Tomcat服务器,将GeoServer和开发的Web项目都部署到Tomcat下。要使用GeoServer发布地图服务首先要登录其提供的Web管理界面进行配置,主要包括工作空间、数据存储、图层、图层样式和图层组,按照OGC开放地理信息标准完成空间数据的编辑和发布。一个工作空间下可以包含多个数据存储,各个数据存储有独立的字符集编码。GeoWebCache作为GeoServer中集成好的一个模块,可以用于矢量地图切图,也可用于缓存和发布预先切好或下载好的目标区域瓦片数据。将已经切好的瓦片数据存储在服务器上,当客户端请求一张新底图和瓦片时,GeoWebCache将拦截这些调用,返回预先缓存过的地图瓦片,提高地图加载速度,实现更好的用户浏览效果,同时也便于对较大数据量的地图切片缓存进行移植复用和私有化部署[7]。

2.3 电子地图数据制作

通常机场系统位于内部局域网,不具备连接外网的能力,而Google Maps需要持续连接公网才能获得实时地图数据,因此有必要建立本地离线地图服务。使用电子地图下载工具将已经切好的不同分辨率层级的目标区域瓦片数据存储在服务器上,使用GeoWebCache对外发布提供服务。

机场位于远离城市地区,离线地图不具备较高的场面覆盖精度。因此机场地图使用工程项目DWG格式的CAD设计文件经过ArcMap格式转换与矢量配图,形成Shapefile格式的点、线、面的矢量数据,配图后对效果进行检查确保经纬度无偏移。使用GeoServer发布本地文件中Shapefile格式的矢量数据,将其添加到数据存储,新建图层并对待发布图层使用uDig软件进行sld样式渲染,并导出sld样式发布到GeoServer使得地图更美观鲜明,之后即可完成电子地图的发布并对外提供WMS服务。

本文选用Google离线地图作为客户端加载的地图底图,同时将机场地图动态添加为WMS服务作为叠加层,与全球数据统一显示,以增强用户体验。

2.4 WebGIS客户端

客户端选用OpenLayers作为WebGIS地图显示引擎。OpenLayers提供了Map类作为网页中动态地图展示的一个容器,Map类提供了地图图层、缩放比例、投影信息、地图显示范围等多个属性的设置,可以向Map中添加Layer图层和Control控件。Layer类用于描述图层数据源及格式信息,Control类提供各种控件实现地图的缩放、查询、编辑等功能,Feature类用于在Layer图层中添加图形要素信息。

在国际上,每个坐标系统都会被分配一个 EPSG 代码,WGS84 的代码为EPSG:4326,由 Google提出的Web墨卡托代码为EPSG:3857,Google Maps数据基于Web墨卡托投影。OpenLayers支持多种地图数据源类型,支持常用的三维WGS84经纬度坐标数据到二维平面Web墨卡托坐标的自动投影转换[8]。

下面以OpenLayers调用GeoServer发布的WMS地图服务和Google 离线瓦片数据为例说明如何在客户端实现地图数据和航班动态数据的加载。主要用到OpenLayers的Map类、Layer类、Source类和Feature类,在浏览器请求页面时各Layers图层分别加载相应URL地址返回的图层影像数据进行叠加渲染,最底层图层实现离线瓦片数据的读取和显示,底层图层上叠加显示机场矢量地图,最上层Source图层用于表示地图上航班位置信息,在Source图层中通过添加Feature对象表示航班位置信息。

系统后台把每架航班定义为一个Flight类对象,对象中包含航班呼号、经度、纬度、高度、飞行速度、角度、始发站、目的站、24位地址码等属性,通过解析航空器ADSB实时位置信息数据,将每架航班信息封装到Flight对象中通过WebSocket的方式主动推送到客户端。OpenLayers客户端结合从后台Web服务器获取的航空器ADSB实时位置信息数据,将浏览器内存中的航班对象在页面中动态更新或创建成新的Feature类,设置好图标、经纬度和角度参数添加到Source图层,Feature对象载入地图图层上后客户端呈现出实时航班动态地图,直观地显示出进出机场飞行中的航班信息。

3 结语

本文分析了以开源的GeoServer作为地理信息数据服务的发布端,以OpenLayers作为客户端地图显示引擎,构建WebGIS应用程序开发框架的整体过程。框架实现了基本的WebGIS功能,并结合航空器ADSB数据实例,实现了航空器实时位置信息的监视功能,可以直观地了解到机场空域此刻正在执行飞行的航班动态,将难以用文字表述的信息呈现在动态地图界面,达到了良好的用户体验效果,为机场生产运营保障提供非常有价值的信息。随着开源GIS功能的不断完善,WebGIS将在地理信息展示、共享和利用上发挥更重要的作用,用户可以结合自身需求融入更多地理信息资源,实现功能更强大的WebGIS平台。

参考文献

[1] 木啸林,牛坤龙,蔡世荣,等.开源网络地理信息系统的技术体系与研究进展[J].计算机工程与应用,2022,58(15):37-51.

[2] 代林海,秦荣波.Geoserver的WMS服务分析与应用[J].测绘,2021,44(2):67-70,78.

[3] 金岩.基于GIS的数据展示平台的设计与实现[D].济南:山东大学,2016.

[4] 吴瑞龙,何华贵,张鹏程,等.基于GeoServer REST的矢量地图服务自动发布研究与应用[J].测绘地理信息,2021,46(S1):32-35.

[5] 吴国超,王豹,葛鋆添.基于GeoServer的矢量数据自动发布与在线配图方案的研究与实现[J].电子元器件与信息技术,2022,6(10):9-12.

[6] 刘旭,赵铮,陈建华,等.一种面向空间分析的开源GeoServer服务自动发布与切片方法[J].物探化探计算技术,2022,44(1):110-116.

[7] 张涛.基于切片技术的电子地图制作与发布[J].科技资讯,2018,16(17):7-8.

[8] 胡振彪,赵军,韩磊,等.矢量电子地图瓦片制作性能评估与应用[J].测绘科学,2020,45(2):138-144,165.