基于SpringBoot框架的气象风参数查询服务平台设计与实现

2019-05-24 14:17刘樱杨明王锐
软件导刊 2019年5期
关键词:服务平台

刘樱 杨明 王锐

摘 要:为简化浙江省现有气象风参数计算与查询服务,并实现对浙江省风参数已有成果的展示与数据库资料的直接调用,设计并实现了一个基于Spring Boot框架的气象风参数查询服务平台。主要完成了对Spring Boot框架下相关功能特性的分析验证,以及平台具体框架设计,同时对浙江省气象风参数查询平台中的若干关键技术进行深入探讨与分析。该平台可为重大基建工程中的抗风设计提供有效的数据服务。

关键词:Spring Boot;气象风参数查询;服务平台

DOI:10. 11907/rjdk. 191346

中图分类号:TP319 文献标识码:A 文章编号:1672-7800(2019)005-0110-04

Abstract: In order to simplify the calculation and query service of the existing meteorological wind parameters in Zhejiang Province, and to realize the display of the existing wind parameters of Zhejiang Province and the direct call of the database data, based on the Spring Boot framework, the key technologies in the meteorological wind parameter query service platform of Zhejiang Province are researched and implemented. The analysis and verification of the functional characteristics under the Spring Boot framework and the framework design of the Zhejiang meteorological wind parameter query platform under the Spring Boot framework are also carried out. Several key technical issues in the wind parameter query platform are discussed and analyzed in depth. The Zhejiang meteorological wind parameter query service platform based on Spring Boot framework is realized, which provides effective data service for wind-resistant design in major infrastructure projects.

Key Words: Spring Boot;wind parameter query;service system

0 引言

風数据作为一项重要的气象数据,无论是在理论研究还是国民经济建设中都应用广泛[1-3],涉及领域从天气环流背景分析[4],到重大基础建设工程中抗风参数设计,如高速公路、桥梁、高层建筑、高压输电塔等[5-7],都离不开各类风资料的支持。同时,风能资源作为一种可再生的新能源也备受关注。浙江近海岛屿众多、海岸线绵延曲折,沿海、近海及海岛都有着十分丰富的风能资源,风能资源对于节能减排、保护环境起到重要作用[8-11]。此外,当风力达到一定等级后,将对人类生存与社会发展造成损害,其中常见的气象风灾害有飓风、台风、龙卷风等[12-13]。可见,风数据在基础气象研究及气象服务中有着极其重要的地位。

随着现代测风仪器观测精度的不断提高,以及浙江省近30年气象风能服务业务成果的大量累积,传统的实时历史气象风参数查询方式与手段已不能满足现代大数据量、高并发及高效查询的气象业务需求,并且随着业务需求的增加,系统更新也变得更加复杂。Spring框架是经典的MVC分层架构设计模式,技术相对成熟且开发方便、快捷[14-18]。为了提高浙江省气象风参数查询平台的查询性能,并满足其低耦合性要求,可采用Spring Boot框架重构传统数据查询方式。

鉴于此,本文以业务需求为牵引,结合多年风能与抗风设计业务应用成果及需求,基于Spring Boot框架研发了一套能充分发挥分层服务与高并发优势、为用户提供扁平化服务体验的风参数查询服务平台,从而为准确、高效地查询、计算浙江省风资源情况提供了翔实的数据基础,且操作简便,实用性强,大大提高了工作效率。

1 Spring Boot技术研究

Spring Boot是2013年由Pivotal团队提出的全新框架,其设计目的是用来简化新Spring应用初始搭建、样板化配置、快速开发调试及部署过程[19-22]。Spring Boot可用于多层架构体系的模型业务层,对于上层其可以有效地屏蔽底层数据库操作,提高低层模块与高层模块之间的内聚,降低多层模块间的耦合性,具有分层模块化架构应用业务系统的优势。

Spring Boot主要功能包括:

(1)自动配置,快速构建应用程序。Spring Boot架构具有自动配置功能,框架自动负责了大部分常规配置。通过自动配置,Spring Boot可帮助开发者快速搭建Spring框架,从而快速构建应用程序。

(2)依赖库管理。提供约定的starter POM以简化Maven配置,根据项目的maven依赖配置,Spring Boot自动配置Spring、SpringMVC等其它开源框架。

(3)内嵌Web服务器。Spring Boot框架能够直接使用Java的main方法启动内嵌的Tomcat,Jetty服务器运行Spring boot程序,不需要部署War包文件。

(4)应用监控与健康检查功能。Spring Boot对运行项目提供基于HTTP、SSH、telnet服务的监控。Spring Boot提供了actuator组件,只需在配置中加入spring-boot-starter-actuator依赖,通过继承Abstract Health Indicator抽象类,然后利用检测服务健康doHealthCheck方法,实现服务监控功能。

2 Spring Boot框架应用于风参数查询服务平台

Spring Boot框架能够简化应用服务的复杂性,以简单、快速的方式实现各个服务与部署应用,并且具有跨平台的互操作性、数据重用性等优势。利用Spring Boot框架可以有效解决快速开发部署、跨平台、网络异构与数据重用等问题。将Spring Boot框架应用在风参数查询服务平台的数据提供端,并定义了一套标准的数据调用方式和接口,为风参数查询服务平台中气象业务数据查询、风参数数据计算及统计等提供标准化的数据支撑。

Spring Boot框架对风参数查询服务平台的技术支撑主要包括以下6点:①负责数据库的查询、增加、编辑、删除、统计等操作;②负责数据库的持久化操作;③风参数据与业务数据清洗及质量控制;④系统数据流程逻辑实现;⑤为系统界面提供Restful数据服务接口支撑;⑥管理系统用户及日志数据。

3 系统总体框架设计

为了保证浙江省气象风参数查询平台的高可用性与高扩展性,平台采用层次化设计框架。平台总体框架由4部分组成:数据层、数据服务层、业务逻辑层与表现层。总体框架如图1所示。

(1)数据层:数据存储环境,主要存储风参数查询服务涉及的3类数据,包括气象业务数据[23](如气象站观测数据、历史气象数据、气象服务产品等)、风参数数据、基础地理信息数据、系统管理数据。所有数据均进行统一存儲与管理,其中地理信息数据存储采用地图切片及JSON方式,气象业务数据、风参数数据与系统管理数据主要采用MySQL数据库进行存储,系统配置文件采用JSON方式进行存储。

(2)数据服务层:通过相应业务逻辑对数据进行加工处理,形成最终业务数据,然后发布成数据服务接口。将各种类型气象数据加工处理成平台前端容易显示的JSON数据格式,实现访问MySQL数据库的接口,并实现对数据的封装及传输。接口主要采用Restful方式提供服务。

(3)业务逻辑层主要提供风切变推算、测风塔风能资源评估、年风况、各月风况统计、用户管理等操作的实现逻辑,然后请求相应数据。该层包括气象要素空间插值、气象风参数分析等主要功能,可为业务服务平台提供应用层支持。

(4)表现层主要通过HTML5页面显示常规统计(如台风统计、大风统计等)、定制服务类统计、分析显示与用户管理等5大类内容。

4 系统模块设计

4.1 常用统计模块

用于统计气象站的常规风实况结果,主要包括两种统计方式:

(1)累年风实况统计值,主要分为1971-2000年及1981-2010年两个时段(各30年)的累年观测资料。以国家基本(基准)气象站为主,建立累年历史数据统计模块,显示累年某站16象限风向玫瑰图,如图2所示。

(2)建站开始至任意时间或指定时间段内单站观测时间统计。主要采用HTML结合HightChart图表的方式实现。

4.2 台风统计模块

通过对台风的统计可输出各月台风影响统计表(1949年起,统计时间可选择),包括5~12月影响台风(指对选定区域产生影响的台风)的次数及频率,以及登陆台风(指在选定区域内登陆的台风)的次数及频率,绘制多年影响台风及登陆台风数量图。根据台风编号搜索台风数据表,查询与导出相关台风文字描述信息,包括登陆时间、影响范围、造成灾害等,并显示某台风期间(选择日期)全省自动站点最大风速与极大风速分布特征图。该模块主要采用HTML结合HightChart图表导出功能实现。

4.3 大风模块分析

50年一遇及百年一遇气象站最大风速计算选用耿贝尔极值分布法,计算气象站50年或百年一遇最大风速值,并显示最大风速拟合图像,如图3如示。

通过输入经纬度,选定需要计算最大风速的区域范围,将输出指定区域气象站点10m高度50年一遇最大风速分布,也可显示该区域实测气象站点最大风速与极大风速值分布图。

4.4 定制服务类统计模块分析

依据需求与测风数据在平台上输入风参数,选择任意时段,可显示观测期间测风点的微观风况,主要内容包括:①测风塔观测期间年风况及月风况统计;②风切变推算;③测风塔风能资源评估模块相关内容添加。通过访问解析数据服务接口,对定制服务进行统计分析,并返回统计结果。

5 应用实现

5.1 数据访问模块实现

数据访问模块主要采用Spring Boot整合mybatis的方式加以实现。主要实现步骤如下:①在Pom.xml加载MySQL和Spring Boot相关依赖库;②配置整合mybatis的配置文件、mybatis扫描别名基本包与数据源等信息。mybatis数据库配置文件如下:

application.properties

spring.datasource.url=jdbc:mysql://数据库IP:3306/数据名称?useUnicode=true&characterEncoding=utf8& useSSL=false

spring.datasource.username=用户名

spring.datasource.password=密码

mybatis.config-location=classpath:mybatis-config.xml

mybatis-config.xml主要配置如下:

mybatis-config.xml

<!—启动全局所有映射器配置缓存-->

<!--设置超时时间-->

<!--开启自动驼峰命名规则映射-->

<!-- 支持自动生成主键 -->

在数据访问层DAO接口类上方增加@Mapper注解标注,定义一个MyBatis的DAO接口类,因为MyBatis会扫描由@Mapper注解标注的类,并对里面的@INSERT、@SELECT等注解进行解析,实现代理类。

5.2 数据服务接口实现

平台数据服务层提供的数据服务接口返回格式是 application/json,其提供了两种实现方式:类注解和方法注解。类注解采用@RestController,方法注解采用 @ResponseBody,请示方式采用@RequestMapping支持任意请求方式。查询统计数据时采用GET方式@GetMapping请求数据,以及POST方式@PostMapping提交数据,并采用DELETE方式@DeleteMapping删除数据,以及PUT方式@PutMapping修改数据,同时采用@RequestParam和@PathVariable提供参数据。

数据服务接口例子JAVA

@RestController

@RequestMapping(“/api”)

public class WindParamsController {

@Autowired

private WindParamsService windParamsService;

@GetMapping(“/getWindParamsByRegion”)

public ReturnObj getWindParamsByRegion (@RequestParam ( name=“regonid”) Integer regionid ) {

return windParamsService.getWindParamsByRegion ( regionid);

}

@PostMapping(“/setWindParams”)

public ReturnObj setWindParams(@RequestBody List (WindParam) windParamList) {

return windParamsService.setWindParams (windParamList);

}

//其它接口

}

5.3 前端表现

平台前端采用HTML5、CSS、Javascript和Highchart进行实现,提供了常规统计、台风统计、大风统计、定制服务统计与用户管理5个模块。

前端采用MVC三层设计模式,分为数据层、业务逻辑层和表示层。数据层主要与Spring Boot数据服務层进行交互,平台所有数据由该层提供,可进行数据解析、重组与封装等操作,是前端的基础;业务逻辑层主要根据表示层提交的业务操作,与数据层进行交互;表示层为用户提供直观、快捷的图表、文字等操作功能,用户管理为用户提供角色、权限等基础安全管理服务,不同用户可以访问不同菜单。

将基于Spring Boot框架的风参数查询服务平台应用于气象业务中,具有高效的数据查询性能,以及高扩展性与友好的前端界面,因此有着较高的应用价值。

6 结语

本文介绍了Spring Boot框架的概念与特征,以及基于Spring Boot框架的浙江省气象风参数查询服务平台各功能模块设计,最后介绍了具体实现方法。可见,在实际业务中,Spring Boot框架的应用为气象业务系统提供了一种新的建设思路与手段,提高了现代气象业务的服务能力。

参考文献:

[1] 吴广. 山区复杂地形下高墩多跨连续铁路钢桁梁桥的风场特性研究[J]. 铁道科学与工程学报,2019,16(1):129-136.

[2] 王小松,赵林,葛耀君,等. 台风对大跨度钢桁拱桥抗风性能的影响[J]. 同济大学学报:自然科学版,2009,37(1):13-25.

[3] 童欢欢,赵旭辉,耿天召,等. 风场对江淮地区颗粒物的影响分析[J]. 合肥工业大学学报:自然科学版,2019,42(2):252-260.

[4] 姚慧茹,李栋梁. 青藏高原风季大风集中期、集中度及环流特征[J]. 中国沙漠,2019(2):1-12.

[5] 庞加斌,宋锦忠,林志兴. 山区峡谷桥梁抗风设计风速的确定方法[J]. 中国公路学报,2008,21(5):39-44.

[6] 何敏娟,李旭. 高耸结构基于性能的抗风设计[J]. 振动与冲击,2013,32(3):87-105.

[7] 張建胜,武岳,吴迪. 结构抗风设计敏感性分析[J]. 振动工程学报,2011,24(6):682-688.

[8] 李德友. 高山峡谷地区风能资源利用探讨[J]. 高原山地气象研究,2010,30(4):72-75.

[9] 张华,张学礼. 中国东部海域风能资源分析[J]. 水利学报,2013,44(9):1118-1123.

[10] 姜波,刘富铀,徐辉奋, 等. 浙江省沿海海洋风能资源评估[J]. 海洋技术, 2012, 31(4):91-94.

[11] 杨忠恩,李正泉,等. 浙江省风能资源[M]. 北京:气象出版社,2012.

[12] 陈燕,张宁. 江苏沿海近地层风阵性及台风对其影响[J]. 应用气象学报,2019,30(2):177-190.

[13] 高榕. 中国龙卷风特性统计分析及灾后建构筑物调查研究[D]. 北京:北京交通大学,2018.

[14] 李晓静,魏振钢. 基于Spring与Hibernate的Web应用开发研究[J]. 软件导刊,2017(5):73-75.

[15] 陈琳. 基于Spring架构的德育量化考核系统设计与实现[J]. 软件导刊,2015(7):126-128.

[16] 周巧婷,王晓玲. 基于S2SH架构的教学质量评价系统设计与实现[J]. 软件导刊,2017(7):109-113.

[17] 杨丰瑞,杜奎,姜赖赢. 基于ESSH框架的高校科研团队信息管理系统设计与实现[J]. 软件导刊,2017,16(4):94-96.

[18] 杨阳. 基于SSH框架的个性化博客系统设计与实现[J]. 软件导刊,2016,15(12):74-77.

[19] PHILLIP W,DAVE S,JOSH L,et al. Spring boot reference guide 2.1.4 release[EB/OL]. https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle,2018.

[20] 吕宇琛. Spring Boot框架在web应用开发中的探讨[J]. 科技创新导报,2018(8):168-173.

[21] 程岚岚,田文涛,汪剑. 基于Spring Boot的网页健康性评级系统的设计与实现[J]. 电脑与信息技术,2018,26(2):45-47.

[22] 舒德伟,许后磊,陈亚军,等. 基于Spring Boot微服务架构的河长制信息管理系统设计与实现[J]. 数字技术与应用,2018(2):154-156.

[23] 杨明,陈晔峰,陈晴,等. 气象数据云数据存储技术及应用[J]. 气象科技,2017(6):65-69.

(责任编辑:黄 健)

猜你喜欢
服务平台
密码服务平台
打造一体化汽车服务平台
江苏省一体化在线交通运输政务服务平台构建
论基于云的电子政务服务平台构建
基于云计算的民航公共信息服务平台
湖北交通运输网上审批服务平台建设与应用