标题 | 设计模式实现ECharts在GIS中的快速应用 |
范文 | 谢祎 杨建钦 岳翔 呼和 摘要:针对服务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. 【通联编辑:梁书】 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。