劉櫻 楊明 王銳
摘 要:為簡化浙江省現(xiàn)有氣象風參數(shù)計算與查詢服務,并實現(xiàn)對浙江省風參數(shù)已有成果的展示與數(shù)據(jù)庫資料的直接調(diào)用,設計并實現(xiàn)了一個基于Spring Boot框架的氣象風參數(shù)查詢服務平臺。主要完成了對Spring Boot框架下相關(guān)功能特性的分析驗證,以及平臺具體框架設計,同時對浙江省氣象風參數(shù)查詢平臺中的若干關(guān)鍵技術(shù)進行深入探討與分析。該平臺可為重大基建工程中的抗風設計提供有效的數(shù)據(jù)服務。
關(guān)鍵詞:Spring Boot;氣象風參數(shù)查詢;服務平臺
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 引言
風數(shù)據(jù)作為一項重要的氣象數(shù)據(jù),無論是在理論研究還是國民經(jīng)濟建設中都應用廣泛[1-3],涉及領域從天氣環(huán)流背景分析[4],到重大基礎建設工程中抗風參數(shù)設計,如高速公路、橋梁、高層建筑、高壓輸電塔等[5-7],都離不開各類風資料的支持。同時,風能資源作為一種可再生的新能源也備受關(guān)注。浙江近海島嶼眾多、海岸線綿延曲折,沿海、近海及海島都有著十分豐富的風能資源,風能資源對于節(jié)能減排、保護環(huán)境起到重要作用[8-11]。此外,當風力達到一定等級后,將對人類生存與社會發(fā)展造成損害,其中常見的氣象風災害有颶風、臺風、龍卷風等[12-13]??梢?,風數(shù)據(jù)在基礎氣象研究及氣象服務中有著極其重要的地位。
隨著現(xiàn)代測風儀器觀測精度的不斷提高,以及浙江省近30年氣象風能服務業(yè)務成果的大量累積,傳統(tǒng)的實時歷史氣象風參數(shù)查詢方式與手段已不能滿足現(xiàn)代大數(shù)據(jù)量、高并發(fā)及高效查詢的氣象業(yè)務需求,并且隨著業(yè)務需求的增加,系統(tǒng)更新也變得更加復雜。Spring框架是經(jīng)典的MVC分層架構(gòu)設計模式,技術(shù)相對成熟且開發(fā)方便、快捷[14-18]。為了提高浙江省氣象風參數(shù)查詢平臺的查詢性能,并滿足其低耦合性要求,可采用Spring Boot框架重構(gòu)傳統(tǒng)數(shù)據(jù)查詢方式。
鑒于此,本文以業(yè)務需求為牽引,結(jié)合多年風能與抗風設計業(yè)務應用成果及需求,基于Spring Boot框架研發(fā)了一套能充分發(fā)揮分層服務與高并發(fā)優(yōu)勢、為用戶提供扁平化服務體驗的風參數(shù)查詢服務平臺,從而為準確、高效地查詢、計算浙江省風資源情況提供了翔實的數(shù)據(jù)基礎,且操作簡便,實用性強,大大提高了工作效率。
1 Spring Boot技術(shù)研究
Spring Boot是2013年由Pivotal團隊提出的全新框架,其設計目的是用來簡化新Spring應用初始搭建、樣板化配置、快速開發(fā)調(diào)試及部署過程[19-22]。Spring Boot可用于多層架構(gòu)體系的模型業(yè)務層,對于上層其可以有效地屏蔽底層數(shù)據(jù)庫操作,提高低層模塊與高層模塊之間的內(nèi)聚,降低多層模塊間的耦合性,具有分層模塊化架構(gòu)應用業(yè)務系統(tǒng)的優(yōu)勢。
Spring Boot主要功能包括:
(1)自動配置,快速構(gòu)建應用程序。Spring Boot架構(gòu)具有自動配置功能,框架自動負責了大部分常規(guī)配置。通過自動配置,Spring Boot可幫助開發(fā)者快速搭建Spring框架,從而快速構(gòu)建應用程序。
(2)依賴庫管理。提供約定的starter POM以簡化Maven配置,根據(jù)項目的maven依賴配置,Spring Boot自動配置Spring、SpringMVC等其它開源框架。
(3)內(nèi)嵌Web服務器。Spring Boot框架能夠直接使用Java的main方法啟動內(nèi)嵌的Tomcat,Jetty服務器運行Spring boot程序,不需要部署War包文件。
(4)應用監(jiān)控與健康檢查功能。Spring Boot對運行項目提供基于HTTP、SSH、telnet服務的監(jiān)控。Spring Boot提供了actuator組件,只需在配置中加入spring-boot-starter-actuator依賴,通過繼承Abstract Health Indicator抽象類,然后利用檢測服務健康doHealthCheck方法,實現(xiàn)服務監(jiān)控功能。
2 Spring Boot框架應用于風參數(shù)查詢服務平臺
Spring Boot框架能夠簡化應用服務的復雜性,以簡單、快速的方式實現(xiàn)各個服務與部署應用,并且具有跨平臺的互操作性、數(shù)據(jù)重用性等優(yōu)勢。利用Spring Boot框架可以有效解決快速開發(fā)部署、跨平臺、網(wǎng)絡異構(gòu)與數(shù)據(jù)重用等問題。將Spring Boot框架應用在風參數(shù)查詢服務平臺的數(shù)據(jù)提供端,并定義了一套標準的數(shù)據(jù)調(diào)用方式和接口,為風參數(shù)查詢服務平臺中氣象業(yè)務數(shù)據(jù)查詢、風參數(shù)數(shù)據(jù)計算及統(tǒng)計等提供標準化的數(shù)據(jù)支撐。
Spring Boot框架對風參數(shù)查詢服務平臺的技術(shù)支撐主要包括以下6點:①負責數(shù)據(jù)庫的查詢、增加、編輯、刪除、統(tǒng)計等操作;②負責數(shù)據(jù)庫的持久化操作;③風參數(shù)據(jù)與業(yè)務數(shù)據(jù)清洗及質(zhì)量控制;④系統(tǒng)數(shù)據(jù)流程邏輯實現(xiàn);⑤為系統(tǒng)界面提供Restful數(shù)據(jù)服務接口支撐;⑥管理系統(tǒng)用戶及日志數(shù)據(jù)。
3 系統(tǒng)總體框架設計
為了保證浙江省氣象風參數(shù)查詢平臺的高可用性與高擴展性,平臺采用層次化設計框架。平臺總體框架由4部分組成:數(shù)據(jù)層、數(shù)據(jù)服務層、業(yè)務邏輯層與表現(xiàn)層。總體框架如圖1所示。
(1)數(shù)據(jù)層:數(shù)據(jù)存儲環(huán)境,主要存儲風參數(shù)查詢服務涉及的3類數(shù)據(jù),包括氣象業(yè)務數(shù)據(jù)[23](如氣象站觀測數(shù)據(jù)、歷史氣象數(shù)據(jù)、氣象服務產(chǎn)品等)、風參數(shù)數(shù)據(jù)、基礎地理信息數(shù)據(jù)、系統(tǒng)管理數(shù)據(jù)。所有數(shù)據(jù)均進行統(tǒng)一存儲與管理,其中地理信息數(shù)據(jù)存儲采用地圖切片及JSON方式,氣象業(yè)務數(shù)據(jù)、風參數(shù)數(shù)據(jù)與系統(tǒng)管理數(shù)據(jù)主要采用MySQL數(shù)據(jù)庫進行存儲,系統(tǒng)配置文件采用JSON方式進行存儲。
(2)數(shù)據(jù)服務層:通過相應業(yè)務邏輯對數(shù)據(jù)進行加工處理,形成最終業(yè)務數(shù)據(jù),然后發(fā)布成數(shù)據(jù)服務接口。將各種類型氣象數(shù)據(jù)加工處理成平臺前端容易顯示的JSON數(shù)據(jù)格式,實現(xiàn)訪問MySQL數(shù)據(jù)庫的接口,并實現(xiàn)對數(shù)據(jù)的封裝及傳輸。接口主要采用Restful方式提供服務。
(3)業(yè)務邏輯層主要提供風切變推算、測風塔風能資源評估、年風況、各月風況統(tǒng)計、用戶管理等操作的實現(xiàn)邏輯,然后請求相應數(shù)據(jù)。該層包括氣象要素空間插值、氣象風參數(shù)分析等主要功能,可為業(yè)務服務平臺提供應用層支持。
(4)表現(xiàn)層主要通過HTML5頁面顯示常規(guī)統(tǒng)計(如臺風統(tǒng)計、大風統(tǒng)計等)、定制服務類統(tǒng)計、分析顯示與用戶管理等5大類內(nèi)容。
4 系統(tǒng)模塊設計
4.1 常用統(tǒng)計模塊
用于統(tǒng)計氣象站的常規(guī)風實況結(jié)果,主要包括兩種統(tǒng)計方式:
(1)累年風實況統(tǒng)計值,主要分為1971-2000年及1981-2010年兩個時段(各30年)的累年觀測資料。以國家基本(基準)氣象站為主,建立累年歷史數(shù)據(jù)統(tǒng)計模塊,顯示累年某站16象限風向玫瑰圖,如圖2所示。
(2)建站開始至任意時間或指定時間段內(nèi)單站觀測時間統(tǒng)計。主要采用HTML結(jié)合HightChart圖表的方式實現(xiàn)。
4.2 臺風統(tǒng)計模塊
通過對臺風的統(tǒng)計可輸出各月臺風影響統(tǒng)計表(1949年起,統(tǒng)計時間可選擇),包括5~12月影響臺風(指對選定區(qū)域產(chǎn)生影響的臺風)的次數(shù)及頻率,以及登陸臺風(指在選定區(qū)域內(nèi)登陸的臺風)的次數(shù)及頻率,繪制多年影響臺風及登陸臺風數(shù)量圖。根據(jù)臺風編號搜索臺風數(shù)據(jù)表,查詢與導出相關(guān)臺風文字描述信息,包括登陸時間、影響范圍、造成災害等,并顯示某臺風期間(選擇日期)全省自動站點最大風速與極大風速分布特征圖。該模塊主要采用HTML結(jié)合HightChart圖表導出功能實現(xiàn)。
4.3 大風模塊分析
50年一遇及百年一遇氣象站最大風速計算選用耿貝爾極值分布法,計算氣象站50年或百年一遇最大風速值,并顯示最大風速擬合圖像,如圖3如示。
通過輸入經(jīng)緯度,選定需要計算最大風速的區(qū)域范圍,將輸出指定區(qū)域氣象站點10m高度50年一遇最大風速分布,也可顯示該區(qū)域?qū)崪y氣象站點最大風速與極大風速值分布圖。
4.4 定制服務類統(tǒng)計模塊分析
依據(jù)需求與測風數(shù)據(jù)在平臺上輸入風參數(shù),選擇任意時段,可顯示觀測期間測風點的微觀風況,主要內(nèi)容包括:①測風塔觀測期間年風況及月風況統(tǒng)計;②風切變推算;③測風塔風能資源評估模塊相關(guān)內(nèi)容添加。通過訪問解析數(shù)據(jù)服務接口,對定制服務進行統(tǒng)計分析,并返回統(tǒng)計結(jié)果。
5 應用實現(xiàn)
5.1 數(shù)據(jù)訪問模塊實現(xiàn)
數(shù)據(jù)訪問模塊主要采用Spring Boot整合mybatis的方式加以實現(xiàn)。主要實現(xiàn)步驟如下:①在Pom.xml加載MySQL和Spring Boot相關(guān)依賴庫;②配置整合mybatis的配置文件、mybatis掃描別名基本包與數(shù)據(jù)源等信息。mybatis數(shù)據(jù)庫配置文件如下:
application.properties
spring.datasource.url=jdbc:mysql://數(shù)據(jù)庫IP:3306/數(shù)據(jù)名稱?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
<!—啟動全局所有映射器配置緩存-->
<!--設置超時時間-->
<!--開啟自動駝峰命名規(guī)則映射-->
<!-- 支持自動生成主鍵 -->
在數(shù)據(jù)訪問層DAO接口類上方增加@Mapper注解標注,定義一個MyBatis的DAO接口類,因為MyBatis會掃描由@Mapper注解標注的類,并對里面的@INSERT、@SELECT等注解進行解析,實現(xiàn)代理類。
5.2 數(shù)據(jù)服務接口實現(xiàn)
平臺數(shù)據(jù)服務層提供的數(shù)據(jù)服務接口返回格式是 application/json,其提供了兩種實現(xiàn)方式:類注解和方法注解。類注解采用@RestController,方法注解采用 @ResponseBody,請示方式采用@RequestMapping支持任意請求方式。查詢統(tǒng)計數(shù)據(jù)時采用GET方式@GetMapping請求數(shù)據(jù),以及POST方式@PostMapping提交數(shù)據(jù),并采用DELETE方式@DeleteMapping刪除數(shù)據(jù),以及PUT方式@PutMapping修改數(shù)據(jù),同時采用@RequestParam和@PathVariable提供參數(shù)據(jù)。
數(shù)據(jù)服務接口例子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 前端表現(xiàn)
平臺前端采用HTML5、CSS、Javascript和Highchart進行實現(xiàn),提供了常規(guī)統(tǒng)計、臺風統(tǒng)計、大風統(tǒng)計、定制服務統(tǒng)計與用戶管理5個模塊。
前端采用MVC三層設計模式,分為數(shù)據(jù)層、業(yè)務邏輯層和表示層。數(shù)據(jù)層主要與Spring Boot數(shù)據(jù)服務層進行交互,平臺所有數(shù)據(jù)由該層提供,可進行數(shù)據(jù)解析、重組與封裝等操作,是前端的基礎;業(yè)務邏輯層主要根據(jù)表示層提交的業(yè)務操作,與數(shù)據(jù)層進行交互;表示層為用戶提供直觀、快捷的圖表、文字等操作功能,用戶管理為用戶提供角色、權(quán)限等基礎安全管理服務,不同用戶可以訪問不同菜單。
將基于Spring Boot框架的風參數(shù)查詢服務平臺應用于氣象業(yè)務中,具有高效的數(shù)據(jù)查詢性能,以及高擴展性與友好的前端界面,因此有著較高的應用價值。
6 結(jié)語
本文介紹了Spring Boot框架的概念與特征,以及基于Spring Boot框架的浙江省氣象風參數(shù)查詢服務平臺各功能模塊設計,最后介紹了具體實現(xiàn)方法。可見,在實際業(yè)務中,Spring Boot框架的應用為氣象業(yè)務系統(tǒng)提供了一種新的建設思路與手段,提高了現(xiàn)代氣象業(yè)務的服務能力。
參考文獻:
[1] 吳廣. 山區(qū)復雜地形下高墩多跨連續(xù)鐵路鋼桁梁橋的風場特性研究[J]. 鐵道科學與工程學報,2019,16(1):129-136.
[2] 王小松,趙林,葛耀君,等. 臺風對大跨度鋼桁拱橋抗風性能的影響[J]. 同濟大學學報:自然科學版,2009,37(1):13-25.
[3] 童歡歡,趙旭輝,耿天召,等. 風場對江淮地區(qū)顆粒物的影響分析[J]. 合肥工業(yè)大學學報:自然科學版,2019,42(2):252-260.
[4] 姚慧茹,李棟梁. 青藏高原風季大風集中期、集中度及環(huán)流特征[J]. 中國沙漠,2019(2):1-12.
[5] 龐加斌,宋錦忠,林志興. 山區(qū)峽谷橋梁抗風設計風速的確定方法[J]. 中國公路學報,2008,21(5):39-44.
[6] 何敏娟,李旭. 高聳結(jié)構(gòu)基于性能的抗風設計[J]. 振動與沖擊,2013,32(3):87-105.
[7] 張建勝,武岳,吳迪. 結(jié)構(gòu)抗風設計敏感性分析[J]. 振動工程學報,2011,24(6):682-688.
[8] 李德友. 高山峽谷地區(qū)風能資源利用探討[J]. 高原山地氣象研究,2010,30(4):72-75.
[9] 張華,張學禮. 中國東部海域風能資源分析[J]. 水利學報,2013,44(9):1118-1123.
[10] 姜波,劉富鈾,徐輝奮, 等. 浙江省沿海海洋風能資源評估[J]. 海洋技術(shù), 2012, 31(4):91-94.
[11] 楊忠恩,李正泉,等. 浙江省風能資源[M]. 北京:氣象出版社,2012.
[12] 陳燕,張寧. 江蘇沿海近地層風陣性及臺風對其影響[J]. 應用氣象學報,2019,30(2):177-190.
[13] 高榕. 中國龍卷風特性統(tǒng)計分析及災后建構(gòu)筑物調(diào)查研究[D]. 北京:北京交通大學,2018.
[14] 李曉靜,魏振鋼. 基于Spring與Hibernate的Web應用開發(fā)研究[J]. 軟件導刊,2017(5):73-75.
[15] 陳琳. 基于Spring架構(gòu)的德育量化考核系統(tǒng)設計與實現(xiàn)[J]. 軟件導刊,2015(7):126-128.
[16] 周巧婷,王曉玲. 基于S2SH架構(gòu)的教學質(zhì)量評價系統(tǒng)設計與實現(xiàn)[J]. 軟件導刊,2017(7):109-113.
[17] 楊豐瑞,杜奎,姜賴贏. 基于ESSH框架的高??蒲袌F隊信息管理系統(tǒng)設計與實現(xiàn)[J]. 軟件導刊,2017,16(4):94-96.
[18] 楊陽. 基于SSH框架的個性化博客系統(tǒng)設計與實現(xiàn)[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應用開發(fā)中的探討[J]. 科技創(chuàng)新導報,2018(8):168-173.
[21] 程嵐嵐,田文濤,汪劍. 基于Spring Boot的網(wǎng)頁健康性評級系統(tǒng)的設計與實現(xiàn)[J]. 電腦與信息技術(shù),2018,26(2):45-47.
[22] 舒德偉,許后磊,陳亞軍,等. 基于Spring Boot微服務架構(gòu)的河長制信息管理系統(tǒng)設計與實現(xiàn)[J]. 數(shù)字技術(shù)與應用,2018(2):154-156.
[23] 楊明,陳曄峰,陳晴,等. 氣象數(shù)據(jù)云數(shù)據(jù)存儲技術(shù)及應用[J]. 氣象科技,2017(6):65-69.
(責任編輯:黃 健)