王瑞兵, 曹 鑫,賀光秀,姚 堯,李 媫,周李磊
(1.重慶交通大學(xué) 土木工程學(xué)院,重慶400074;2.重慶交通大學(xué) 建筑與城市規(guī)劃學(xué)院,重慶 400074)
人類賴以生存的生態(tài)環(huán)境是一個不斷變化和繼承的系統(tǒng),而變化或進化,既有積極的(進化),也有消極的(退化)[1];變化或進化的原因既有自然過程的影響,也有人類活動的影響和干擾[2]。通過構(gòu)建指標(biāo),帶入模型進行生態(tài)健康評價從而為生態(tài)健康維護提供輔助決策。
預(yù)警可視化平臺指通過基礎(chǔ)數(shù)據(jù),運用一定模型對未來發(fā)展趨勢及演化做出評估,并最終以可視化形式在WebGIS平臺呈現(xiàn)。預(yù)警平臺國內(nèi)多以生態(tài)安全預(yù)警為主,其他風(fēng)險預(yù)警為輔進行預(yù)警,如王妍婕等對監(jiān)測平臺進行研發(fā),平臺由基礎(chǔ)設(shè)施支撐系統(tǒng)、實時監(jiān)控監(jiān)測站點、綜合數(shù)據(jù)庫、預(yù)警分析管理平臺多個部分組成。實現(xiàn)鄱陽湖濕地生態(tài)環(huán)境數(shù)據(jù)時空信息的集成、共享和高效利用[3]。在數(shù)據(jù)可視化中,國內(nèi)外大多以單一的JavaScript開發(fā)包作為數(shù)據(jù)的顯示,如王占越從不同尺度上評估和展示全國林業(yè)生態(tài)安全狀況,基于Cesium三維球體開源軟件研發(fā)了林業(yè)生態(tài)安全指數(shù)可視化展示系統(tǒng)[4]。
當(dāng)前國內(nèi)研究中,生態(tài)安全可視化平臺的研發(fā)已經(jīng)成熟,但是針對生態(tài)健康預(yù)警評估以及可視化的研究比較少,本次可視化平臺構(gòu)建遵循信息化開發(fā)規(guī)范、規(guī)程,進行系統(tǒng)平臺服務(wù)接口、功能模塊及系統(tǒng)安全策略集成框架設(shè)計,以生態(tài)風(fēng)險精準(zhǔn)感知數(shù)據(jù)庫為基礎(chǔ),研發(fā)以自然干擾、人為干擾監(jiān)測模型、生態(tài)系統(tǒng)狀況評估模型、生態(tài)風(fēng)險預(yù)警模型等為技術(shù)手段,以生態(tài)風(fēng)險信息識別和生態(tài)風(fēng)險智能預(yù)警為核心內(nèi)容,建設(shè)長江經(jīng)濟帶生態(tài)系統(tǒng)健康智能預(yù)警平臺,并進行業(yè)務(wù)化運行應(yīng)用示范。
重慶市復(fù)雜環(huán)境生態(tài)風(fēng)險預(yù)警平臺依托精準(zhǔn)感知數(shù)據(jù)庫,對數(shù)據(jù)進行收集、整理并轉(zhuǎn)換和存儲歷史數(shù)據(jù)和調(diào)查數(shù)據(jù);預(yù)警平臺使用正態(tài)云模型將背景數(shù)據(jù)和預(yù)測數(shù)據(jù)進行處理完成生態(tài)安全預(yù)警和成果發(fā)布。
開發(fā)模式采用C/S和B/S混合開發(fā),Web端主要進行前端的展示與數(shù)據(jù)的整合,B/S開發(fā)主要用來對地圖服務(wù)的發(fā)布和維護、瓦片地圖的整合進行開發(fā)。
構(gòu)建長江經(jīng)濟帶生態(tài)系統(tǒng)健康可視化平臺,并通過阿里云短信服務(wù)實現(xiàn)預(yù)警。通過服務(wù)器環(huán)境配置,搭載平臺運行所需要的開發(fā)包,結(jié)合模型所做的結(jié)果,將健康情況以專題圖的形式發(fā)布成WebGIS服務(wù),通過OpenLayers進行地圖服務(wù)解析以達到地圖數(shù)據(jù)的展示;通過ECharts開發(fā)包,使用AJAX技術(shù)將統(tǒng)計數(shù)據(jù)在前端以交互的方式進行展示;前端使用Flex布局,將功能集成在Tomcat發(fā)布的Web服務(wù)中,實現(xiàn)多端適配以及大屏展示;預(yù)警方面,通過申請阿里云API,調(diào)用短信接口,設(shè)定提醒參數(shù),實現(xiàn)短信云預(yù)警(圖1)。
圖1 系統(tǒng)總體構(gòu)架
(1)服務(wù)器。云平臺監(jiān)控初始服務(wù)器可以先裝配在私人電腦端,到后期視情況會投放到阿里云、騰訊云、碼云等云平臺實現(xiàn)云監(jiān)控。
(2)數(shù)據(jù)更新。通過網(wǎng)絡(luò)爬蟲技術(shù),與相關(guān)網(wǎng)站合作,獲取網(wǎng)站實時獲取構(gòu)建的指標(biāo)體系中的數(shù)據(jù),做到數(shù)據(jù)能夠?qū)崟r更新。
(3)交互型數(shù)據(jù)顯示。地理數(shù)據(jù)顯示:通過百度地圖、谷歌地圖或高德地圖提供的API接口,從優(yōu)選擇,對地理數(shù)據(jù)進行展示和交互。統(tǒng)計數(shù)據(jù)顯示:通過ECharts、Highcharts或Python的Pyecharts包進行數(shù)據(jù)的交互型展示(圖2)。
(1)即開即用。當(dāng)系統(tǒng)搭載到云平臺,只需一個URL即可訪問云平臺,從而實現(xiàn)多設(shè)備、無縫訪問。
(2)靈活預(yù)警。通過搭載云平臺所提供的接口,可以實現(xiàn)短信、郵件的方式推送,也可以推送到指定的WebHook、消息隊列、函數(shù)計算、日志服務(wù)中,方便將報警信息集成到運維系統(tǒng)中(阿里云平臺)[5]。
首先設(shè)計長江經(jīng)濟帶生態(tài)系統(tǒng)健康智能預(yù)警集成框架,對應(yīng)用層、服務(wù)層、數(shù)據(jù)層和支撐層進行設(shè)計,然后進行整個平臺的研發(fā)[6],具體步驟如下。
步驟一:設(shè)計支撐層和數(shù)據(jù)層。根據(jù)平臺開發(fā)需求,選擇好支撐層的軟件和硬件,設(shè)計好開發(fā)流程,對底層環(huán)境和結(jié)構(gòu)進行學(xué)習(xí)并依據(jù)平臺需求進行支撐層和數(shù)據(jù)層的設(shè)計,對整個指標(biāo)體系的數(shù)據(jù)設(shè)置合適的字段和數(shù)據(jù)格式,設(shè)計地理數(shù)據(jù)發(fā)布規(guī)范。
步驟二:設(shè)計服務(wù)層和應(yīng)用層。根據(jù)平臺的功能需求和可擴展性,充分考慮到預(yù)警和可視化之間的協(xié)調(diào),設(shè)計好服務(wù)層和應(yīng)用層。
步驟三:平臺開發(fā)。多調(diào)試WebGIS相關(guān)項目源代碼,不斷學(xué)習(xí)各種可視化技術(shù),以達到預(yù)期目標(biāo)。
圖2 前端平臺搭建
系統(tǒng)具備大屏展示、響應(yīng)式布局、海量空間數(shù)據(jù)高效管理等特性,為生態(tài)健康監(jiān)測提供狀態(tài)展示、歷史統(tǒng)計、趨勢預(yù)測、等級占比、指標(biāo)權(quán)重等一系列數(shù)據(jù)展示來輔助決策;同時提供正態(tài)云模型的隸屬度計算,為生態(tài)健康評估提供模型支撐。
數(shù)據(jù)層:為展示平臺搭建基礎(chǔ)數(shù)據(jù)庫,主要提供地圖服務(wù)數(shù)據(jù)與統(tǒng)計數(shù)據(jù),地理數(shù)據(jù)主要包括矢量數(shù)據(jù)和柵格數(shù)據(jù),用于共享的數(shù)據(jù)采用GeoServer進行發(fā)布,其他地圖服務(wù)通過ArcGISServer進行封裝[7];統(tǒng)計數(shù)據(jù)主要分為三個層面:自然數(shù)據(jù)、經(jīng)濟數(shù)據(jù)、社會數(shù)據(jù),通過MySQL建立個人數(shù)據(jù)庫進行存儲[8-9],專題數(shù)據(jù)以文件方式存儲。
平臺層:主要提供生態(tài)健康評價結(jié)果、各種指標(biāo)統(tǒng)計結(jié)果,并將結(jié)果以AJAX技術(shù)異步傳輸?shù)角岸?;同時,該平臺提供指標(biāo)數(shù)據(jù)趨勢預(yù)測與更新機制,通過Python提供的網(wǎng)絡(luò)服務(wù)包對網(wǎng)頁部分?jǐn)?shù)據(jù)進行替換,以實現(xiàn)數(shù)據(jù)庫的實時更新,提高數(shù)據(jù)的現(xiàn)勢性。
服務(wù)層:是整個系統(tǒng)的連接層,主要負(fù)責(zé)數(shù)據(jù)的傳輸,作為持久層,為前端提供數(shù)據(jù)交互,同時整合后端數(shù)據(jù),實現(xiàn)數(shù)據(jù)的聯(lián)通和轉(zhuǎn)化。
應(yīng)用層:對網(wǎng)頁提供功能進行模塊化整合,實現(xiàn)操作簡易化和流程化,為生態(tài)安全決策輔助依據(jù)(表1)。
表1 后臺搭建所需軟件工具
4.2.1 服務(wù)器配置
4.2.1.1 Tomcat
Tomcat是Apache 軟件基金會中的一個核心項目,運行環(huán)境需要一定的配置,由于其穩(wěn)定性和開放性,經(jīng)常配合一些開源網(wǎng)頁開發(fā)包進行使用,在本次可視化平臺開發(fā)過程中,主要通過其進行網(wǎng)頁服務(wù)的發(fā)布。
在配置過Java 1.8環(huán)境之后,對Tomcat進行安裝,并設(shè)置8080端口號,在webapps文件夾中裝載主要網(wǎng)頁服務(wù)文件之后,啟動Tomcat,并設(shè)置防火墻,即可通過外網(wǎng)訪問開設(shè)端口,并進行網(wǎng)頁服務(wù)。
4.2.1.2 ArcGIS Server
ArcGIS Server 是ESRI 發(fā)布的提供面向Web 空間數(shù)據(jù)服務(wù)的一個企業(yè)級GIS軟件平臺,提供創(chuàng)建和配置GIS應(yīng)用程序和服務(wù)的框架,這樣可以滿足不同客戶的各種需求[10,11],在本次可視化平臺開發(fā)過程中,主要通過其進行地圖服務(wù)的發(fā)布。首先安裝ArcGIS License,然后安裝ArcGIS Server 10.4,通過設(shè)置初始用戶和密碼,在開設(shè)端口6080中進入系統(tǒng)界面。在系統(tǒng)界面可以進行地圖服務(wù)的相關(guān)操作,其中包括服務(wù)的啟動、載入、刪除、停止等。
發(fā)布之后的服務(wù)均通過arcgis/rest域名進行訪問,在該域名下存儲所有發(fā)布的地圖服務(wù),通過相關(guān)鏈接解析,即可得到地圖數(shù)據(jù),并以瓦片形式展示。
4.2.1.3 ECharts開發(fā)包
ECharts是一款由百度進行開發(fā),并最終捐贈給Apache進行開源的數(shù)據(jù)可視化開發(fā)包,它同時具備美觀性和交互性,在本次可視化平臺開發(fā)過程中,主要進行統(tǒng)計數(shù)據(jù)的展示與交互。
由于網(wǎng)絡(luò)包引用CDN效率低且有一定的安全風(fēng)險,所以在本次可視化平臺開發(fā)過程中,將ECharts開發(fā)包部署在服務(wù)器,通過服務(wù)器的訪問,可以有效降低風(fēng)險,提升網(wǎng)頁運行效率,ECharts的開發(fā)包可以通過Tomcat進行發(fā)布,也可以通過Windows Server2016系統(tǒng)中的IIS進行發(fā)布。
4.2.1.4 OpenLayers
OpenLayers是一個用于開發(fā)WebGIS客戶端的JavaScript包[12]。開發(fā)者可以通過使用該開發(fā)包對地圖服務(wù)進行解析,實現(xiàn)基礎(chǔ)空間地理操作。在本次可視化平臺開發(fā)過程中,主要進行地圖服務(wù)的解析與圖層控制等,其主要解析的地圖服務(wù)是ArcGIS Server 10.4所發(fā)布的地圖服務(wù)[13]。
4.2.2 地圖服務(wù)發(fā)布及統(tǒng)計數(shù)據(jù)展示
通過在catalog中連接ArcGIS Server服務(wù)器,進行遠程操作,并在ArcMap中進行地圖服務(wù)發(fā)布,通過Analysts進行地圖信息矯正和格式規(guī)范統(tǒng)一,最后Publish發(fā)布到遠程服務(wù)器。
本次可視化平臺開發(fā)過程中,前端展示采用六個統(tǒng)計圖表進行統(tǒng)計數(shù)據(jù)展示,其中包括:生態(tài)系統(tǒng)健康統(tǒng)計柱狀圖、生態(tài)系統(tǒng)健康趨勢折線圖、等級劃分占比環(huán)狀圖、指標(biāo)權(quán)重柱狀圖、生態(tài)系統(tǒng)健康地區(qū)折線圖、云計算權(quán)重扇形圖。這六個統(tǒng)計圖均采用ECharts所提供的開發(fā)包進行開發(fā),實現(xiàn)了AJAX數(shù)據(jù)異步傳輸和jQuery的數(shù)據(jù)交互展示。
4.2.3 數(shù)據(jù)更新與預(yù)警
(1)Python字符串更新。對于字段統(tǒng)計數(shù)據(jù),使用Python提供的網(wǎng)頁服務(wù)包進行字符串更新操作,在代碼中設(shè)置數(shù)據(jù)源與更新周期進行數(shù)據(jù)替換,地理數(shù)據(jù)通過ArcMap操作并發(fā)布新版本來替換原始數(shù)據(jù),實現(xiàn)地理數(shù)據(jù)更新。
(2)阿里云短信預(yù)警。在預(yù)警方面,首先專題圖的更新提供數(shù)據(jù)調(diào)用接口,通過阿里云中的短信通知功能,監(jiān)測調(diào)用的生態(tài)風(fēng)險結(jié)果,當(dāng)達到預(yù)警值即可進行短信通知(圖3)。
本文構(gòu)建復(fù)雜環(huán)境生態(tài)風(fēng)險預(yù)警可視化平臺,通過ArcMap將地圖發(fā)布出來,便于監(jiān)測平臺調(diào)用該地圖,以實現(xiàn)在線地圖服務(wù),同時借助jQuery、Flex、AJAX等底層技術(shù)進行平臺前端框架的實現(xiàn)。通過生態(tài)風(fēng)險統(tǒng)計柱狀圖、生態(tài)風(fēng)險趨勢折線圖、等級劃分占比環(huán)狀圖、指標(biāo)權(quán)重柱狀圖、生態(tài)風(fēng)險地區(qū)折線圖、云計算權(quán)重扇形圖共計六類統(tǒng)計圖表對統(tǒng)計數(shù)據(jù)進行可視化展示。通過Python軟件,實現(xiàn)了監(jiān)測平臺統(tǒng)計數(shù)據(jù)的自動更新功能;同時借助ArcMap軟件,實現(xiàn)人工的地圖服務(wù)更新功能。該平臺還具有較為完備的預(yù)警功能,通過阿里云中的短信通知功能,監(jiān)測調(diào)用的生態(tài)風(fēng)險結(jié)果,一旦達到預(yù)警值,平臺便可發(fā)出短信通知,實現(xiàn)短信預(yù)警功能。
圖3 平臺界面