基于海洋石油XGIS平台组件式开发接口的研究与应用

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:laowangtou2
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:近年来,海洋石油建成了服务石油专业的公共GIS平台,并且在多个石油专业系统中获得推广使用。本文主要介绍了海洋石油第二代XGIS的主要架构、组件式开发技术及系统中使用到的接口技术。设计并实现了GIS交互和绘制功能接口的开发工作。
  关键词:GIS地理信息系统;组件式开发;接口;ActiveX;DLL技术
  中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)06-0246-02
  近几年来,组件式GIS发展为GIS的前沿技术,并逐渐成为主流趋势。目前,已经商业化的组件式GIS平台有MapObjects、ArcObjects、GeoMedia等[1]。GIS组件之间以及GIS组件与其他组件之间可以通过标准的通信接口实现交互,这种交互甚至可以跨计算机实现。总院的GIS平台就是基于此架构自主研发了组件式XGIS系统。
  1 GIS系统的基本框架结构
  XGIS采用的是MVC(Model View Controller)系统设计模式在XGIS中体现为三个具体的层次组成:可视化组件组、功能组件组和数据访问组件组。对用户来说,功能组件组是可以定制的[2]。
  1.1 XGIS系统组成
  图1是XGIS的系统架构,包括客户端和服务器端两部分。客户端能过浏览器对XGIS进行访问。在服务器端,底层通过数据库做数据支持,之上通过WebSvrLock和WebSvrBin(提供WebService服务)来验证用户相关信息和提供相应的下载服务。
  
  图1 XGIS整体架构图
  核心程序是XGIS.OCX主程序,负责整个GIS程序DLL组件的加载工作等。
  1.2主要技术
  为了减少网络中的传输负载,采用了动态加载技术,软件核心模块采用ActiveX形式,使得在互联网环境下实现单机和C/S应用的功能成为可能。在ActiveX模块内部,充分利用各种网络通讯协议(如FTP、HTTP等),与服务器端的Web Service服务程序一起,实现地震等数据的高速传输,利用c 语言的高效性实现图形的绘制[3]。
  功能模块采用了静态连接库(LIB)和动态链接(DLL)相结合的方式,主要的功能使用LIB的方式,扩展功能采用动态链接(DLL)的方式,前台模块与后台数据的交换采用大数据二进制文件格式进行传输,并且兼容了jason、xml等形式的数据的交换格式,便于与其他系统扩展结合。
  2系统接口研究
  在XGIS系统中主要使用了四种接口方式。
  (1)SOAP服务挂接方式
  将SOAP服务引入到GIS中,以GIS为平台,以空间图元为对象,几乎可以遍历整个的勘探、开发等数据库系统。在GIS上的某个图元下按下鼠标右键,则系统在“弹出菜单”的顶部列出所有注册的SOAP服务。
  (2)script脚本语言接口
  脚本语言是一种宿主语言,本GIS系统也内嵌了一种自行开发的脚本语言,主要是读取一些不规则的、驻留于数据库之外的数据到GIS图件上。
  (3)VC 的MIDL 接口
  基于MIDL语言对XGIS 二次开发接口进行定义。通过此接口,可以在其他系统如网页、C#的窗口程序中对GIS进行调用和传参。
  (4)DLL接口
  Dll接口方式是系统最常采用的方式,动态调用方式的特点是完全由编程者用API函数加载和卸载DLL,程序员可以决定DLL文件何时加载或不加载,在运行时决定加载哪个DLL文件。需要函数指针和WIN32 API函数LoadLibrary、GetProcAddress装载。此种接口具有最大的灵活性和可扩展性,同时对编程能力的要求也较高。
  3接口应用案例
  本文编写了交互输入定位点和交互输入选择区域两种功能组件,采用动态调试的方式进行灵活的加载与释放,也就是第四种DLL接口的方式来进行编程。下面的例子为交互输入定位点的DLL对外接口函数为
  RETCODE __declspec(dllexport) InterLLXY(void *model, TFunPtr pInterface );
  此函数声明负责告诉主程序调入此交互输入点位点功能组件的函数入口,在函数中作相应的声明就可以调用此组件功能。
  以下为InterLLXY函数主要代码展示:
  RETCODE __declspec(dllexport) InterLLXY(void *model, TFunPtr pInterface )
  { AFX_MANAGE_STATE(AfxGetStaticModuleState());
  //通过CXGISCtrl指针来获得程序的相关对象
  ctrl = (CXGISCtrl *)model;
  /*中间省略一些运算函数*/
  ctrl->pdrawview->isTrackPopupMenu=0;
  return 1;
  }//函数结束
  下面函数为销毁函数的声明:
  RETCODE __declspec(dllexport) DestroyInterLLXY(void *model );
  函数的实现如下所示:
  RETCODE __declspec(dllexport) DestroyInterLLXY(void *model )
  {AFX_MANAGE_STATE(AfxGetStaticModuleState());
  if (interllxy )
  {/*此处省略运算代码*/}
  return 1;
  }
  XGIS的运行界面如图2所示
  
  图2 交互输入定位点
  从图2中可以看到,本文编写并加载DLL组件(交互输入定位点)、通过点击鼠标右键把这两个功能挂载到交互菜单下。在输入相应的点的坐标后,会出现图3显示的界面,系统通过计算点的坐标自动定位点,并通过相应的五角形将其标记出来。
  
  图3 定位后显示
  4结束语
  XGIS的组件式开发,使得运行与维护效率大大提高,多功能的接口调用方式使GIS在专业应用方面更为方便,功能扩展更强大。
  参考文献:
  [1] 朱大明,徐景中.基于組件式GIS的旅游景点查询系统开发研究[J].昆明理工大学学报:理工版, 2007, 32(5):1-4.
  [2] 张云飞,张钦,杨建钦,等.基于空间对象的公共GIS模型及其在海洋石油信息化中的应用[J].中国海上油气,2009,21(3):211-214.
  [3] 张爱华.基于SuperMap Objects组件式开发的GIS空间网络分析功能实现方法[J]. 科技信息, 2013(36).
其他文献
本文在对我国的民办高等学校的经费来源的现状与美国、日本政府对民办高等教育经费的援助情况作了对比分析的基础上,关于民办高等学校的经费筹措问题向我国政府提出了几点建
摘要:在局域网中的网间访问的过程中单纯的使用路由器会使网间的数据传送速率降低,鉴于路由器的端口数量有限,路由速度比较慢,现在多选用三层交换机来实现局域网的网间访问。因为三层交换机具有很强的连接大型网络的能力,其功能上也基本可以取代传统的路由器。该文通过子网连接,网络骨干,可扩充性,性价比等几个方面将三层交换机与路由器做比较,分别指出各自的优缺点,为局域网搭建提出了选择建议。  关键词:三层交换机;
通过对第一届全国精密锻造学术研讨会概况的介绍,就目前国内精密锻造的发展态势进行了总结,并对未来十年精密成形技术作了展望.数值模拟和物理模拟同等重要,文中对闭塞锻造等
该文主要阐述在渭南林业园区用户密度增加而移动服务频率资源有限的情况下,如何用更好的服务频率分配算法分配频率。该文采用一种区分奇偶行的穷举搜索算法实现服务频率分配,
道德教育如果不得其法,无论化多大力气,都难以见效.我国以往的道德教育工作收效不大,其原因就是只重视轰轰烈烈的重要性必要性的宣传提倡,理论主张的阐述等浮于表面的支流工
苏里格气田S井区单砂体的空间分布复杂,进一步高效开发气藏难度较大。基于S井区的区域地质、沉积相、测井、钻井、岩心资料,以Cross高分辨率层序地层学理论及其技术方法为指导,
近几十年来,科学技术发展的一个鲜明特征就是日益求助于多学科融合战略解决各种问题,这就导致了新的跨学科研究领域的出现,最终形成了具有确定的特有概念和方法论的新学科和新领
随着知识经济时代的到来,社会竞争日趋激烈,信息社会纷繁复杂,大学生的各种心理疾患应运而生,从而影响着人才的健康成长.为此,必须高度重视大学生的心理素质教育.本文分析了
本文从分析《计算机文化基础》课程的性质和意义入手,首先论述了该课程的教学目的,进而较全面地讨论了该课程的教学内容、教学方式和教材问题,强调了运用多媒体电子教材的重要性
为了进一步提高叠前时间体偏移的计算效率,实现了在GPU\CPU协同并行计算模式下Kirchhoff叠前时间体偏移技术,并进行优化。经在Nvida Tesla C1060GPU上的测试表明,GPU(Graphic Proc