勘探决策支持系统的技术点

最近想了想弄了几年的勘探决策支持系统EDSS的内部技术,虽然名字起得有点大,但主要是提供勘探数据集成查询和可视化的,程序开发人员更换得不算多,功能不断修修补补,现在静下心来梳理一下技术点,应该还是挺有内容的,为了不泄漏企业秘密,图片只用对外宣传材料上有的,技术点只写些名字。

1、SOA的软件框架

报奖时不提SOA显得你一点水平也没有,整体系统从来也不与第三方系统通讯,不知道这SOA有多少用处,可能以后会用得上吧。

实际的软件框架就是三层构架,客户端、应用服务器和数据库,2004年简单实现,好像是2006年大改一次。

客户端:最早的就是C#做的Form,后来改为插件式的,随着编程人员的加入,几个模块之间的耦合也越来越重,最严重的就是项目数据树模块吧,估计这个模块不插入,其它模块根本无法运转,所以说插件式的设计需要大量的设计模式的经验和对功能的理解。

应用服务器:这个是不可或缺的,因为这个系统中要访问地震数据体,要从中抽取地震剖面或水平切片,另外还要访问一些图形或文档,图档用数据库的大字段还行,但几十GB的地震数据就不太好办了。最早用.NET remoting实现,后来嫁接到IIS中了,确实也可以提供WS服务和Rest。

数据库,就是oralce和sqlserver,没有太多的技术。后来主要用到了iBatis的ORM,至于使用这东西倒底有什么好处,我现在不太清楚了。

这个框架中我一直不太满意的是业务对象封装与传递,因为业务对象会不断发生变化,数据库中会变化,应用服务器会改变,而这时强行要求所有客户端必须同时升级来保证这些业务对象严格一致是不合情理的,但在企业内部软件应用时,这种方式一直运转多年也没发现什么问题。

还有一个就是消息通讯,实际上在某些模块之间还是要用WM_COPYDATA这种方式来通讯的,这是一段在2004年改写的代码

2、底图模块

basemap

这是最早就具有的模块,使用了INT公司GeoToolkit.NET中的Carnac.NET组件,当年为了买这个组件可花了企业不少的钱,后来的作用还是明显的,关于图形方面的开发方面还是提高了许多效率,程序性能和稳定性都不错。

主要功能:

多地震工区显示,抽取任意测线;成果图件(平面图)的坐标校正及叠加显示;工作现场保存与恢复;强大的图层管理,支持工区、构造图、层位、测线、探井、开发井和设计井等对象的拖放操作;可输出CGM;通过右键菜单查询各图层对象的详细资料。

3、剖面模块

seismic

这也是最早就具有的模块,使用了INT公司GeoToolkit.NET中的Seismic.NET组件,可以直接打开并显示专业的SEGY剖面,并且可以进行多种设置。

主要功能:

一键式显示方式切换,支持波形、变面积和变密度等显示方式;按研究人员设置的标准颜色显示层位等信息;根据VSP、邻井、经验公式显示时深关系数据;快速从任意工区中打开任意地震剖面;实时设计和修改井位的靶点数据。

对剖面模块Seismic.NET感兴趣的可以到这里看看

4、综合录井图

welllog

最早用INT公司GeoToolkit.NET中的WellLog.NET组件写了一个原型,后来忘了是什么原因要自己从底层写一个,后来终于也完成了,功能也不错。

主要功能:

支持综合录井图、岩屑录井图、标准测井图、组合测井图等多种模板的定制与切换;支持图件横向或纵向显示方式。

5、井身结构图及试油管柱图

well

这个是后来升级了INT公司GeoToolkit.NET后,用其中的WellSchematic.NET开发实现的。

主要功能:

井身结构图和试油管柱图的动态绘制;标注主要目的层、岩芯、试油井段等关键信息;根据钻井、测井、试油等决策模式,定制探井生产基础数据和动态信息的显示模板。

6、遥感与三维GIS模块

gis

这是与一个公司合作完成的,其中用到了SkyLine的技术。

主要功能:

综合各种地质因素确定井位后,快速查看设计井附近的遥感图像和地理信息,实际上里面也可以导航查询各种信息。

7、电子挂图模块

这里面技术难度涉及到一个非常大的图件的缩放性能的技术,其它技术难度不大。

8、项目树模块

projecttree

这就是前面提到的耦合最大的一个模块,几乎其它模块都与这个树上的结点有关系。

9、三维可视化模块

image

这是在2012年发布的模块,使用OpenInventor.NET写成的,经历过C++/Qt等曲折的过程,主要功能:

主要功能列表:

1)数据体显示:边框显示、表面显示

2)数据体横、纵剖面及水平切片显示与交互、抽取过井十字剖面

3)井集数据显示:井名、井口信息、井轨迹及地质分层

4)解释层位数据显示:点状显示,简单网格化的模型由于性能关系还没有加上

5)色棒定制功能:可以控制色棒的显示范围、透明度等参数

6)辅助交互功能:井数据查询功能、井数据定位功能、各种三维对象的显示/隐藏、添加、删除等控制功能,鼠标的三维空间定位以及拾取功能,状态栏的即时状态信息显示功能

10、案例库模块

里面收集了在钻井过程中决策的一些情况、措施、原因等100多个案例,由于某些原因这个库没有人再继续充实。

11、数据管理功能

涉及到所有数据都在这里集中有相应的界面进行增删改查。

12、系统管理

用户管理、授权、日志等。

13、自动升级模块

这是小模块发挥了大作用,大大减轻了系统的维护工作量。

posted @ 2013-10-31 21:32  申龙斌的程序人生  阅读(1983)  评论(8编辑  收藏  举报