国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

設(shè)計(jì)模式實(shí)現(xiàn)ECharts在GIS中的快速應(yīng)用

2019-11-03 13:11謝祎楊建欽岳翔呼和
電腦知識(shí)與技術(shù) 2019年24期
關(guān)鍵詞:海洋石油設(shè)計(jì)模式

謝祎 楊建欽 岳翔 呼和

摘要:針對(duì)服務(wù)GIS平臺(tái),本文研究了GIS結(jié)合ECharts實(shí)現(xiàn)統(tǒng)計(jì)圖功能的技術(shù)與方法。著重闡述了通過兩種設(shè)計(jì)模式重新構(gòu)造創(chuàng)建和調(diào)用插件接口,并提出了設(shè)計(jì)重構(gòu)接口的原則和思路。最后通過項(xiàng)目實(shí)踐驗(yàn)證了在這些原則思路在GIS平臺(tái)中的推廣應(yīng)用中的效果及意義。

關(guān)鍵詞:海洋石油;GIS平臺(tái);ECharts;設(shè)計(jì)模式

中圖分類號(hào):TP391? 文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2019)24-0018-02

開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):

基于純Web前臺(tái)技術(shù)的GIS平臺(tái)作為一種跨平臺(tái)、可運(yùn)行于移動(dòng)設(shè)備的新型可視化工具,目前在海洋石油很多系統(tǒng)中得到了廣泛的應(yīng)用,為海洋石油中下游信息化提供了強(qiáng)大的GIS圖形化支撐。統(tǒng)計(jì)圖以其形象具體、簡明生動(dòng)、通俗易懂、一目了然的特點(diǎn)成在很多信息化應(yīng)用中成為必備的功能。在海洋石油使用GIS平臺(tái)的眾多應(yīng)用中都提出了對(duì)統(tǒng)計(jì)圖功能的需求。

本文介紹了利用軟件設(shè)計(jì)模式中的工廠及外觀模式對(duì)現(xiàn)目前流行的ECharts統(tǒng)計(jì)圖開源代碼包進(jìn)行重新包裝設(shè)計(jì),為功能使用者提供能方便融入現(xiàn)有GIS平臺(tái)、針對(duì)業(yè)務(wù)邏輯的、簡單易用的調(diào)用接口,為現(xiàn)有系統(tǒng)使用開源代碼擴(kuò)展新功能提供了一種成熟可行的思路。

1 研究思路及實(shí)現(xiàn)步驟

1.1 研究思路

GIS平臺(tái)作為一個(gè)跨專業(yè)、多應(yīng)用和集中展示的海洋石油專業(yè)業(yè)務(wù)的綜合工作平臺(tái),服務(wù)于海洋石油勘探開發(fā)業(yè)務(wù)的科研、管理及決策工作。該平臺(tái)在海油勘探、開發(fā)等專業(yè)已經(jīng)有很好地應(yīng)用,并取得了很好的效果?;诙鄠€(gè)應(yīng)用需求,GIS急需在平臺(tái)中加入統(tǒng)計(jì)圖功能。經(jīng)過調(diào)研,ECharts開源庫成為最優(yōu)方案。ECharts是一個(gè)當(dāng)前流行功能強(qiáng)大的統(tǒng)計(jì)圖表可視化開源功能庫,使用純Web前端技術(shù)實(shí)現(xiàn),可以流暢地運(yùn)行在 PC 和移動(dòng)設(shè)備上,兼容當(dāng)前絕大部分瀏覽器(IE8/9/10/11,Chrome,F(xiàn)irefox,Safari等),提供直觀,交互豐富,可高度個(gè)性化定制的數(shù)據(jù)可視化圖表以及常規(guī)的折線圖、柱狀圖、散點(diǎn)圖、餅圖、K線圖,非常契合當(dāng)前GIS平臺(tái)對(duì)統(tǒng)計(jì)圖功能的使用要求。實(shí)現(xiàn)統(tǒng)計(jì)圖功能的思路就是將ECharts開源包融合進(jìn)GIS平臺(tái),并給統(tǒng)計(jì)功能使用者提供簡單易用的調(diào)用接口。

1.2 面臨的問題

由于ECharts功能強(qiáng)大,覆蓋領(lǐng)域較廣,導(dǎo)致其參數(shù)系統(tǒng)設(shè)置復(fù)雜,學(xué)習(xí)使用較為困難,需要有經(jīng)驗(yàn)的開發(fā)者經(jīng)過較長時(shí)間習(xí)才能掌握。另外ECharts還需要和現(xiàn)有GIS平臺(tái)融合,這需要二次開發(fā)人員對(duì)GIS平臺(tái)本身有較深入了解,這在實(shí)際應(yīng)用中就大大增加了使用難度,延長了開發(fā)周期,增加了開發(fā)成本,不利于其在各專業(yè)系統(tǒng)的推廣應(yīng)用。為了解決上述問題,首先要實(shí)現(xiàn)GIS平臺(tái)和ECharts整合,讓后續(xù)使用該功能的開發(fā)者無須關(guān)注ECharts融入GIS平臺(tái)的細(xì)節(jié)。第二,對(duì)于最需要花時(shí)間進(jìn)行學(xué)習(xí)設(shè)置的復(fù)雜參數(shù)進(jìn)行接口簡化,讓后繼開發(fā)者只需關(guān)注和實(shí)際業(yè)務(wù)邏輯相關(guān)的統(tǒng)計(jì)數(shù)據(jù)、標(biāo)題等參數(shù)設(shè)置。

2 實(shí)現(xiàn)步驟

2.1 使用工廠模式對(duì)創(chuàng)建過程進(jìn)行封裝

對(duì)于ECharts的整合問題,我們決定采用軟件設(shè)計(jì)中的工廠模式,工廠模式是一種實(shí)例化對(duì)象模式,是用工廠方法代替new操作的一種模式,在工廠模式中,我們?cè)趧?chuàng)建對(duì)象時(shí)不會(huì)對(duì)客戶端暴露創(chuàng)建邏輯,而是通過使用一個(gè)共同的接口來返回新創(chuàng)建的對(duì)象。

在具體實(shí)現(xiàn)中,創(chuàng)建能被GIS使用的ECharts實(shí)例的復(fù)雜邏輯被隱藏在創(chuàng)建工廠中,二次開發(fā)人員在創(chuàng)建ECharts只需要編寫簡單代碼,如下所示:

var myEChart = L.echartsFactory.createInstance([30, 118], [160, 160], map, "marker002");

調(diào)用者只需指定要顯示的位置、大小、以及可后繼對(duì)其進(jìn)行操控的ID,即可創(chuàng)建出已經(jīng)和GIS平臺(tái)融合好的ECharts實(shí)例。使用者完全不用關(guān)注ECharts和GIS平臺(tái)的融合問題。

2.1.2 使用外觀模式重新設(shè)計(jì)調(diào)用接口

對(duì)于ECharts原有功能調(diào)用接口過于復(fù)雜,需要大量時(shí)間學(xué)習(xí)才能掌握的問題。我們運(yùn)用外觀模式對(duì)調(diào)用接口進(jìn)行了重新封裝設(shè)計(jì)。外觀模式(Facade Pattern)屬于結(jié)構(gòu)型設(shè)計(jì)模式,它向現(xiàn)有的系統(tǒng)添加一個(gè)接口,來隱藏系統(tǒng)的復(fù)雜性,降低訪問復(fù)雜系統(tǒng)的內(nèi)部子系統(tǒng)時(shí)的復(fù)雜度,簡化客戶端與之的接口。這種模式涉及一個(gè)單一的類,該類提供了客戶端請(qǐng)求的簡化方法和對(duì)現(xiàn)有系統(tǒng)類方法的委托調(diào)用。

如圖1所示,在原有設(shè)計(jì)中,用戶調(diào)用系統(tǒng)功能時(shí),每個(gè)用戶對(duì)各子系統(tǒng)以及子系統(tǒng)間的相互關(guān)系都要進(jìn)行學(xué)習(xí)了解,這直接導(dǎo)致開發(fā)難度加大,開發(fā)周期變長。且用戶程序和各系統(tǒng)間形成緊耦合,不利于將來的系統(tǒng)升級(jí)維護(hù)。

圖2的方案用外觀模式加了統(tǒng)一的高層接口,該高層接口負(fù)責(zé)和子系統(tǒng)進(jìn)行交互,每個(gè)用戶不必需要了解子系統(tǒng)的細(xì)節(jié),只需調(diào)用這個(gè)經(jīng)過簡化的面向業(yè)務(wù)邏輯高層接口就可以。在GIS項(xiàng)目的具體實(shí)施中,我們給ECharts設(shè)計(jì)添加了外層裝飾類(EChartsDecorator),對(duì)外只提供設(shè)置統(tǒng)計(jì)數(shù)據(jù)、設(shè)置統(tǒng)計(jì)圖標(biāo)題、顯示、關(guān)閉等和業(yè)務(wù)邏輯相關(guān)的接口。調(diào)用者不必關(guān)注ECharts內(nèi)部技術(shù)細(xì)節(jié),讓開發(fā)人員很短時(shí)間內(nèi)就能學(xué)習(xí)掌握,大大提高了開發(fā)效率。 示例代碼:

myEChart.setTitle('我的項(xiàng)目圖1'); //設(shè)置統(tǒng)計(jì)圖標(biāo)題

myEChart.setXAxis(['地質(zhì)儲(chǔ)量(公司)', '地質(zhì)儲(chǔ)量(國家)', '技術(shù)可采(公司)', '技術(shù)可采(國家)', '經(jīng)濟(jì)可采(公司)', '經(jīng)濟(jì)可采(國家)', '經(jīng)濟(jì)可采(上市)']); //設(shè)置X軸各列名稱

var series = [ //統(tǒng)計(jì)數(shù)據(jù)

{ 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); //設(shè)置統(tǒng)計(jì)數(shù)據(jù)

myEChart.showChart(); //開始顯示統(tǒng)計(jì)圖

如上例代碼所示,后續(xù)開發(fā)者只需提供具體的統(tǒng)計(jì)圖數(shù)據(jù)、統(tǒng)計(jì)圖名稱、坐標(biāo)名稱等和用戶業(yè)務(wù)邏輯相關(guān)的參數(shù),即可實(shí)現(xiàn)統(tǒng)計(jì)圖功能。調(diào)用接口直觀易懂,開發(fā)人員很容易理解掌握,短時(shí)間內(nèi)就可實(shí)現(xiàn)項(xiàng)目需求,方便了其在各專業(yè)項(xiàng)目的推廣使用。

2.2 應(yīng)用效果

如圖3所示,GIS平臺(tái)主界面的是海洋石油海域GIS遙感底圖。粉紅色多邊形是加載的油氣田空間對(duì)象,上面顯示的則是其生產(chǎn)數(shù)據(jù)相關(guān)的統(tǒng)計(jì)圖(虛構(gòu)數(shù)據(jù))。目前GIS平臺(tái)的統(tǒng)計(jì)功能已應(yīng)用于公司的油氣儲(chǔ)量評(píng)估及管理系統(tǒng),并取得了良好的應(yīng)用效果。

3 應(yīng)用意義

針對(duì)海洋石油勘探專業(yè)的需求目標(biāo),為原有的GIS添加了統(tǒng)計(jì)圖功能接口。其重要的實(shí)用意義在于:

1) GIS平臺(tái)有了瀏覽空間對(duì)象的統(tǒng)計(jì)圖功能,大大增強(qiáng)了GIS平臺(tái)滿足應(yīng)用需求的能力。

2)并且通過此次實(shí)踐,摸索出了一套簡化復(fù)雜接口的模式。大大縮短了未來開發(fā)者學(xué)習(xí)使用GIS統(tǒng)計(jì)功能的周期,方便了GIS平臺(tái)的推廣應(yīng)用,這種設(shè)計(jì)原則非常適合應(yīng)用于GIS平臺(tái)未來新功能接口的開發(fā)。

參考文獻(xiàn):

[1] 張?jiān)骑w,張欽,楊建欽,等. 基于空間對(duì)象的公共GIS模型及其在海洋石油信息化中的應(yīng)用.中國海上油氣,2009 21(3); 211-214.

[2] ECharts2.0 官網(wǎng)[EB/OL]. http://echarts.baidu.com/echarts2/index.html

[3] [日] 結(jié)城浩. 圖解設(shè)計(jì)模式[M].北京:人民郵電出版社,2017.

【通聯(lián)編輯:梁書】

猜你喜歡
海洋石油設(shè)計(jì)模式
“1+1”作業(yè)設(shè)計(jì)模式的實(shí)踐探索
設(shè)計(jì)模式挖掘的有效性評(píng)估策略
三維協(xié)同設(shè)計(jì)模式下的航天項(xiàng)目管理實(shí)踐與展望
交通機(jī)電工程設(shè)計(jì)模式創(chuàng)新探討
淺談海洋石油工程建設(shè)項(xiàng)目采購特點(diǎn)及進(jìn)度管理
基于“雙師制”指導(dǎo)下的工業(yè)設(shè)計(jì)專業(yè)畢業(yè)設(shè)計(jì)模式
互動(dòng)式設(shè)計(jì)模式研究
吴江市| 鄂伦春自治旗| 兖州市| 吉木萨尔县| 菏泽市| 柘城县| 商水县| 文安县| 平陆县| 仲巴县| 林州市| 科尔| 安远县| 河东区| 苍梧县| 土默特左旗| 平安县| 长海县| 泰顺县| 桃江县| 大新县| 麦盖提县| 大名县| 宁河县| 高阳县| 井陉县| 车险| 舒兰市| 鄂托克前旗| 榆树市| 杂多县| 南康市| 东光县| 沾益县| 瑞昌市| 喀什市| 中方县| 麟游县| 五原县| 寿宁县| 东乡县|