謝祎 楊建欽 岳翔 呼和



摘要:針對服務GIS平臺,本文研究了GIS結合ECharts實現統計圖功能的技術與方法。著重闡述了通過兩種設計模式重新構造創建和調用插件接口,并提出了設計重構接口的原則和思路。最后通過項目實踐驗證了在這些原則思路在GIS平臺中的推廣應用中的效果及意義。
關鍵詞:海洋石油;GIS平臺;ECharts;設計模式
中圖分類號:TP391? 文獻標識碼:A
文章編號:1009-3044(2019)24-0018-02
開放科學(資源服務)標識碼(OSID):
基于純Web前臺技術的GIS平臺作為一種跨平臺、可運行于移動設備的新型可視化工具,目前在海洋石油很多系統中得到了廣泛的應用,為海洋石油中下游信息化提供了強大的GIS圖形化支撐。統計圖以其形象具體、簡明生動、通俗易懂、一目了然的特點成在很多信息化應用中成為必備的功能。在海洋石油使用GIS平臺的眾多應用中都提出了對統計圖功能的需求。
本文介紹了利用軟件設計模式中的工廠及外觀模式對現目前流行的ECharts統計圖開源代碼包進行重新包裝設計,為功能使用者提供能方便融入現有GIS平臺、針對業務邏輯的、簡單易用的調用接口,為現有系統使用開源代碼擴展新功能提供了一種成熟可行的思路。
1 研究思路及實現步驟
1.1 研究思路
GIS平臺作為一個跨專業、多應用和集中展示的海洋石油專業業務的綜合工作平臺,服務于海洋石油勘探開發業務的科研、管理及決策工作。該平臺在海油勘探、開發等專業已經有很好地應用,并取得了很好的效果。基于多個應用需求,GIS急需在平臺中加入統計圖功能。經過調研,ECharts開源庫成為最優方案。ECharts是一個當前流行功能強大的統計圖表可視化開源功能庫,使用純Web前端技術實現,可以流暢地運行在 PC 和移動設備上,兼容當前絕大部分瀏覽器(IE8/9/10/11,Chrome,Firefox,Safari等),提供直觀,交互豐富,可高度個性化定制的數據可視化圖表以及常規的折線圖、柱狀圖、散點圖、餅圖、K線圖,非常契合當前GIS平臺對統計圖功能的使用要求。實現統計圖功能的思路就是將ECharts開源包融合進GIS平臺,并給統計功能使用者提供簡單易用的調用接口。
1.2 面臨的問題
由于ECharts功能強大,覆蓋領域較廣,導致其參數系統設置復雜,學習使用較為困難,需要有經驗的開發者經過較長時間習才能掌握。另外ECharts還需要和現有GIS平臺融合,這需要二次開發人員對GIS平臺本身有較深入了解,這在實際應用中就大大增加了使用難度,延長了開發周期,增加了開發成本,不利于其在各專業系統的推廣應用。為了解決上述問題,首先要實現GIS平臺和ECharts整合,讓后續使用該功能的開發者無須關注ECharts融入GIS平臺的細節。第二,對于最需要花時間進行學習設置的復雜參數進行接口簡化,讓后繼開發者只需關注和實際業務邏輯相關的統計數據、標題等參數設置。
2 實現步驟
2.1 使用工廠模式對創建過程進行封裝
對于ECharts的整合問題,我們決定采用軟件設計中的工廠模式,工廠模式是一種實例化對象模式,是用工廠方法代替new操作的一種模式,在工廠模式中,我們在創建對象時不會對客戶端暴露創建邏輯,而是通過使用一個共同的接口來返回新創建的對象。
在具體實現中,創建能被GIS使用的ECharts實例的復雜邏輯被隱藏在創建工廠中,二次開發人員在創建ECharts只需要編寫簡單代碼,如下所示:
var myEChart = L.echartsFactory.createInstance([30, 118], [160, 160], map, "marker002");
調用者只需指定要顯示的位置、大小、以及可后繼對其進行操控的ID,即可創建出已經和GIS平臺融合好的ECharts實例。使用者完全不用關注ECharts和GIS平臺的融合問題。
2.1.2 使用外觀模式重新設計調用接口
對于ECharts原有功能調用接口過于復雜,需要大量時間學習才能掌握的問題。我們運用外觀模式對調用接口進行了重新封裝設計。外觀模式(Facade Pattern)屬于結構型設計模式,它向現有的系統添加一個接口,來隱藏系統的復雜性,降低訪問復雜系統的內部子系統時的復雜度,簡化客戶端與之的接口。這種模式涉及一個單一的類,該類提供了客戶端請求的簡化方法和對現有系統類方法的委托調用。
如圖1所示,在原有設計中,用戶調用系統功能時,每個用戶對各子系統以及子系統間的相互關系都要進行學習了解,這直接導致開發難度加大,開發周期變長。且用戶程序和各系統間形成緊耦合,不利于將來的系統升級維護。
圖2的方案用外觀模式加了統一的高層接口,該高層接口負責和子系統進行交互,每個用戶不必需要了解子系統的細節,只需調用這個經過簡化的面向業務邏輯高層接口就可以。在GIS項目的具體實施中,我們給ECharts設計添加了外層裝飾類(EChartsDecorator),對外只提供設置統計數據、設置統計圖標題、顯示、關閉等和業務邏輯相關的接口。調用者不必關注ECharts內部技術細節,讓開發人員很短時間內就能學習掌握,大大提高了開發效率。 示例代碼:
myEChart.setTitle('我的項目圖1'); //設置統計圖標題
myEChart.setXAxis(['地質儲量(公司)', '地質儲量(國家)', '技術可采(公司)', '技術可采(國家)', '經濟可采(公司)', '經濟可采(國家)', '經濟可采(上市)']); //設置X軸各列名稱
var series = [ //統計數據
{ name: 'P1', data: [xxxxxx.x, xxxxxx.xx, xxxxxxx.xx, xxxxx.xx, xxxxx.xx, xxxxx.xx, xxxxx.xx],},
{ name: 'P2', data: [xxxxxx.xx, xxxxx.xx, xxxxx.xx, xxxxx.xx, xxxx.x, x, xxxx.xx], },
{ name: 'P3', data: [xxxxx.xx, xxxxx.xx, xxxxx.xx, xxxx.xx, x.xx, x, xxx.xx], },
];
myEChart.setSeriesData(series); //設置統計數據
myEChart.showChart(); //開始顯示統計圖
如上例代碼所示,后續開發者只需提供具體的統計圖數據、統計圖名稱、坐標名稱等和用戶業務邏輯相關的參數,即可實現統計圖功能。調用接口直觀易懂,開發人員很容易理解掌握,短時間內就可實現項目需求,方便了其在各專業項目的推廣使用。
2.2 應用效果
如圖3所示,GIS平臺主界面的是海洋石油海域GIS遙感底圖。粉紅色多邊形是加載的油氣田空間對象,上面顯示的則是其生產數據相關的統計圖(虛構數據)。目前GIS平臺的統計功能已應用于公司的油氣儲量評估及管理系統,并取得了良好的應用效果。
3 應用意義
針對海洋石油勘探專業的需求目標,為原有的GIS添加了統計圖功能接口。其重要的實用意義在于:
1) GIS平臺有了瀏覽空間對象的統計圖功能,大大增強了GIS平臺滿足應用需求的能力。
2)并且通過此次實踐,摸索出了一套簡化復雜接口的模式。大大縮短了未來開發者學習使用GIS統計功能的周期,方便了GIS平臺的推廣應用,這種設計原則非常適合應用于GIS平臺未來新功能接口的開發。
參考文獻:
[1] 張云飛,張欽,楊建欽,等. 基于空間對象的公共GIS模型及其在海洋石油信息化中的應用.中國海上油氣,2009 21(3); 211-214.
[2] ECharts2.0 官網[EB/OL]. http://echarts.baidu.com/echarts2/index.html
[3] [日] 結城浩. 圖解設計模式[M].北京:人民郵電出版社,2017.
【通聯編輯:梁書】