趙生昊,劉恒毅,劉青松,余蜀豫
(1.重慶市防雷中心 重慶 401147;2.中國氣象科學(xué)研究院 北京 100081)
基于ArcGIS Engine的閃電定位資料查詢系統(tǒng)設(shè)計(jì)
趙生昊1,劉恒毅2,劉青松1,余蜀豫1
(1.重慶市防雷中心 重慶401147;2.中國氣象科學(xué)研究院 北京100081)
為了更加有效的利用重慶市全閃電定位系統(tǒng)資源,基于ArcGIS Engine開發(fā)組件設(shè)計(jì)了全閃電定位資料查詢系統(tǒng)。針對閃電資料的特點(diǎn)構(gòu)造了定位信息空間數(shù)據(jù)庫,通過監(jiān)控以及批量方式將閃電定位資料存儲在數(shù)據(jù)庫中;針對閃電定位資料的應(yīng)用場景,使用網(wǎng)絡(luò)地圖作為顯示地圖,結(jié)合屬性及空間查詢設(shè)計(jì)了完善的閃電信息查詢方式,使用符號化及地圖提示增加了應(yīng)用的互動(dòng)性及易用性。通過實(shí)際應(yīng)用可知,該查詢系統(tǒng)高效易用,能夠很好的服務(wù)于防雷工作。關(guān)鍵詞:閃電定位系統(tǒng);地理數(shù)據(jù)庫;ArcGIS Engine;GIS
隨著信息化與數(shù)字化程度的不斷提高,雷電災(zāi)害所波及的范圍越來越廣,引發(fā)的經(jīng)濟(jì)損失也越來越大,對雷電活動(dòng)的監(jiān)測及預(yù)報(bào),是減少雷電災(zāi)害的有效手段。閃電探測定位系統(tǒng)作為雷電監(jiān)測研究領(lǐng)域的核心,近年來在國內(nèi)外發(fā)展迅速,在重慶市已經(jīng)有兩套閃電定位系統(tǒng)先后投入運(yùn)行,即ADTD閃電定位系統(tǒng)和目前正在試運(yùn)行的全閃電定位系統(tǒng),其中全閃電定位系統(tǒng)[1]增加了對云閃的監(jiān)測,在中小尺度災(zāi)害性天氣過程的實(shí)時(shí)監(jiān)測和預(yù)警預(yù)報(bào)方面具有重要的意義。
閃電定位信息數(shù)據(jù)量巨大且有著鮮明的時(shí)空特性,在實(shí)現(xiàn)有效的閃電監(jiān)測手段的同時(shí),通過GIS技術(shù)將定位資料地理信息化,并在此基礎(chǔ)上進(jìn)行閃電信息的數(shù)據(jù)管理、可視化、查詢分析等[2-4],既是客觀需求,也能更加有效的利用閃電定位資源,使其在研究雷電特征、雷電災(zāi)情評估、建筑物防雷設(shè)計(jì)方面發(fā)揮更大的作用。體系,如圖1所示,分別為采集層、數(shù)據(jù)層及應(yīng)用層。采集層即全閃電定位系統(tǒng),包括一個(gè)中心站和諸多探測子站,之間通過氣象內(nèi)網(wǎng)連接,探測子站不間斷地將采集數(shù)據(jù)傳回中心站,中心站通過定位程序?qū)崟r(shí)處理子站回傳數(shù)據(jù)從而獲得閃電的各項(xiàng)參數(shù)。應(yīng)用層通過界面提供對閃電資料的查詢、分析,并將結(jié)果以圖形化展示出來。數(shù)據(jù)層包括一個(gè)標(biāo)準(zhǔn)的地理信息數(shù)據(jù)庫,數(shù)據(jù)庫承接采集層和應(yīng)用層,可以為閃電信息的存儲及查詢提供接口,還包括一個(gè)用于顯示地圖的地圖服務(wù)。本文中的開發(fā)主要針對數(shù)據(jù)層和應(yīng)用層。
通過需求分析,可以將閃電資料查詢系統(tǒng)分為3層結(jié)構(gòu)
圖1 系統(tǒng)架構(gòu)圖Fig.1 System architecture diagram
2.1定位資料數(shù)據(jù)庫設(shè)計(jì)
目前,全閃電定位系統(tǒng)的定位數(shù)據(jù)采用TXT文本格式存儲,定位程序每1分鐘產(chǎn)生一個(gè)記錄格式化閃電信息的txt文件,TXT文件雖然有著不錯(cuò)的兼容性,但其不利于高效的數(shù)據(jù)分析,管理不便且不支持網(wǎng)絡(luò)并發(fā)讀取,且閃電定位資料信息量巨大,在此基礎(chǔ)上要進(jìn)行特定時(shí)間段及特定區(qū)域的閃電信息查詢基本上是不可能的。SQL Server是目前廣泛應(yīng)用的大型多線程關(guān)系型數(shù)據(jù)庫,執(zhí)行效率較高,硬件要求低,易于開發(fā)維護(hù),在2008版本中更是提供了原生的對空間數(shù)據(jù)的全面支持,可以通過內(nèi)置方法進(jìn)行空間形狀的構(gòu)造、操作及關(guān)系查詢。
使用ArcMap在SQL Server中建立企業(yè)地理數(shù)據(jù)庫并建立一個(gè)點(diǎn)要素類 (表),要素表作為要素類可直接被ArcGIS讀取,為加快加載速度,要素表只包含默認(rèn)的OBJECTID、SHAPE以及用于渲染的放電類型字段。隨后建立一個(gè)屬性表,屬性表包括定位結(jié)果中的閃電特征參數(shù),如時(shí)間、經(jīng)緯度、強(qiáng)度、陡度、誤差等,兩個(gè)表之間關(guān)系如圖2所示。因?yàn)殚W電資料分析中經(jīng)常希望查詢某一行政區(qū)劃內(nèi)的閃電,因此可以在入庫時(shí)使用 SQL Server內(nèi)建的幾何關(guān)系函數(shù)STIntersects確定閃電所屬的行政區(qū)劃范圍,可大大加快查詢速度。
圖2 閃電資料數(shù)據(jù)庫表關(guān)系圖Fig.2 Table relationships of lightning database
2.2閃電數(shù)據(jù)入庫
閃電數(shù)據(jù)向數(shù)據(jù)庫中的存儲可以分為即時(shí)和批量兩種方式,即時(shí)入庫方式監(jiān)控TXT定位文件的生成,生成后立即進(jìn)行入庫操作;批量入庫是針對某些文件的一次性批量入庫。每條閃電信息的各項(xiàng)參數(shù)是按格式逐行放置在TXT定位文件中,因此可以循環(huán)讀取并解析出各項(xiàng)參數(shù)進(jìn)行入庫操作。
一般來講,在ArcGIS Engine開發(fā)中,要素類的插入通過ICursor以及 IBuffer接口進(jìn)行,但在實(shí)際使用中,由于ArcEngine的內(nèi)存管理存在諸多不完善的地方,當(dāng)進(jìn)行大批量數(shù)據(jù)插入操作時(shí),很容易耗盡系統(tǒng)資源導(dǎo)致運(yùn)行遲緩,因此考慮使用SQL語句直接插入。其中要素表SHAPE字段使用geometry類型存儲,可使用SQL Server內(nèi)置方法geometry:: STGeomFromText()由經(jīng)緯度生成,為保證OBJECTID字段唯一性,使用地理數(shù)據(jù)庫內(nèi)置存儲過程next_newid獲得每個(gè)要素ID;由于每條閃電數(shù)據(jù)的波形名稱具有唯一性,屬性表以波形名為主鍵并建立唯一索引,以對應(yīng)的OBJECTID為外鍵,然后進(jìn)行其他各項(xiàng)插入,并以此在數(shù)據(jù)庫內(nèi)建立一個(gè)存儲過程。
C#中的FileSystemWatcher控件能夠監(jiān)控指定文件或目錄的文件的創(chuàng)建、刪除、改動(dòng)、重命名等活動(dòng),可以動(dòng)態(tài)地定義需要監(jiān)控的文件類型及文件屬性改動(dòng)的類型,所以可使用FileSystemWatcher控件監(jiān)控存放TXT定位數(shù)據(jù)的文件夾,如果有TXT定位文件被創(chuàng)建則讀取解析調(diào)用存儲過程進(jìn)行插入操作,由于FileSystemWatcher在單獨(dú)線程中進(jìn)行事件處理,即便在多個(gè)TXT定位文件同時(shí)生成的情況下也能做到即時(shí)入庫。入庫成功的文件可以刪除或者轉(zhuǎn)移到其他文件夾,以方便對沒有及時(shí)入庫或是入庫失敗的文件進(jìn)行后續(xù)處理。具體流程如圖3所示。
圖3 閃電資料存儲流程圖Fig.3 Flow chart of the lightning data storage
3.1底圖選擇
底圖即地圖中最基本的地物外形數(shù)據(jù)及一定的相關(guān)附加信息(例如道路名,河流名等),在閃電定位數(shù)據(jù)的顯示使用底圖可以增加直觀性[5]。在以往的GIS應(yīng)用中,一般采用包括地形(數(shù)字高程模型)、水系、交通、行政區(qū)劃 (包括縣界及市、縣、鄉(xiāng)鎮(zhèn) 、村地理位置)等信息的矢量地圖作為底圖,但在實(shí)際應(yīng)用中,往往希望知道閃電發(fā)生的確切位置,比如某市某區(qū)某小區(qū),通過一般途徑獲得的矢量地圖信息通常不能如此完善,或是比較滯后。而網(wǎng)絡(luò)地圖服務(wù)如百度地圖、谷歌地圖等信息全面,更新迅速,適合作為底圖使用。涉及到商業(yè)授權(quán)因素,Arc Engine并不直接提供使用網(wǎng)絡(luò)地圖服務(wù)的接口。因此可以使用GIS服務(wù)器(如ArcGIS Server、GeoServer等)自建一個(gè)WMTS地圖服務(wù),通過解析網(wǎng)絡(luò)地圖服務(wù)的URL下載各層級下的地圖切片來組織緩存,客戶端通過ArcEngine的IWMTSLayer接口調(diào)用此地圖服務(wù)并顯示出來,效果如圖4所示。
圖4 定位資料顯示界面Fig.4 The lightning data display interface
3.2查詢功能實(shí)現(xiàn)
ArcGIS 10中引入了查詢圖層(QueryLayer)的新特性,查詢圖層是一個(gè)由 SQL查詢定義的圖層或獨(dú)立表,可以通過定義SQL語句來創(chuàng)建查詢圖層,并將結(jié)果集以圖層或獨(dú)立表的形式 (取決于查詢本身)添加到 ArcMap中。與以往的Definition Query方式比較,查詢圖層查詢功能強(qiáng)大,可以隨時(shí)修改查詢條件,可以自定義感興趣的字段。
閃電信息的查詢總體上可以稱為屬性查詢及空間查詢兩種方式的結(jié)合[6]。在使用查詢圖層的情況下,屬性查詢較為簡單,直接構(gòu)造SQL語句即可,空間查詢則較復(fù)雜,如果是基于行政區(qū)劃的查詢可以依前文所敘,在入庫時(shí)將獲得閃電發(fā)生地點(diǎn),可以轉(zhuǎn)為屬性查詢;但在實(shí)際使用中,往往希望查詢某個(gè)地點(diǎn)附近范圍內(nèi)的閃電或是一個(gè)小區(qū)區(qū)域內(nèi)的閃電信息,如果使用ArcEngine中提供的接口,在屬性查詢的結(jié)果集中采用Spatial Filter(空間過濾),則效率比較低下,SQL Server中內(nèi)置了空間關(guān)系方法可以進(jìn)行空間查詢,但需要將查詢區(qū)域轉(zhuǎn)換為 SQL Server可以識別的形狀,因此可以在ArcEngine中將需查詢的范圍構(gòu)造為Polygon,通過IWKB接口轉(zhuǎn)為二進(jìn)制流,最后在SQL Server中以STGeomFromWKB方法將查詢區(qū)域還原并與閃電進(jìn)行相交查詢,這樣就有效提高了查詢效率。查詢界面如圖5所示。
3.3要素符號化及地圖提示(Map Tips)
要素的符號化決定著要素以何種面目展現(xiàn)給使用者,具有重要意義。就本文所利用的全閃電定位系統(tǒng)定位數(shù)據(jù)舉例,其可探測到閃電的類型有云閃(IC)、地閃(CG)以及窄脈沖袖珍放電(NBE)3種,每種閃電又具有正負(fù)兩種極性,為便于觀察分析,需要用不同的符號將其渲染出來[7],在此種種類明確的情況下,適合使用UniqueValueRenderer(唯一值渲染)進(jìn)行查詢圖層符號化,指定閃電類型為渲染字段,通過IColor 與ICharacterMarkerSymbol接口設(shè)置每種閃電的顏色及符號;如果希望將閃電以不同的時(shí)間段、高度、強(qiáng)度進(jìn)行符號化染,則適合使用ClassBreakRenderer(分級著色)。
圖5 閃電資料查詢界面Fig.5 The lightning data query interface
ArcEngine提供了Map Tips功能,即鼠標(biāo)在地圖控件上懸停時(shí),對指定圖層[8]在此位置要素的指定字段顯示提示文本。默認(rèn)情況下,僅支持指定一個(gè)字段的顯示,對于定位信息來說顯然是不夠的。FeatureLayer實(shí)現(xiàn)的IDisplay Expression Properties接口支持VBScript和Jscript格式的文本顯示,通過此接口,可以同時(shí)顯示多個(gè)字段的信息,如圖3所示,方便隨時(shí)了解感興趣的閃電的各種參數(shù),增強(qiáng)了軟件的互動(dòng)性。
3.4屬性表的顯示及導(dǎo)出
通過屬性表可以概覽查詢結(jié)果中各條閃電的屬性信息[9],進(jìn)行排序、篩選、導(dǎo)出等操作,導(dǎo)出的數(shù)據(jù)可以在其他軟件中進(jìn)行進(jìn)一步的處理。屬性表的顯示比較容易實(shí)現(xiàn),實(shí)際開發(fā)中,可以實(shí)例化一個(gè)DataTalble,添加需要顯示的字段,需要注意的是應(yīng)將各字段的數(shù)據(jù)類型與ArcEngine數(shù)據(jù)類型相匹配,利用ITable接口引出查詢結(jié)果圖層要素類,并使用游標(biāo)將其屬性循環(huán)插入,最后使用C#的DataGridViewer控件綁定DataTable并顯示之。將DataGridViewer導(dǎo)出到Excel表格的方法有很多,在此不再贅述。
本文所實(shí)現(xiàn)的閃電定位資料查詢系統(tǒng),基于 ArcGIS Engine開發(fā)組件,從全局著眼,對閃電資料存儲管理,圖形化、分析等各環(huán)節(jié),提出了解決思路,特別是在數(shù)據(jù)存儲及空間查詢方面,并沒有完全依賴于ArcGIS Engine,而是兼顧兼容性與效率性做出了一些改進(jìn),能夠快速實(shí)現(xiàn)大量數(shù)據(jù)的查詢顯示。在實(shí)際使用中,還可以此為基礎(chǔ),增加一些諸如動(dòng)態(tài)實(shí)時(shí)顯示、專題圖表繪制等功能,最大化的利用閃電定位資料,使其更好地為防雷服務(wù)提供科學(xué)依據(jù)。
[1]董萬勝,張義軍,王濤,等.A New VLF-VHF Dual Band Lightning Detection and Location System in China and the Preliminary Results[C].第十一屆中國科協(xié)年會(huì)中國國際防雷減災(zāi)論壇,2009.
[2]荊平.基于C#的地理信息系統(tǒng)設(shè)計(jì)與開發(fā)[M].北京:清華大學(xué)出版社,2013.
[3]樊榮,馬金福,李京校,等.數(shù)據(jù)庫技術(shù)在閃電定位系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2013,33:115-117.
[4]石嵐,關(guān)作正,徐麗娜,等.基于GIS技術(shù)的呼倫貝爾地區(qū)雷電監(jiān)測及應(yīng)用[J].內(nèi)蒙古大學(xué)學(xué)報(bào):自然科學(xué)版,2009,40(1):113-118.
[5]張澄鋮,邱新法,何永健.基于Flex和Google Map的雷電數(shù)據(jù)可視化研究[J].地理空間信息,2012,10(5):67-69.
[6]蘭小機(jī),王飛,彭濤.基于ArcGIS Engine的查詢信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].金屬礦山,2008(2):112-114.
[7]王瑜,閆沫.基于LabWindows CVI的扭矩扳手?jǐn)?shù)據(jù)處理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2014(1):51-53.
[8]劉鐸,黃曉燕.基于Direct3D技術(shù)的VTS雷達(dá)PPI顯示優(yōu)化設(shè)計(jì)[J].電子科技,2014(5):5-7,11.
[9]張偉昆,黃煒,張大偉.基于多信號屬性表建模提高測試性設(shè)計(jì)方法[J].測控技術(shù),2015(9):46-49.
Design of lighting position data query system based on ArcGIS Engine
ZHAO Sheng-hao1,LIU Heng-yi2,LIU Qing-song1,YU Shu-yu1
(1.Lightning Protection Center of Chongqing,Chongqing 401147,China;2.Chinese Academy of Meteorological Sciences,Beijing 100081,China)
In order to use of the lightning locating system resources more effective in Chongqing,based on ArcGIS Engine Developer components,launch the research from the application of three-dimensional lightning location data.According to the characteristics of location data to construct the lightning information spatial database,store location data in to the database by batch mode or monitor mode;for application scenarios of lightning location data,using the network map service as a display map,combined with attributes query and spatial query designing the complete lightning information query mode,use symbolic and map tips increase application's usability.Through the practical application,the query system is efficient and easy to use on lightning protection service.
lightning position system;geodatabase;ArcGIS Engine;GIS
TN915
A
1674-6236(2016)01-0016-03
2015-04-22稿件編號:201504249
國家公益性行業(yè)科研專項(xiàng)(GYHY201306069);重慶市氣象局青年基金項(xiàng)目(QNJJ-201409)
趙生昊(1984—),男,重慶人,碩士,工程師。研究方向:雷電防護(hù)。