朱宗奎,于雪濤,李金鴿,蔣之犇
(1.中國(guó)礦業(yè)大學(xué)資源與地球科學(xué)學(xué)院,江蘇徐州 221116; 2.中國(guó)礦業(yè)大學(xué)安全工程學(xué)院,江蘇徐州 221116;3.陜西師范大學(xué)旅游與環(huán)境學(xué)院,陜西西安 710062)
交通氣象預(yù)報(bào)制作系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
朱宗奎1?,于雪濤1,李金鴿2,蔣之犇3
(1.中國(guó)礦業(yè)大學(xué)資源與地球科學(xué)學(xué)院,江蘇徐州 221116; 2.中國(guó)礦業(yè)大學(xué)安全工程學(xué)院,江蘇徐州 221116;3.陜西師范大學(xué)旅游與環(huán)境學(xué)院,陜西西安 710062)
本文在指出當(dāng)前交通氣象預(yù)報(bào)中預(yù)報(bào)公路少和細(xì)節(jié)層次低的缺陷后,以包頭市為例,結(jié)合ArcGIS Engine二次開(kāi)發(fā)組件,設(shè)計(jì)并實(shí)現(xiàn)了針對(duì)包頭市范圍內(nèi)公路的交通氣象預(yù)報(bào)制作系統(tǒng)。本系統(tǒng)能夠結(jié)合包頭市下各旗縣的天氣,快速地生成交通氣象預(yù)報(bào)圖和公路氣象文字描述,并且生成的交通氣象預(yù)報(bào)圖中自動(dòng)地添加了圖例比例尺指北針等輔助要素。生成的交通氣象預(yù)報(bào)圖和文字描述可直接地發(fā)布到互聯(lián)網(wǎng),供公眾出行查詢,填補(bǔ)了當(dāng)前我國(guó)省級(jí)及地級(jí)市級(jí)氣象單位沒(méi)有發(fā)布交通氣象預(yù)報(bào)的空白。
交通氣象預(yù)報(bào);ArcGIS Engine;交通氣象預(yù)報(bào)圖
中國(guó)氣象局網(wǎng)站每天發(fā)布的“全國(guó)主要公路沿線氣象條件預(yù)報(bào)”給人們的出行帶來(lái)了很大方便,但是該預(yù)報(bào)也存在著缺陷,即它只是對(duì)國(guó)道及部分高速路段做了氣象條件的標(biāo)注,而對(duì)于省道等次級(jí)公路并沒(méi)有做標(biāo)注[1]。而且,我國(guó)大部分省級(jí)及地級(jí)市級(jí)的氣象局也沒(méi)有發(fā)布本區(qū)域內(nèi)的交通氣象條件預(yù)報(bào)情況。對(duì)于公眾,其不只是只走國(guó)道,而且還要在省道等次一級(jí)的道路上經(jīng)過(guò),因此迫切地需要當(dāng)?shù)貧庀缶帜軌虬l(fā)布本區(qū)域內(nèi)的交通氣象條件,指導(dǎo)公眾的出行。
為了解決以上突出問(wèn)題,作者采用ArcGIS Engine作為二次開(kāi)發(fā)組件,以包頭市為例,設(shè)計(jì)并實(shí)現(xiàn)了針對(duì)包頭市范圍內(nèi)的旗縣級(jí)公路、高速路和國(guó)道的交通氣象預(yù)報(bào)制作系統(tǒng)。系統(tǒng)根據(jù)用戶設(shè)定好各旗縣的天氣情況后,自動(dòng)生成包頭市范圍內(nèi)交通氣象情況圖,然后自動(dòng)地添加標(biāo)題、圖例、比例尺和指北針等元素,并將生成的交通氣象圖根據(jù)用戶選擇的分辨率和保存的圖片格式進(jìn)行保存,同時(shí)也將區(qū)縣天氣描述和沿線公路描述等文字信息一并導(dǎo)出。
系統(tǒng)的總體目標(biāo)是:根據(jù)包頭市的公路網(wǎng)圖和每天的天氣預(yù)報(bào)信息,制作交通氣象圖并同時(shí)生成交通氣象文字描述信息,然后將交通氣象圖導(dǎo)出為圖片,對(duì)于文字描述部分導(dǎo)出為txt文檔,便于后面的網(wǎng)絡(luò)發(fā)布。系統(tǒng)在設(shè)計(jì)時(shí)遵循以下原則:①實(shí)用性;②可靠性;③開(kāi)放性;④可擴(kuò)充性。
2.1 系統(tǒng)研發(fā)平臺(tái)
ArcGIS Engine(AE)是一組跨平臺(tái)的嵌入式AO,它是ArcGIS軟件產(chǎn)品的底層組件,用來(lái)構(gòu)建定制的GIS和桌面制圖應(yīng)用程序,或是向原有的應(yīng)用程序增加新功能,通過(guò)它,可以構(gòu)建非GIS為中心的應(yīng)用。開(kāi)發(fā)者使用ArcGIS Engine開(kāi)發(fā)包構(gòu)建應(yīng)用程序,并通過(guò)ArcGIS Engine Runtime的軟件許可將這些程序發(fā)給最終用戶。ArcGIS Engine開(kāi)發(fā)包包括三個(gè)關(guān)鍵部分:控件、工具條和工具對(duì)象庫(kù)。它的控件包括:MapControl、PageLayoutControl、ToolbarControl、TOCControl、Reader-Control、SceneControl和GlobeControl。其中前面4個(gè)控件用得比較多。由于ArcGIS Engine控件為嵌入式組件,故可以任意地添加到編譯環(huán)境的窗口和對(duì)話框中去,而且開(kāi)發(fā)者能夠訪問(wèn)ArcGIS Engine控件的屬性菜單項(xiàng)。每一個(gè)ArcGIS Engine控件既封裝了粗粒度的ArcObject,同時(shí)又提供了對(duì)細(xì)粒度的ArcObject的訪問(wèn)。因此,采用ArcGIS Engine的控件、工具條和工具對(duì)象庫(kù),可輕松實(shí)現(xiàn)空間數(shù)據(jù)的存取、地圖的表達(dá)及專(zhuān)業(yè)的空間分析[2]。所以,作者采用C#編程語(yǔ)言,結(jié)合ArcGIS Engine實(shí)現(xiàn)交通氣象制作系統(tǒng)的研發(fā)。
2.2 功能設(shè)計(jì)
在實(shí)際的應(yīng)用中,地級(jí)市中各旗縣的天氣預(yù)報(bào)可每天獲得,而具體的云雨天氣等情況的實(shí)際范圍不易獲得。由于預(yù)報(bào)的范圍比較小,故可以大致認(rèn)為旗縣的天氣情況就是該旗縣范圍內(nèi)所有區(qū)域的天氣情況。根據(jù)以上系統(tǒng)的總體目標(biāo)及數(shù)據(jù)的處理流程圖(圖1)作出設(shè)計(jì)。系統(tǒng)共分為三大模塊,即錄入氣象參數(shù)模塊、添加圖例比例尺指北針等輔助要素模塊和導(dǎo)出交通氣象預(yù)報(bào)圖及預(yù)報(bào)文本模塊。
錄入氣象參數(shù)模塊,主要負(fù)責(zé)根據(jù)用戶錄入的各旗縣的天氣參數(shù)(包括小到中雨、大到暴雨、小到中雪、大到暴雪、凍雨、霧、沙塵、雷暴和未受影響,共9項(xiàng)),在錄入完成后,則對(duì)地理底圖中的公路圖層中的圖元根據(jù)所屬旗縣的天氣情況更改圖元的顏色。具體的顏色設(shè)置,參考中國(guó)氣象局發(fā)布的“全國(guó)主要公路沿線氣象條件預(yù)報(bào)”中的各種天氣的顏色設(shè)置。同時(shí)還要保存旗縣和道路的天氣描述文字信息。添加圖例比例尺等輔助要素的模塊是在ArcGIS Engine的Pagelayout控件中添加比例尺、指北針等要素。導(dǎo)出模塊則是負(fù)責(zé)把添加了輔助要素的交通氣象預(yù)報(bào)圖導(dǎo)出為圖片,同時(shí)將保存的旗縣和道路的天氣描述文字信息導(dǎo)出到一個(gè)txt文件中。經(jīng)過(guò)上述步驟得到的交通氣象預(yù)報(bào)圖和道路的天氣描述文字信息,則可以直接發(fā)布到網(wǎng)絡(luò)中,供公眾出行時(shí)查詢。
圖1 數(shù)據(jù)處理流程圖
系統(tǒng)選取的數(shù)據(jù)包括包頭市行政區(qū)劃圖、包頭市內(nèi)的公路路線圖和旗縣點(diǎn)圖層。采用行政區(qū)區(qū)劃圖的目的是為了說(shuō)明只預(yù)報(bào)該區(qū)劃范圍內(nèi)的交通氣象條件,采用旗縣點(diǎn)圖層的目的是輔助用戶在交通氣象預(yù)報(bào)圖中大致定位。
為了實(shí)現(xiàn)系統(tǒng)快捷方便地打開(kāi)數(shù)據(jù),作者首先采用ArcGIS Desktop軟件建立一個(gè)mxd圖層工程文件,將三個(gè)圖層添加到該mxd地圖中,并對(duì)這些圖層的屬性表和圖層的顯示方式做些設(shè)置。對(duì)于行政區(qū)劃圖,在其屬性表中添加一個(gè)“TownName”字段,該字段記錄了包頭市內(nèi)各個(gè)旗縣的名稱(chēng),然后設(shè)置不同旗縣不同的顯示顏色。在包頭市內(nèi),包括市轄區(qū)、固陽(yáng)縣、土默特右旗、白云礦區(qū)和達(dá)爾罕茂明安聯(lián)合旗。對(duì)于公路圖,首先,采用公路圖線圖層和行政區(qū)劃圖面圖層做疊加分析(Overlay)中的交集操作(Intersect),經(jīng)疊加分析后,獲得了新圖層就是行政區(qū)劃圖中各個(gè)旗縣范圍內(nèi)的公路圖。并且該圖層的屬性表中,既有原公路圖層中的字段,又有行政區(qū)劃圖層的字段,如“Town-Name”字段。為了便于后面的計(jì)算,在該圖層的屬性表中,添加“weather”字段,該字段臨時(shí)保存該路段的氣象條件信息。對(duì)于旗縣點(diǎn)圖層,僅設(shè)置它的顯示方式即可。作者經(jīng)過(guò)以上的設(shè)置后,得到的包頭市交通氣象制作底圖如圖2所示。
圖2 包頭市交通氣象制作底圖
4.1 生成交通氣象圖
生成交通氣象圖的實(shí)質(zhì)就是首先根據(jù)各旗縣的名稱(chēng)查找各旗縣下的所有公路,因?yàn)榈缆穲D的屬性表中有“TownName”字段,故可以找到,然后對(duì)道路圖的“weather”字段進(jìn)行賦值,賦的值即為錄入的所在旗縣的天氣信息。然后采用ArcGIS Engine中的唯一值的渲染方法,對(duì)“weather”字段的所有值進(jìn)行唯一值渲染,從而更改道路圖層中各圖元即各道路段的顏色,具體的每種天氣對(duì)應(yīng)的顏色設(shè)置則參考中國(guó)氣象局的交通氣象預(yù)報(bào)。同時(shí),將預(yù)報(bào)的旗縣天氣描述信息和旗縣內(nèi)具體道路的天氣信息保存到txt文件中,以待發(fā)布交通氣象時(shí)使用。如圖3所示,即為系統(tǒng)的錄入各旗縣天氣的界面及系統(tǒng)的主界面。其中,道路圖的渲染都是在MapControl控件中完成的。
圖3 系統(tǒng)的錄入各旗縣天氣的界面及系統(tǒng)的主界面
4.2 添加輔助要素
在ArcGIS Engine的MapControl控件中生成交通氣象圖后,還要添加圖例比例尺等輔助要素,這些一般都是在PageLayoutControl控件中添加的。因?yàn)殡m然PageLayoutControl控件和MapControl控件都是用于地圖數(shù)據(jù)的可視化的顯示,但是PageLayoutControl控件提供的顯示類(lèi)似ArcMap中的地圖制圖與輸出窗口。因此,在系統(tǒng)的實(shí)現(xiàn)過(guò)程中,實(shí)現(xiàn)MapControl控件與PageLayoutControl控件的聯(lián)動(dòng)。
圖4 添加了輔助要素的交通氣象圖
在ArcEngine對(duì)象模型中,圖名、圖例、指北針和比例尺輔助要素都是從IElement對(duì)象繼承過(guò)來(lái)的。在系統(tǒng)的研發(fā)實(shí)現(xiàn)中,分別利用ArcGIS Engine中的ITextElement、ILegend、IMarkerNorthArrow和IScaleBar 4個(gè)接口實(shí)現(xiàn)創(chuàng)建圖名、圖例、指北針和比例尺的實(shí)例,然后利用IEnvelope接口實(shí)現(xiàn)各要素的位置和大小的鎖定,具體各要素的位置和大小需經(jīng)多次試驗(yàn)調(diào)節(jié)后才能找到比較合適的參數(shù)。從而,通過(guò)以上步驟就完成了各輔助要素的添加,如圖4所示,即為添加了各輔助要素的交通氣象圖。
4.3 導(dǎo)出為圖片
ArcGIS Engine支持地圖視圖以圖形形式輸出的格式常用的主要有:BMP格式、GIF格式、JPEG格式、PDF格式、PNG格式、TIFF格式等。對(duì)于每種格式,ArcGIS Engine都提供了該格式所對(duì)應(yīng)的輸出對(duì)象來(lái)管理圖形的輸出。如對(duì)于BMP格式,ArcGIS Engine提供了ExportBMPClass類(lèi)來(lái)管理該格式的地圖圖形輸出。所有這些格式輸出對(duì)象都實(shí)現(xiàn)了IExport接口,該接口定義的屬性和方法用于管理地圖的圖形輸出。
將地圖以圖形文件形式輸出通常包含4個(gè)步驟:
(1)創(chuàng)建一個(gè)某種格式的圖形輸出對(duì)象;
(2)定義地圖圖形顯示源文件和目標(biāo)文件的分辨率;
(3)定義屏幕顯示目標(biāo)矩形區(qū)域和地圖打印范圍的矩形區(qū)域;
(4)對(duì)輸出對(duì)象發(fā)送輸出指令,開(kāi)始制定格式地圖輸出文件創(chuàng)建過(guò)程。
圖5 系統(tǒng)輸出的公路氣象預(yù)報(bào)圖
系統(tǒng)采用以上步驟,輸出的包頭市公路氣象預(yù)報(bào)圖如圖5所示。將該圖與先前輸出的旗縣天氣和旗縣內(nèi)公路氣象條件的文字描述部分綜合起來(lái),就可發(fā)布到互聯(lián)網(wǎng)上,便于公眾的出行查詢。
作者結(jié)合交通氣象預(yù)報(bào)資料,以包頭市為例,設(shè)計(jì)并實(shí)現(xiàn)了基于ArcGIS Engine的交通氣象預(yù)報(bào)制作系統(tǒng)。系統(tǒng)能夠結(jié)合包頭市公路和每天的天氣預(yù)報(bào)數(shù)據(jù),可直接生成帶有比例尺圖例等輔助要素的交通氣象預(yù)報(bào)圖和交通氣象文字描述部分,并且這兩部分可直接發(fā)布到互聯(lián)網(wǎng),方便地區(qū)公眾的出行查詢。系統(tǒng)生成的交通氣象預(yù)報(bào)圖,雖能部分地說(shuō)明市域范圍內(nèi)的交通氣象情況,但若是結(jié)合一手的氣象數(shù)據(jù),同時(shí)將研究區(qū)內(nèi)更多公路添加進(jìn)來(lái),將能制作更為準(zhǔn)確和全面的交通氣象預(yù)報(bào)系統(tǒng)。
[1] 中國(guó)氣象局.全國(guó)主要公路沿線氣象條件預(yù)報(bào).http:// www.cma.gov.cn/tqyb/v2/product/traffic.php,2010-7-26
[2] 吳瑋,李小帥,張斌.基于ArcGIS Engine的GIS開(kāi)發(fā)技術(shù)探討[J].科學(xué)技術(shù)與工程,2006,6(2):176~178
[3] 韓鵬,王泉,王鵬等.地理信息系統(tǒng)開(kāi)發(fā)—ArcEngine方法[M].武漢:武漢大學(xué)出版社,2008,222~265
Design and Realization of the Traffic Weather Making System
Zhu ZongKui1,Yu XueTao1,Li JinGe2,Jiang ZhiBen3
(1.School of Resources and Earth Science,China University of Mining&Technology,Xuzhou 221116,China;2.Faculty of Safety Engineering,China University of Mining&Technology,Xuzhou 221116,China;3.College of Tourism and Environment,Shaanxi Normal University,Xi’an 710062,China)
After pointing out the defects that these are only a few road lines in the current traffic weather forecast,selecting ArcGIS Engine as the secondary development components,this paper designs and releases the traffic weather making system for the Baotou city.Integrating the weather forecast data form the county in the Baotou city,this system can generate the traffic weather description and the traffic weather forecast maps quickly.Besides,the legend,north arrow,title and scale bar can be added to the map automatically.The description and the maps can be published to the Internet serving for the public directly.So this system fills the missing gaps in our country that provincial and city level meteorological offices do not publish the traffic weather forecast.
Traffic Weather Forecast;ArcGIS Engine;Traffic Weather Forecast Map
1672-8262(2011)01-16-04
P208
A
2010—08—02
朱宗奎(1981—),男,助教,從事學(xué)生行政管理工作。
國(guó)家自然科學(xué)基金資助(40972207)