APP下载

开源轻量级GIS组件在气象数据可视化中的应用

2021-06-16李晓勇李红玉熊胤帆黄忠华

电子技术与软件工程 2021年4期
关键词:瓦片图层开源

李晓勇 李红玉 熊胤帆 黄忠华

(四川省泸州市气象局 四川省泸州市 646000)

气象数据是相对于具体的空间和时间而言的,具有天然地理空间属性。面对高频次、庞大的气象数据,传统的表达形式难以有效呈现出数据背后所蕴含的信息内容,对数据进行图形化分析显得尤为重要[1]。气象数据多源、多维、多尺度等特点,且其空间尺度、时间跨度呈现多样性,基于GIS 背景场的数据可视化能充分表达气象数据的空间属性。

1 开源GIS系统简介

地理信息系统(Geographic Information System,GIS)是综合处理和分析地理空间数据的一种技术系统,近年来得到了广泛关注和迅猛发展。开源GIS 基于不同的知识产权许可证,深入影响到许多行业的发展。过去四十年的发展,今天已演变出许多具有开创性和影响力的应用。其中,开源轻量级GIS 软件系统具有业务数据无缝空间化、开发接口简单、部署方便等优点,能够满足除专业级GIS应用和GIS 制图应用外的大部分应用需求,在面向服务的应用系统开发中得到广泛应用。本文针对GMap.NET、Leaflet 在气象数据可视化中的应用技术问题进行探讨。

1.1 GMap.NET

GMap.NET 是一个免费、跨平台、开源的.NET 控件,应用于Windows Forms 和WPF 环境中,通过地图厂商发布的地图数据资源实现地图展示、地理编码、路径查找等功能,并支持缓存和运行在Mobile 环境中。同时,GMap.NET 还实现了一系列底层功能,如地图Tile 的管理、坐标转换等。

1.2 Leaflet

Leaflet 是一个为建设移动设备友好的互动地图而开发的开源JavaScript 库[2]。Leaflet 整个设计简单、高效、可用性好,在几乎所有主要桌面和移动平台均能高效运行,既利用了HTML5 和CSS3 的优势,同时也支持旧的浏览器访问。拥有大多数开发者所需要的所有地图功能,它支持直接调用OpenStreetMap、Mapbox、CartoDB 等主流地图数据,进行地理信息数据的可视化操作。除了这些在线地图素材外,它对于shapefile 格式和json 格式以及sp 包的空间数据格式的地图数据都有着很好的支持,在图层函数中涵盖了点标记、线条和多边形等常用地理信息可视化图形要素。

表1:瓦片地图服务标准

2 瓦片地图源的扩展

GMap.NET、Leaflet 缺省MapProvider 支持的是国外开源(如OpenStreetMap)与成熟商业的(如Google、ArcGIS)瓦片地图服务,对国内目前主流的百度、高德、腾讯等瓦片地图源并不直接支持。但leaflet、GMap.NET 良好的开放架构为这些地图的应用提供了便利的接口。

2.1 瓦片地图服务(TMS)的基本特性

开源与成熟商业的瓦片地图服务(TMS-Tile Map Service,WMTS-Web Map Tile Service),都有共同的特性,基本成为了标准,如表1 所示。

2.2 地图源扩展的基本思路

Leaflet、GMAP.NET 采取了良好的代码结构,每个模块之间的联系也都是基于接口进行编程。地图数据源的接口也遵循了这个原则,用户可以派生新类,实现地图数据源的访问逻辑。当客户端在初始化调用MapProvider 的时候,就会根据不同地图的不同规则进行数据加载。因此扩展的基本思路是:新增实现高德、百度、腾讯等地图接口,接口中具体实现数据的加载规则。其中高德地图源接口无需变换加载规则;腾讯地图仅需要在Y 方向做编码变换;百度地图除新增地图接口外,需要重写数据投影变换规则。

2.2.1 GMAP.NET 地图源扩展示例

以C#语言扩展腾讯瓦片地图源为例,说明地图源的扩展思路:

2.2.2 Leaflet 地图源扩展示例

Leaflet 地图源扩展相对简单,分析各种瓦片地图源瓦片访问规则,确定URL 模板,使用TileLayer 添加一个瓦片图层到地图中。创建地图瓦片图层通常涉及设置瓦片图像的URL 模板,属性文本和该图层的最大缩放级别。在下面例子中,我们通过StaticAPI 调用高德瓦片地图服务资源。

3 基于轻量级GIS组件的气象数据可视化方法

随着科技的发展,气象数据作为基础的支持信息,已经和各个行业形成紧密的联系,对气象数据的可视化日益重要。气象数据可视化将主流的气象数据类型做模块化封装,提供数据和可视化的对接解决方案,使海量的气象数据以图形化的方式呈现在用户的视野之中。对于气象数据,等值线图、色斑图结合GIS 系统是数据挖掘与数据可视化的有效手段。在专业气象服务中,多以可视化平台取代传统的纸质、邮件等服务形式,用户获取的信息量大幅增加,服务效果得到明显改善。

利用GMap.NET、Leaflet 可以快速进行桌面和前端服务系统开发。基于这些轻量级GIS 组件的气象数据可视化涉及气象数据的封装,气象数据图层、辅助说明图层的叠加,数据渲染等主要问题。

3.1 气象数据的处理与封装

气象数据类型繁多,需要对数据进行再加工处理以满足本地化业务应用的实际需求。通过后台业务数据处理系统完成各类数据收集、解码,提取数据地理信息、气象要素信息等,应用数据库系统实现数据组织管理。采用面向服务(Service-Oriented Ar-chitectare,SOA) 的 架 构 设 计, 使 用JSON(JavaScriptObject Notation) 或GeoJSON 格式封装数据,使得气象数据在网络中易于传输和解析。通过Web Service 接口提供数据服务,为用户提供统一的访问接口,隔离用户对数据库的直接访问,从而屏蔽了各类数据库的结构、运行环境、网络分布以及具体的物理位置上的差异,保障了数据访问的规范和安全。

3.2 气象数据图层的构建

在开源GIS 中,业务图层一般通过GIS 的图层函数,以地图元素加以构建。地图元素包括地图标记(Marker)、多边形(Polygon)、图像(Image)等,利用这些地图元素实现气象数据随地理空间变化的表达。

开源GIS 基于接口进行编程的架构为气象数据图层叠加提供了便捷的方法,可采用如下三种实现路径:

(1)通过Polygon 接口,实现气象数据产品等值面的绘制。接口需要对产品的等值线进一步做闭合处理,形成适合于叠加显示的等值面,最终实现利用Polygon 接口绘制气象要素色斑图。气象数据预处理的基本流程是:气象数据栅格化处理->等值线追踪->等值线平滑->输出等值线信息(包括地理坐标、等值线值、色标等),形成可用于绘图的数据。用JSON 描述数据如下:

应用Polygon 进行绘图的优点在于可在桌面或前端系统中进行矢量图渲染。

(2)通过Marker 接口,定制地图Marker,在Marker 中呈现气象要素及其它相关信息。以Gmap.NET 为例,说明如下:

(3)图像图层叠加。脱离于GIS 系统,在其它平台或系统中输出需要的气象要素图,同步获取图像的地理范围(图像左上角、右下角地理坐标),并对产品图像进行去背景和透明度处理以适合图层叠加显示。在Leaflet 中其实现代码如下:

3.3 辅助图层的叠加

对于前端系统开发,Leaflet 提供了DOM 操作支持,实用程序可与Leaflet 内部使用的DOM Tree 配合使用,大多数情况返回一个HTMLElement,且同样适用于SVG 元素。唯一的区别是,类引用HTML 中的CSS 类和SVG 中的SVG 类。这给我们在地图中添加其它辅助性图层提供了便捷,丰富了系统的显示信息。以下是在Leaflet 中添加标题图层示例:

4 小结

开源、轻量级GIS 系统显著降低了系统开发的成本和难度,可广泛应用于气象行业平台和系统研发。GMap.NET、Leaflet 均以在线地图作为地图数据源,基于接口的开发应用有明显的相似性。GMap.NET 建立在.NET 环境,可广泛应用于Windows 桌面系统开发;Leaflet 作为开源的JavaScript 库,既可以用于Web 系统建设,也可以用于为建设移动设备友好的互动地图系统。气象数据天然具备的空间属性,结合这些开源、轻量级GIS 系统,可以更充分表达气象数据的空间属性,减少开发周期,应用前景广泛。

猜你喜欢

瓦片图层开源
一种基于主题时空价值的服务器端瓦片缓存算法
五毛钱能买多少头牛
巧用混合图层 制作抽象动感森林
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0
图层法在地理区域图读图中的应用
开源计算机辅助翻译工具研究
跟我学添加真实的光照效果
浅析“递层优化法”在矿井制图中的应用
基于NoSQL数据库的瓦片地图服务