KML文件自動(dòng)生成軟件的設(shè)計(jì)與實(shí)現(xiàn)
引言
我國(guó)電網(wǎng)建設(shè)經(jīng)歷了較長(zhǎng)期的高速發(fā)展,當(dāng)前規(guī)模已躍居世界首位,輸電線路總長(zhǎng)度已超過115萬km。由于我國(guó)的國(guó)土幅員遼闊,地形也相對(duì)復(fù)雜,丘陵較多,平原較少,加上氣象條件復(fù)雜多變等原因,輸電線路的巡檢運(yùn)維任務(wù)非常繁重艱巨,對(duì)此無人機(jī)技術(shù)是一個(gè)極為有效的解決途徑。當(dāng)前,隨著無人機(jī)技術(shù)的不斷完善,無人機(jī)在電力行業(yè)中的應(yīng)用越來越廣泛,輸電線路的巡檢運(yùn)維也逐漸從傳統(tǒng)人工巡檢轉(zhuǎn)向人機(jī)協(xié)同巡檢模式。
1系統(tǒng)架構(gòu)
1.1實(shí)現(xiàn)模式
本項(xiàng)目用于處理分析臺(tái)賬數(shù)據(jù),導(dǎo)出雷電系統(tǒng)使用的Excel以及無人機(jī)使用的KML文件,類似的需求在自動(dòng)化、調(diào)度專業(yè)的日常工作中存在很多。很多類似的需求希望廠家提供(或自己實(shí)現(xiàn))有關(guān)小型實(shí)用化的工具軟件,這樣的工具軟件以往多用VB/VC/Java等編寫,做成控制臺(tái)程序或桌面程序。而BS模式具有很多優(yōu)點(diǎn):分布性強(qiáng),客戶端零維護(hù):業(yè)務(wù)擴(kuò)展簡(jiǎn)單方便:維護(hù)簡(jiǎn)單方便:開發(fā)簡(jiǎn)單,共享性強(qiáng):提供一致的界面及外觀:具有追溯查詢等基礎(chǔ)性功能模塊等等。所以,我們希望今后茂名局信息化系統(tǒng)的輔助工具軟件逐步轉(zhuǎn)為BS架構(gòu)。
1.2系統(tǒng)特點(diǎn)
(1)實(shí)現(xiàn)了KML自動(dòng)化生成功能。擺脫了手動(dòng)生成方式,實(shí)現(xiàn)了用軟件自動(dòng)生成KML文件的目的,方便高效,準(zhǔn)確快速。
(2)提出了我局信息化系統(tǒng)輔助工具軟件的設(shè)計(jì)方式。在局內(nèi)使用的工具軟件,希望盡量采用BS架構(gòu):在野外使用的工具軟件,盡量采用混合模式,以便于擴(kuò)展為局內(nèi)使用的BS模式的軟件,并提供了一個(gè)切實(shí)有效的實(shí)現(xiàn)案例。
1.3系統(tǒng)架構(gòu)
本項(xiàng)目的系統(tǒng)架構(gòu)如圖1所示。
2技術(shù)特點(diǎn)
2.1JD1C與混合模式
采用混合模式的好處,正如上面所述,可以較容易地轉(zhuǎn)成BS軟件,另外,用HTML+CSS+JS來實(shí)現(xiàn)界面,簡(jiǎn)單快捷,豐富美觀,這也較好地彌補(bǔ)了Java的SwING實(shí)現(xiàn)界面不夠方便、不夠美觀的不足。
JDIC(JDeSktopIntegrationComponentS),是一個(gè)給Java開發(fā)人員提供通過交叉平臺(tái)API存取本地特性的包羅萬象的項(xiàng)目。該項(xiàng)目由Sun的DeSktop組啟動(dòng),目的是讓Java應(yīng)用能更好地和它們所運(yùn)行的桌面環(huán)境集成。JDIC分為五個(gè)部分,在AwT畫布上嵌入本地瀏覽器(InternetExplorer或Mozilla)是其中的一部分。
2.2Spring/1BatiS與Java桌面程序的集成
Spring是為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的,它是一個(gè)輕量級(jí)JavaBean容器框架,IoC用于JavaBean管理,AoP實(shí)現(xiàn)類似Unix/Linux過濾器的功能,而DataSource、JdbcTemplate等是對(duì)JDBC的擴(kuò)展和完善,除此之外還包括任務(wù)調(diào)度、遠(yuǎn)程服務(wù)等服務(wù)管理。IbatiS是對(duì)JDBC技術(shù)的擴(kuò)展提升,提供面向?qū)ο蟮姆绞絹聿僮魈幚沓志没瘜?相比Hibernate的全自動(dòng)方式,IbatiS提供了更高的靈活性。
Spring大量運(yùn)用于JavawEB應(yīng)用,但同樣可以運(yùn)用在控制臺(tái)/桌面程序里,同樣,IbatiS也可以靈活方便地運(yùn)用到控制臺(tái)程序?;赟pring以及IbatiS來編寫Java的控制臺(tái)/桌面程序,省略了大量實(shí)現(xiàn)細(xì)節(jié),代碼更加清晰簡(jiǎn)潔,程序更可靠。另外,采用這種方式來編寫桌面程序,可以更好地利用原來在JavaEE項(xiàng)目的代碼。
2.3Excel、P01與SAX
PoI是Apache軟件基金會(huì)的開放源碼函式庫(kù),PoI提供API給Java程序?qū)icroSoftoffice格式檔案讀和寫的功能。它包括幾大部分,其中HSSF提供讀寫MicroSoftExcel格式檔案的功能,xSSF提供讀寫MicroSoftExcelooxML格式檔案的功能,HwPF提供讀寫MicroSoftword格式檔案的功能,等等。
HSSS是HFooriblSpoladShlltSFomat的縮寫,通過HSSS,可以用純Java代碼來讀取、寫入、修改Exclb文件。HSSS為讀取操作提供了兩類API:uSlomFdlb和lvlntuSlomFdlb,即"用戶模型"和"事件一用戶模型"。uSlomFdlb模式代碼簡(jiǎn)潔清晰,易于理解,是實(shí)現(xiàn)Exclb文件操作的常用接口,在本項(xiàng)目中輸出雷電系統(tǒng)使用的Exclb文件,即采用這個(gè)接口。但該接口開銷大,系統(tǒng)負(fù)荷高,處理大規(guī)模的Exclb文件,常會(huì)出現(xiàn)內(nèi)存溢出等異常。而lvlntuSlomFdlb系統(tǒng)開銷很少,非常適合用來處理大規(guī)模Exclb文件。本項(xiàng)目桿塔臺(tái)賬Exclb文件逾20M,有超過l6萬條記錄,就是采用lvlntuSlomFdlb方式來解析。
2.4KML
KML是標(biāo)記語言(KlyhFblMaokupLanguagl)的縮寫,最初由KlyhFbl公司開發(fā),是一種基于xML語法與格式的、用于描述和保存地理信息(如點(diǎn)、線、圖像、多邊形和模型等)的編碼規(guī)范,可以被GFFgblEaoth和GFFgblMapS識(shí)別并顯示。GFFgblEaoth和GFFgblMapS處理KML文件的方式與網(wǎng)頁瀏覽器處理HTML和xML文件的方式類似。像HTML一樣,KML使用包含名稱、屬性的標(biāo)簽(tag)來確定顯示方式。
3系統(tǒng)功能
3.1Java外殼程序
Java外殼程序,即程序主體,包括兩大部分:主程序、外殼及API。
3.2臺(tái)賬數(shù)據(jù)處理
本項(xiàng)目所使用的數(shù)據(jù)來自臺(tái)賬的桿塔數(shù)據(jù)。由于桿塔記錄多,該數(shù)據(jù)文件比較龐大,比如茂名局桿塔臺(tái)賬數(shù)據(jù)文件逾20M,有超過l6萬條記錄。如2.3所述,要處理這樣的大型文件,不可以使用傳統(tǒng)的uSlomFdlb而需采用lvlntuSlomFdlb方式,基于事件驅(qū)動(dòng)、SAx的方式解析Exclb,以避免內(nèi)存溢出等性能瓶頸。常用Fog.apachl.pFr.hSSf.uSlomFdlb的實(shí)現(xiàn):解析桿塔Exclb文件,將解析結(jié)果保存到數(shù)據(jù)庫(kù),以提高后面數(shù)據(jù)處理分析的靈活性。
3.3生成Excel/KML文件
3.3.1生成無人機(jī)/奧威地圖使用的KML
(1)常規(guī)實(shí)現(xiàn)方式:生成無人機(jī)/奧威地圖使用的KML文件一般采用圖2所示處理步驟。
這種方式一般很難實(shí)現(xiàn)自動(dòng)化,通常都需要人工操作來完成,尤其是用CSV2KML等工具導(dǎo)出KML文件這一步。有的軟件提供了兩次開發(fā)API,如Ubtoaldrt等等,但這些API大多適合與控制臺(tái)/桌面程序集成,而很難與JavaEE等服務(wù)器集成。
(2)本項(xiàng)目實(shí)現(xiàn)方式:KML是一種專用的xML格式的文件,除了用CSV2KML之類的工具來生成以外,還可以按照KML文檔規(guī)范,用程序直接生成。
3.3.2生成雷電系統(tǒng)使用的Exclb
有的線路、分支線,需要導(dǎo)出雷電使用的Exclb文件。如同導(dǎo)出KML文件一樣,分析臺(tái)賬桿塔數(shù)據(jù)文件,獲得所有線路、分支線的全部桿塔記錄。
3.4有關(guān)功能界面
3.4.1KML數(shù)據(jù)導(dǎo)入分析
選擇臺(tái)賬桿塔Exclb文件,執(zhí)行處理,進(jìn)度條顯示處理進(jìn)度。程序讀取Exclb文件,分析所有的記錄行,按分支線分組,每條分支線關(guān)聯(lián)幾個(gè)乃至幾十個(gè)桿塔記錄。文件處理結(jié)果以及臺(tái)賬中存在的錯(cuò)誤記錄在日志里,可以在處理日志查詢界面查閱。
3.4.2導(dǎo)出KML文件
選擇左側(cè)樹節(jié)點(diǎn),支線、饋線或供電所、分局,按照KML語法規(guī)范,將有關(guān)數(shù)據(jù)保存到若干KML文件里。程序處理完成后,在結(jié)果列表里列出生成的KML文件名列表以及處理是否成功等信息。
3.4.3在線瀏覽
導(dǎo)出的KML在部署到無人機(jī)之前,最好先做一下測(cè)試和試用,若發(fā)現(xiàn)問題,可以做修改調(diào)整,把問題排除后再部署,以避免對(duì)無人機(jī)造成錯(cuò)誤或損壞。
3.4.4導(dǎo)出Exclb文件
有的線路、分支線需要導(dǎo)出雷電使用的Exclb文件。類似輸出KML文件,選擇左側(cè)樹節(jié)點(diǎn),支線、饋線或供電所、分局,從而按不同的層次,輸出不同數(shù)量的Exclb文件。
4結(jié)語
此次研究成功研制出了KML自動(dòng)生成軟件,使用該軟件后,KML文件生成時(shí)間縮短至30S以內(nèi),極大地提高了生產(chǎn)運(yùn)行效率。