鄒山花,方寧生,陳心怡
(1.無錫太湖學(xué)院,無錫 214064;2.江蘇省物聯(lián)網(wǎng)應(yīng)用技術(shù)重點(diǎn)建設(shè)實(shí)驗(yàn)室,無錫 214064;3.東南大學(xué),南京 210018)
隨著經(jīng)濟(jì)發(fā)展與社會進(jìn)步,人們的生活水平得到了前所未有的提升,但隨之而來的環(huán)境污染也逐漸凸顯成為一個引人關(guān)注的重要問題。對生態(tài)環(huán)境造成的不可磨滅的破壞已逐漸直接影響到人們的日常生活,尤其是大氣污染。工業(yè)化、城市化帶來的大氣污染問題日益嚴(yán)重,工廠排放的廢氣、機(jī)動車尾氣、餐飲業(yè)排放的油煙、冬季燒煤供暖等都會導(dǎo)致大氣中的顆粒物濃度增加。
大氣環(huán)境的數(shù)據(jù)繁多且具有時空變化性,若以普通表格直接羅列的方式將無法體現(xiàn)出眾多數(shù)據(jù)的規(guī)律。數(shù)據(jù)可視化是對數(shù)據(jù)以圖形圖像方式的直觀展現(xiàn),因此,選擇合適的可視化技術(shù)將這些大氣環(huán)境的相關(guān)數(shù)據(jù)以圖像的方式展現(xiàn)在人們面前并可以與之交互,對于有效利用好環(huán)境監(jiān)測預(yù)警系統(tǒng)、并以此系統(tǒng)為基礎(chǔ)進(jìn)行分析和污染的預(yù)警具有重要的意義。
本文從大氣環(huán)境監(jiān)測預(yù)警的客觀需求出發(fā),研究其數(shù)據(jù)可視化的不同方案,分析比較各種方案的優(yōu)缺點(diǎn)和不同,以現(xiàn)代先進(jìn)的數(shù)據(jù)可視化技術(shù)中的多種方案實(shí)現(xiàn)使人們能夠以更直觀的方式監(jiān)測大氣環(huán)境和相關(guān)氣象要素的各種數(shù)據(jù),便于更深入的分析和研究并對可能的污染做出預(yù)警。
本文研究并實(shí)現(xiàn)的大氣環(huán)境監(jiān)測預(yù)警系統(tǒng)是大氣(重)污染預(yù)報預(yù)警系統(tǒng)的子系統(tǒng)。整個大氣(重)污染預(yù)報預(yù)警系統(tǒng)是一個對大氣環(huán)境進(jìn)行實(shí)時監(jiān)控、預(yù)報和預(yù)警的平臺,共包括大氣污染分析系統(tǒng)、大氣污染綜合預(yù)警系統(tǒng)、大氣污染預(yù)報制作系統(tǒng)以及檢驗(yàn)與評估系統(tǒng)四大系統(tǒng),目的是為應(yīng)對環(huán)境污染、保護(hù)環(huán)境提供系統(tǒng)支撐。本文的大氣環(huán)境監(jiān)測預(yù)警系統(tǒng)是平臺中專注于綜合分析、綜合預(yù)警二模塊結(jié)合的子系統(tǒng),目的是通過現(xiàn)代可視化技術(shù)對環(huán)境和相關(guān)氣象要素的實(shí)況監(jiān)測數(shù)據(jù)以及預(yù)報數(shù)據(jù)按照不同的可視化方案進(jìn)行展示和交互,實(shí)現(xiàn)對大氣環(huán)境的監(jiān)測和對污染情況的預(yù)警和發(fā)布,為環(huán)保部門提供決策依據(jù)。
在氣象、環(huán)保數(shù)據(jù)領(lǐng)域,插值模型一直是一個熱點(diǎn)研究問題。由于反映大氣環(huán)境的各項(xiàng)污染物濃度和相關(guān)氣溫、降水等眾多要素的數(shù)據(jù)值都是由各個氣象或環(huán)保監(jiān)測站監(jiān)測而來,這些實(shí)際觀測數(shù)據(jù)是離散的,只能準(zhǔn)確的代表監(jiān)測站周圍一定范圍內(nèi)的要素值。為了通過這些離散且并不規(guī)則的數(shù)據(jù)推得未知點(diǎn)的數(shù)據(jù)值、或是生成等值線或柵格表面,需要擬合一個能夠體現(xiàn)要素數(shù)據(jù)值和空間位置之間關(guān)系的函數(shù)方程,來估算出未經(jīng)過觀測的點(diǎn)的要素數(shù)據(jù)值。通過空間插值模型可以將離散測量點(diǎn)獲得的數(shù)據(jù)推到整個區(qū)域,通過已知的監(jiān)測點(diǎn)預(yù)測到整個空間范圍。
常用的插值算法主要包括Cressman插值、反距離權(quán)重(IDW)插值、雙線性插值、克里金插值等。
Cressman插值算法又叫Cressman客觀分析,最早由Cressman等在1959年提出,是在氣象環(huán)保領(lǐng)域應(yīng)用得最多的一種算法,其核心的思想是逐步訂正法,先給定一個猜測場(初始估計),隨后用實(shí)際觀測場來逐步修正直至逼近觀測記錄。用M代表任意要素(例如氣溫、氣壓等),格點(diǎn)(i,j)處要素值的第一猜測值表示為M0,訂正值表示為M',使用公式表達(dá)如下:
△Mk是第k個采樣點(diǎn)已知的觀測數(shù)據(jù)與第一猜測值的差,Wijk是代表數(shù)據(jù)之間影響權(quán)重的權(quán)重函數(shù),式(3)是其一般形式。
R是給定的一個掃描半徑,Dijk是掃描半徑范圍內(nèi)第k個采樣點(diǎn)與格點(diǎn)(i,j)的距離。Cressman插值的思想是,在掃描半徑R的范圍內(nèi)已知采樣點(diǎn)對未知點(diǎn)(i,j)影響大,距離(i,j)越近的已知點(diǎn)影響越大,而R以外的可以忽略不計,故權(quán)重為0。K是掃描半徑范圍內(nèi)已知采樣點(diǎn)的數(shù)目。
Cressman插值方法中最重要的是影響權(quán)重的確定,需要給定掃描半徑R的值進(jìn)行計算,有一定的人為因素,經(jīng)常選取的值有1、2、4、7、10。算法的基本思路如下:先確定一個猜測場以及設(shè)置一個逼近值的范圍,用來將計算后的值和實(shí)際資料進(jìn)行比較;計算影響權(quán)重Wijk;將權(quán)重值Wijk代入進(jìn)行插值計算,得到一個訂正值;比較訂正值和實(shí)際資料,如二者差值不在預(yù)定的逼近值范圍內(nèi),則用該差值繼續(xù)訂正上一次的場;重復(fù)訂正直至誤差達(dá)到滿意的范圍內(nèi)。
上述研究的幾種插值算法中,雙線性插值原理簡單,插值效果較好,適合于將格點(diǎn)數(shù)據(jù)插值為站點(diǎn)數(shù)據(jù)。Cressman插值、反距離權(quán)重插值方法都基于同一個核心的思想,即在地理空間范圍內(nèi),距離越近的點(diǎn)對插值點(diǎn)的影響越大,權(quán)重的選取根據(jù)距離的遠(yuǎn)近來確定。其中Cressman插值是從離散的站點(diǎn)數(shù)據(jù)通過逐步訂正方法插值點(diǎn)為格點(diǎn)數(shù)據(jù)帶來誤差較小的一種方法,在大氣數(shù)據(jù)處理中廣泛使用;反距離權(quán)重插值容易出現(xiàn)“牛眼”現(xiàn)象,在權(quán)重的選擇上僅考慮了距離對待插值點(diǎn)的影響,不夠全面??死锝鸩逯蹈纳屏朔淳嚯x權(quán)重插值的這一缺陷,將采樣點(diǎn)的結(jié)構(gòu)特征和隨機(jī)性一同考慮在內(nèi)進(jìn)行插值計算,是一種較為完善有效的插值方式,但較為復(fù)雜計算量大,變異函數(shù)的選取也有人為成分,因此在將站點(diǎn)數(shù)據(jù)插值為格點(diǎn)數(shù)據(jù)時,選取Cressman算法進(jìn)行插值。
大氣環(huán)境監(jiān)測從產(chǎn)品內(nèi)容的不同上來劃分包括環(huán)境氣象要素實(shí)時監(jiān)測(霧、霾、空氣質(zhì)量、能見度)、氣象要素及背景形勢場分析(地面要素和風(fēng)廓線雷達(dá))、動力因子及氣象擴(kuò)散條件分析和預(yù)報技術(shù)融合分析(不同模式不同產(chǎn)品的預(yù)報對比進(jìn)行分析),主要用于各項(xiàng)要素實(shí)時數(shù)據(jù)變化的分析與展示和不同預(yù)報規(guī)則數(shù)據(jù)的展示,可查詢不同地域尺度下(華東、浙江、溫州)大氣環(huán)境和相關(guān)產(chǎn)生影響的氣象要素監(jiān)測的實(shí)況數(shù)據(jù)和預(yù)報數(shù)據(jù)。從實(shí)現(xiàn)功能上劃分,整體包括監(jiān)測數(shù)據(jù)的平面渲染圖、GIS地圖、時間變化曲線展示。
大氣環(huán)境監(jiān)測的核心是環(huán)境空氣質(zhì)量,同時,在分析大氣環(huán)境時還需要考慮到影響空氣質(zhì)量的相關(guān)氣象要素,如天氣、風(fēng)向、濕度、大氣穩(wěn)定度等等,通過提供環(huán)境氣象要素的不同產(chǎn)品給業(yè)務(wù)人員進(jìn)行綜合分析來實(shí)現(xiàn)對大氣環(huán)境的監(jiān)測。主要通過對已經(jīng)收集的環(huán)境和氣象數(shù)據(jù)通過計算處理,建立可視化模型實(shí)現(xiàn)的方式進(jìn)行監(jiān)測。
以核心的環(huán)境空氣質(zhì)量監(jiān)測為例,主要需要進(jìn)行監(jiān)測的指標(biāo)是SO2(二氧化硫)、NO2(二氧化氮)、CO(一氧化碳)、O3(臭氧)、PM2.5(細(xì)顆粒物)、PM10(可吸入顆粒物)六項(xiàng)污染物和代表著空氣質(zhì)量狀況的AQI(Air Quality Index,空氣質(zhì)量指數(shù)),其中基礎(chǔ)的數(shù)據(jù)是六項(xiàng)污染物的實(shí)測濃度值,AQI由各項(xiàng)污染物的濃度數(shù)據(jù)計算而來。
實(shí)現(xiàn)AQI監(jiān)測功能的具體方案如下:
1)根據(jù)各項(xiàng)污染物的實(shí)測濃度分別計算出六項(xiàng)污染物的IAQI(Individual Air Quality Index,空氣質(zhì)量分指數(shù)),計算公式為:
其中C代表該項(xiàng)污染物的濃度。各項(xiàng)污染物濃度限值與空氣質(zhì)量分指數(shù)的對照表如表1所示,BPH和BPL代表在表1中與該濃度C相近的高位值和低位值,IAQIH和IAQIL表示在表1中BPH和BPL對應(yīng)的空氣質(zhì)量分指數(shù)的值。
表1 污染物濃度限值與空氣質(zhì)量分指數(shù)對照表
2)從六項(xiàng)污染物的IAQI中取最大的一個值即為空氣質(zhì)量指數(shù)AQI。
3)根據(jù)計算得到的AQI數(shù)值,確定對應(yīng)的空氣質(zhì)量級別、類別和用來表示的顏色,對照如表2所示。無數(shù)據(jù)時用灰色表示。
表2 空氣質(zhì)量指數(shù)AQI對照表
4)根據(jù)不同的可視化方案(平面渲染圖、GIS圖、曲線圖)進(jìn)行實(shí)現(xiàn),用圖形的方式進(jìn)行直觀展示以實(shí)現(xiàn)監(jiān)測。
平面圖功能是將NCL制作的產(chǎn)品圖根據(jù)需求在系統(tǒng)中展示。實(shí)現(xiàn)的邏輯如下:
1)根據(jù)前臺傳入?yún)?shù),剛進(jìn)入頁面或點(diǎn)擊了查詢最新按鈕時都需查詢最新的產(chǎn)品圖;
2)按規(guī)則拼裝產(chǎn)品路徑和圖片名;
3)在存放產(chǎn)品圖的服務(wù)器相應(yīng)目錄下查詢是否有對應(yīng)圖片;
4)無產(chǎn)品則返回“無產(chǎn)品”樣式的圖片地址;
5)有產(chǎn)品則將該產(chǎn)品圖地址(url)和圖例地址(legend)返回,若是查詢最新則加上最新產(chǎn)品的時間。
項(xiàng)目的開發(fā)遵循組件化和模塊化的思想,抽象出公共的組件以便不同的模塊可以共用。在平面圖中,平面圖的顯示與播放都是封裝好的組件,在jsp頭部嵌入便可進(jìn)行調(diào)用。
以空氣質(zhì)量平面圖為例,對應(yīng)的js文件airquality_qv.js中,以ajax的方式實(shí)現(xiàn)前后臺數(shù)據(jù)傳遞。queryDate是一個對象,包含了time(時間),area(選擇的區(qū)域,共包括華東、浙江和溫州三個尺度),productID(選擇的產(chǎn)品編號),type(產(chǎn)品的類型,如PB代表色斑圖)interval(時間列表的間隔)和(一次返回的條數(shù)num),后臺根據(jù)前臺傳入的信息查詢后返回數(shù)據(jù)。
在控制層AirQualityController中有對應(yīng)的queryBaseProductInfo方法,在之前添加注解@RequestMapping進(jìn)行標(biāo)注,使得http請求可以找到對應(yīng)方法??刂茖咏邮盏角芭_傳入的各項(xiàng)參數(shù)交給airQualityService進(jìn)行實(shí)現(xiàn),調(diào)用airQualityService中的queryQuickView方法。在AirQualityServiceImp中queryQuickView進(jìn)行具體實(shí)現(xiàn),調(diào)用公共的查詢產(chǎn)品圖方法MyQuickViewFinder(平面圖查詢)。MyQuickViewFinder實(shí)現(xiàn)的方法包括:searchLatest(查詢最新產(chǎn)品圖),query(精確查詢對應(yīng)產(chǎn)品圖),traverse(對獲得的List進(jìn)行翻轉(zhuǎn)),parse(解析配置文件)等。產(chǎn)品圖和圖例的地址在單獨(dú)的配置文件nclpath.xml中,后臺對配置文件進(jìn)行解析,在相應(yīng)路徑下查找并返回結(jié)果。
獲得的結(jié)果裝入map對象的objectData返回給前臺,前臺js中通過res.objectData進(jìn)行獲取。獲取的list中包含有20條數(shù)據(jù),每條數(shù)據(jù)都對應(yīng)了列表中一個時刻的產(chǎn)品,包含的內(nèi)容有:url(產(chǎn)品圖的地址),legend(圖例的地址),time(該產(chǎn)品的時間),title(圖片標(biāo)題)。隨后調(diào)用平面圖的組件,在頁面中加載相應(yīng)的div。
以環(huán)境氣象要素監(jiān)測中空氣質(zhì)量監(jiān)測為例。點(diǎn)擊后首先進(jìn)入平面圖,默認(rèn)顯示最新有產(chǎn)品的時間,可點(diǎn)擊向前、向后按鈕或點(diǎn)擊控件選擇時間查詢所需的產(chǎn)品,也可在時間列表點(diǎn)擊事件查詢對應(yīng)時間的產(chǎn)品圖??諝赓|(zhì)量監(jiān)測產(chǎn)品包括空氣質(zhì)量指數(shù)(AQI)和六項(xiàng)污染物(PM2.5、PM10、O3、NO2、SO2、CO),根據(jù)產(chǎn)品的不同,圖例會相應(yīng)改變。圖片上有向前向后箭頭對應(yīng)時間控件的按鈕。在右側(cè)可對地域尺度進(jìn)行選擇,選擇不同的市區(qū)縣進(jìn)行具體區(qū)域產(chǎn)品的展示,勾選不同的圖層可以顯示或隱藏不同的邊界和名稱如區(qū)縣界和區(qū)縣名;還可設(shè)置播放速度進(jìn)行播放,顯示產(chǎn)品在時間列表內(nèi)的變化趨勢。實(shí)現(xiàn)效果如圖1所示。
圖1 大氣環(huán)境監(jiān)測空氣質(zhì)量平面圖展示
除單張產(chǎn)品圖外,還可進(jìn)行多種產(chǎn)品的疊加,此時的實(shí)現(xiàn)方法是:無時間列表的情況下,返回數(shù)據(jù)格式為勾選幾個產(chǎn)品,list中包含幾條數(shù)據(jù);有時間列表的情況下,list中數(shù)據(jù)條數(shù)等于時間列表數(shù)量,一條數(shù)據(jù)中再包含勾選的幾種產(chǎn)品圖數(shù)據(jù)。圖2為多產(chǎn)品疊加的效果。
圖2 大氣環(huán)境監(jiān)測動力因子平面圖展示
由于大氣環(huán)境和相關(guān)氣象要素的平面渲染圖通過NCL制作平面圖的方式實(shí)現(xiàn),在GIS模塊中無需通過另外的插值方法進(jìn)行處理,直接通過讀取站點(diǎn)數(shù)據(jù)或城市數(shù)據(jù)進(jìn)行整體的展示。
GIS共用的開發(fā)在單獨(dú)的模塊中進(jìn)行,編寫共用的js文件提供公用方法,將ArcGIS的相關(guān)js、css文件如init.js等嵌入到j(luò)sp頭部,在需要調(diào)用GIS模塊的對應(yīng)js中進(jìn)行聯(lián)調(diào)即可使用。以空氣質(zhì)量為例,在airquality_gis.jsp中創(chuàng)建加載GIS地圖的容器“<div id = ‘giscontainer’>”,調(diào)用initMap()方法初始化地圖,在initMap()中傳入需要的參數(shù),包括容器id如“giscontainer”,加載點(diǎn)擊事件的回調(diào)函數(shù)等。在airquality_gis.jsp對應(yīng)的js文件airquality_gis.js中,直接調(diào)用GIS中的方法進(jìn)行地圖相關(guān)數(shù)據(jù)的獲取和操作。
整個GIS圖的顯示由眾多圖層組成,圖層控制的核心是在不同的圖層上畫需要顯示的效果,或更改不同Layer的visible屬性為true或false來使某一圖層可見或不可見。例如分布圖、站點(diǎn)圖、風(fēng)場等都是不同的圖層,每一圖層由Graphic組成,由于Graphic本身不能設(shè)置事件監(jiān)聽,因此通過esri.layers.GraphicsLayer方法創(chuàng)建包含多個Graphic的圖層實(shí)現(xiàn)對點(diǎn)擊、鼠標(biāo)移動等事件的監(jiān)聽,用map.addLayers來添加;在選擇面板中點(diǎn)擊了不同的產(chǎn)品選項(xiàng)會首先調(diào)用map.removeLayer方法將其他的圖層清除再將選中的圖層顯示。
地圖的底圖是切片圖層,通過繼承esri.layers.TiledMapServiceLayer,加載一系列切片圖完成底圖的顯示,切片圖由ArcGIS Server發(fā)布。在導(dǎo)航條有放大、縮小和拖動(即漫游)的功能,由Navigation模塊實(shí)現(xiàn)。
GIS圖的顯示有兩種形式,一種是點(diǎn)位圖,按站點(diǎn)顯示,一種是分布圖,按照某一要素市區(qū)縣的不同來顯示不同區(qū)塊的分布,同個市區(qū)縣的區(qū)域內(nèi)填充相同的色塊。前端查詢時通過queryGISInfo.do訪問到控制層對應(yīng)方法,傳入的queryData中包括type(查詢類型,市區(qū)縣的分布圖或是站點(diǎn)的點(diǎn)位圖)、time(查詢時間)、product(產(chǎn)品,如AQI、六項(xiàng)污染物或其他氣象要素),對應(yīng)的類型獲取到的后臺數(shù)據(jù)格式、調(diào)用的GIS方法如表3所示。
GISStation和GISCity兩個方法已在GIS的公用js文件中定義實(shí)現(xiàn),根據(jù)不同產(chǎn)品的類型和等級,按照規(guī)定顯示顏色。
GIS圖中每一區(qū)域都綁定了click點(diǎn)擊事件,點(diǎn)擊后會彈出對應(yīng)區(qū)域的曲線圖,前臺傳入時間、區(qū)域、產(chǎn)品,采用queryDetail方法查詢。
GIS區(qū)縣分布圖、站點(diǎn)點(diǎn)位圖的實(shí)現(xiàn)效果分別如圖3、圖4所示。
點(diǎn)擊表格按鈕,可將所有市區(qū)縣或站點(diǎn)的空氣質(zhì)量相關(guān)信息在彈出框中顯示,調(diào)用queryTable方法進(jìn)行查詢實(shí)現(xiàn)。如圖5所示。
表3 GIS數(shù)據(jù)格式與調(diào)用方法
圖3 大氣環(huán)境監(jiān)測GIS分布圖展示
圖4 大氣環(huán)境監(jiān)測GIS點(diǎn)位圖展示
圖5 大氣環(huán)境監(jiān)測GIS表格展示
平面產(chǎn)品圖和GIS地圖顯示的是不同要素在不同區(qū)域的分布狀況,當(dāng)需要查看某項(xiàng)要素在某一地區(qū)隨著時間變化的趨勢時,則采用統(tǒng)計圖的方式進(jìn)行展示更加合適。統(tǒng)計圖的實(shí)現(xiàn)采用Highcharts的方法,已在項(xiàng)目中引入Highcharts包。
圖表的繪制有多種不同的綁定容器的方法,以一個id為mychart的div為例。
方法一:$(“#mychart”).highcharts({options});
方法二:var chart = new Highcharts.Chart(“mychart”,{options});
方法三:var chart = new Highcharts.Chart({chart:{renderTo: “mychart”},…});
用highcharts繪制的圖表支持下載,需要在頭部引入exporting.js,并在option中做設(shè)置。
option是關(guān)于highcharts繪制的相關(guān)屬性設(shè)置,系統(tǒng)中涉及到的常用的內(nèi)容有如下幾項(xiàng):
chart:圖表的基本設(shè)置,主要包括renderTo(繪制圖表的容器id),type(圖表的類型,默認(rèn)為折線圖line,曲線圖spline,柱狀圖column,條形圖bar,餅圖pie),width(寬度),height(高度),backgroundColor(圖表背景),events(設(shè)置圖表的一些事件如load、click)等;
title、subtitle:設(shè)置圖表標(biāo)題或子標(biāo)題的文字、位置、樣式等;
xAxis:x軸的相關(guān)屬性,如categories(x軸顯示的標(biāo)簽,以數(shù)組的形式表示),labels(對x軸標(biāo)簽的具體內(nèi)容和樣式進(jìn)行控制),title(x軸的名稱),gridLineWidth(x軸標(biāo)簽對應(yīng)豎線的寬度),max(最大值),min(最小值)等;
yAxis:y軸的標(biāo)簽內(nèi)容等屬性,與x軸設(shè)置類似;
exporting:導(dǎo)出的相關(guān)設(shè)置,如enabled(是否允許導(dǎo)出,設(shè)置為false則被禁止),buttons(自己定義按鈕的圖片樣式等,包括打印按鈕printButton和導(dǎo)出按鈕exportButton),filename(導(dǎo)出文件的名稱),type(導(dǎo)出的格式)等;
tooltip:移動鼠標(biāo)到圖表上數(shù)據(jù)點(diǎn)顯示提示框的相關(guān)配置,如enabled(顯示提示框與否),formatter(對提示框內(nèi)容的顯示做控制),style(樣式);
legend:圖例的設(shè)置,如enabled(顯示圖例與否),layout(兩種方式顯示,vertical垂直顯示或horizontal水平顯示),style(樣式)等;
plotOptions:圖表中數(shù)據(jù)列的相關(guān)設(shè)置,包括series(針對所有數(shù)據(jù)列通用的相關(guān)設(shè)置,如cursor設(shè)置鼠標(biāo)移動上去光標(biāo)的形狀,events設(shè)置點(diǎn)擊、顯示、點(diǎn)擊圖例等事件),line(針對折線圖進(jìn)行設(shè)置,如線條粗細(xì)lineWidth,數(shù)據(jù)點(diǎn)的顯示樣式marker等),column(針對柱狀圖的設(shè)置)等,針對具體數(shù)據(jù)列樣式的會覆蓋通用設(shè)置;
series:圖表數(shù)據(jù)的具體設(shè)置,是一個數(shù)組,數(shù)組中可以是一種或幾種數(shù)據(jù),每一種數(shù)據(jù)以{type:‘spline’,name: ‘AQI’,data: [69,87,72]}的形式表示,data數(shù)組中的內(nèi)容也可對每一點(diǎn)的內(nèi)容另做詳細(xì)設(shè)置,如series中的設(shè)置與在plotOptions中的設(shè)置項(xiàng)有重復(fù),會覆蓋plotOptions中的設(shè)置。
加載圖表的時候,js文件中以ajax的方式發(fā)起請求,controller接收請求處理后返回從數(shù)據(jù)庫中讀取的數(shù)據(jù),前臺獲取到response讀取的結(jié)果,將結(jié)果處理成highcharts規(guī)定的格式,調(diào)用highcharts的方法進(jìn)行圖表的繪制。
以天氣形勢場預(yù)報中的OCF(最優(yōu)化集成釋用,一種數(shù)值預(yù)報的方法)為例,選取需要的區(qū)域和時間展示相應(yīng)的降水量柱狀圖和溫度曲線圖,實(shí)現(xiàn)的效果圖如圖6所示。
圖6 大氣環(huán)境監(jiān)測-OCF
大氣環(huán)境預(yù)警根據(jù)實(shí)況監(jiān)測和預(yù)報趨勢的數(shù)據(jù),自動識別出大氣重污染信息,并提供交互制作工作方便業(yè)務(wù)人員進(jìn)行預(yù)警信號的制作,主要包括大氣污染預(yù)警、預(yù)警信號制作、預(yù)警信息發(fā)布、預(yù)警信息查詢。
預(yù)警按照嚴(yán)重程度分為藍(lán)色預(yù)警、黃色預(yù)警、橙色預(yù)警、紅色預(yù)警四種級別,依次用4表示,紅色預(yù)警最為嚴(yán)重。具體的對照如表4所示。
表4 預(yù)警級別對照表
預(yù)警模塊涉及到的文件主要包括warning.jsp,WarningController,WarningService,WarningDao,實(shí)體類Warning等。
登錄后點(diǎn)擊綜合預(yù)警模塊,后臺識別出有污染告警的區(qū)縣信息,在地圖上用預(yù)警等級的相對應(yīng)顏色進(jìn)行填充并且閃爍告警,用彈出框展示有告警信息的區(qū)縣的AQI變化趨勢曲線圖,展示該區(qū)縣過去7天及未來3天的AQI變化趨勢,其中實(shí)際監(jiān)測到的實(shí)況數(shù)據(jù)用柱狀圖表示,預(yù)報的數(shù)據(jù)用曲線圖表示。如果多個區(qū)縣都有污染告警的信息,則用不同的標(biāo)簽頁來顯示,選擇相應(yīng)的區(qū)縣名稱進(jìn)行查看。當(dāng)不存在預(yù)警信息時,地圖顯示空白狀態(tài)。如圖7、圖8所示。
圖7 大氣污染預(yù)警-無預(yù)警信息
圖8 大氣污染預(yù)警-有預(yù)警信息
制作預(yù)警信號主要是獲取到點(diǎn)擊的區(qū)域進(jìn)行顏色的填充,添加click事件,獲取到點(diǎn)擊位置的屬性evt.graphic.attributes。
點(diǎn)擊右下角的預(yù)警制作按鈕,彈出選擇是否制作預(yù)警信號的頁面,選擇相應(yīng)的預(yù)警顏色。當(dāng)選擇“否”時,再次彈窗確認(rèn)取消告警提示,確定不進(jìn)行預(yù)警則關(guān)閉告警,清除地圖上閃爍的填充顏色。如選擇制作預(yù)警信號,則彈出選擇框選擇是落區(qū)訂正還是區(qū)域訂正,落區(qū)訂正即直接在地圖上進(jìn)行點(diǎn)擊,在點(diǎn)擊中的區(qū)縣填充相應(yīng)的預(yù)警信號,區(qū)域訂正即通過勾選區(qū)縣名,直接在地圖上對應(yīng)的區(qū)域生成預(yù)警信號的顏色填充。選擇完畢后點(diǎn)擊生成預(yù)警信號,彈出制作面板可以進(jìn)行制作,編輯相應(yīng)的文字信息保存,預(yù)警信號即制作成功。如圖9所示。
圖9 預(yù)警制作選擇
在右下角的預(yù)警修改中點(diǎn)擊,可管理所有制作好的預(yù)警信號,包括修改、刪除和發(fā)布。不同級別的用戶登錄后,可以獲取到參考的預(yù)警數(shù)據(jù)和制作好的預(yù)警信息,結(jié)合氣象局對大氣成分的主觀預(yù)報和環(huán)保局對污染要素的實(shí)況監(jiān)測數(shù)據(jù),對預(yù)警信息進(jìn)行修改訂正,聯(lián)合會商,最終對預(yù)警信息進(jìn)行發(fā)布。相應(yīng)的大氣重污染預(yù)警信號公告可生成預(yù)覽界面保存到本地,生成Word文檔。如圖10所示。
圖10 預(yù)警信號修改發(fā)布
預(yù)警查詢是對制作的預(yù)警信息進(jìn)行查詢,可以根據(jù)預(yù)警的發(fā)布單位、類型、級別和編號精準(zhǔn)查詢。輸入開始時間、結(jié)束時間、發(fā)布單位、預(yù)警類型、預(yù)警級別、預(yù)警編號等信息進(jìn)行條件選擇,點(diǎn)擊查詢按鈕,可以查詢到符合條件的預(yù)警信息,以列表的方式展示,如沒有則顯示空。點(diǎn)擊導(dǎo)出按鈕可以將查詢到的預(yù)警信息以表格的形式導(dǎo)出到本地。如圖11所示。
圖11 預(yù)警信息查詢
本文詳細(xì)說明了大氣環(huán)境監(jiān)測預(yù)警系統(tǒng)的實(shí)現(xiàn)過程,包括系統(tǒng)開發(fā)平臺的選擇、SSM框架的搭建,用NCL繪制環(huán)保及氣象產(chǎn)品圖的步驟,ArcGIS API for JavaScript的部署開發(fā),介紹了大氣環(huán)境監(jiān)測模塊和大氣環(huán)境預(yù)警模塊的詳細(xì)實(shí)現(xiàn)。其中大氣環(huán)境監(jiān)測模塊包括了將NCL繪制的各種產(chǎn)品圖進(jìn)行展示,基于GIS進(jìn)行環(huán)保、氣象數(shù)據(jù)的展示與交互,基于highcharts工具的圖表展示;大氣環(huán)境預(yù)警模塊是基于GIS進(jìn)行預(yù)警信號的展示與交互繪制。