基于Forward平台底层WellBase的应用程序开发

摘 要: Forward是目前各油田广泛应用的勘探开发一体化测井评价商业软件,其底层平台开发工具包WellBase SDK更是为用户进行应用软件开发提供了统一的数据格式WIS、各种接口函数类库和开发工具.在对该平台底层简介基础上,主要介绍了基于WellBase的应用程序开发基本方法,并重点通过Visual C++环境下的开发实例说明了开发环境的设置、WIS数据和接口函数的调用等.结果表明利用该底层进行专业工具和应用软件开发具有高效、方便的特点,值得推广和应用.

关 键 词 : Forward; 开发工具包; 测井; 应用程序

中图分类法:TP311.52 文献标志码:B 文章编号:1006-8228(2013)04-15-03

Application development based on Forward Wellbase SDK

Zhang Fuming1, Wang Jinmao1,2

(1. School of Geosciences, China University of Petroleum, Qingdao, Shandong 266580, China; 2. Shengli Well Logging Co. Sinopec)

Abstract: FORWARD is a mercial software for oil-gas well logging evaluation used by many oilfields. Its WellBase SDK (Software Development Kit) provides users with uniform data format WIS, application program interface functions and developing tools. Starting from a brief introduction of Wellbase SDK, the methods of application program development based on WIS and SDK under Visual C++ environment are discussed, and an application example is given for demonstration. The result shows that it can develop application programs efficiently and conveniently.

Key words: Forward; software development kit; well-logging; application program

0 引言

Forward(Formation Oil&Gas Reservoir Well-logging Analysis & Research & Development)是北京石大油软技术有限公司开发的我国第一套商业化功能比较齐全的石油测井评价软件.目前是我国许多油田测井评价的最常用软件平台,在测井数据管理、测井解释和各种成果图件输出等方面为用户提供了极大的方便.但任何软件平台都不可能完全满足用户的各种需求,提供相应的开发工具包,使用户能进一步扩充和开发以实现各种功能已是目前软件发行的重要趋势,Forward的WellBase SDK即是这样一个高效的测井解释程序开发工具包[1].

用户使用WellBase SDK开发工具包在Forward平台上能方便地外挂各种分析应用程序,可以充分利用Forward系统的图形显示、消息响应机制等良好功能.但外挂程序也有某些开发局限,如只能在Forward平台上使用,输人输出格式固定等[2],有时难以满足用户的各种需求.WellBase SDK提供了多个接口函数类库,如果能在软件开发中直接应用这些库,则将大大简化用户的软件编程,提高开发效率.本文重点介绍如何利用Forward开发工具包和底层数据接口函数类库开发用户自己的应用程序.

1.Forward开发工具包WellBase SDK简介

Forward测井解释平台底层WellBase作为构成Forward、Watch等测井解释评价系统的底层,具有测井数据输入、测井资料预处理、测井资料基本处理、测井解释成果输出等功能,为软件开发人员提供了一个在统一的平台底层上开发各种测井解释工具软件的广阔空间,对于勘探、开发一体化数据处理具有明显的优势,其主要由平台数据底层和平台工具两部分组成.

1.1 WellBase平台数据底层

WellBase采用根据我国勘探开发测井数据的特点设计的WIS格式.数据底层为程序开发人员提供了大量的输入输出接口函数.

WIS文件能存放三种类型的对象,根据对象的类型分为通道对象、表对象和流对象.通道对象一般用来存放采集数据和处理结果(如测井曲线),表对象用来存放二维表数据(如解释结论),流对象用来存放二进制数据块(如解释参数、用户数据).利用WIS格式可记录和存储各种类型的测井数据,如深度连续的常规测井曲线,深度不连续的点测井斜曲线,深度连续、时间连续、时间范围相同的波形数据,深度离散、时间连续、时间范围不定的地层测试数据等.总而言之,可将目前已有的测井数据和将来可能出现的各种测井数据,甚至处理参数卡等数据利用一个数据文件采用WIS格式保存起来,以便于数据管理和调用.

1.2 WellBase的平台工具

为满足用户对WIS测井数据处理的需要,WellBase提供了丰富的数据输入、输出、预处理和应用开发工具,这些工具按其功能可分为数据管理、数据预处理、成果输出和应用工具四部分.WellBase具有多种先进的平台特性,包括面向对象操作、数据一致性、参数可视编辑、分层精细解释、支持绘图模板等[3],建立在WellBase之上的测井处理程序无需额外的编程便可自动具备这些特性. 为便于用户快速开发测井处理程序,WellBase的软件开发工具包SDK提供了大量的Fortran和C++输入输出接口函数,并分类进行了面向对象封装.

2.基于WellBase的应用程序开发基本方法

2.1 WellBase提供的用户程序开发方案

为了使用户便于在Forward平台工具基础上进行扩展,开发自己的应用工具,满足不同用户的不同应用,WellBase提供了几种不同的程序编制和运行方式.

⑴ 测井处理框架应用.通过底层函数,应用程序可以访问所有的图形对象、修改图形的显示方式、控制鼠标动作、加入自己的图形对象,是一个真正的应用程序.

⑵ 动态库.动态库是一种外挂式的测井数据处理及应用模块,开发人员利用动态库来完成测井信息的处理(数据解编、预处理、计算及解释等)过程,由WellBase提供的测井处理框架进行动态调用,并实现图形操作、数据同步、参数编辑等过程,通过调用动态库的功能模块完成整个处理过程.

⑶ 生成Fortran应用程序.可利用Fortran语言对WellBase平台进行二次开发,编译生成WellBase应用.这主要是考虑到早期的测井应用程序绝大多数是利用Fortran语言开发的,这种机制下基本不需要修改即可直接挂接到Forward平台使用.

以上是WellBase本身提供并推荐的应用程序开发方法,可以满足大多数用户的需要,具体的实现方法在《WellBase技术开发手册》中有实例说明[1],这里不作介绍.在实际应用中未必一定按照以上方式,并且WellBase只是提供了公共数据底层和接口类函数,是一个开放的平台工具,并不限定用户采取哪种方式开发.比如有时如果仅仅是为了在其他相关应用软件中实现某一功能,只需简单利用WellBase的WIS数据底层和相应的接口操作函数即可.下面通过Visual C++环境下的实例重点说明这类应用程序的开发方法.

2.2 VC++环境下基于WellBase开发应用程序所需的主要文件

⑴ 头文件及基本接口函数类

为便于用户开发自己的应用程序,WellBase提供了各种数据操作的接口函数[1],根据功能可分为基本输入输出类、缺省表管理类、测井数据输入输出类、测井处理对象类、参数常量读写类、不同机器类型转换函数类、静态信息类、动态信息类和测井解编对象类等,能够满足各种操作需要.其中常用的几种主要函数类及其定义头文件为:

wisio.h:定义基本输入输出操作类CWisIO.该类为所有对WIS 文件操作的基本类,完成对WIS 文件定义的通道、表、流对象的读写操作.

defaulttable.h:定义Forward缺省表管理操作.该类完成对WIS 缺省表信息的操作.


logio.h:定义了对测井数据读写操作的类CLogIO,是CWisIO的继承类,主要完成曲线对象、波形对象、地层测试对象等的读写操作.

logProcess.h:定义了类CLogProcess,是CLogIO的继承类,提供对测井数据处理的公共操作.

⑵ 编译及程序运行所需的库文件

用户程序编译时需要连接的库包括:Wis20.lib、WellBase20.lib、WisInput20.lib、WisOutput20.lib、LogProcess20.lib和Plot20.lib等.

程序运行所需的动态库文件是与以上lib文件对应的,主要包括Wis20.dll、WellBase20.dll、WisInput20.dll等.

2.3 VC++开发环境设置

在VC++开发环境中,可通过设置相应的开发环境或环境变量使用WellBase的接口类库,并利用它们开发有关数据文件操作的应用程序.

⑴ 工程设置

以Visual C++ 6.0环境下应用程序开发为例[4],在Project菜单的“Settings等”对话框中完成基本的工程设置:

① “C/C++”标签下的“Category”选择“Code Generation”、“Use run-time library”选择“Multithreaded”;

② “Link”标签下的“Category”选择“Input”、“Object/library modules”下面的文本框中加入Wis20.lib等所需的WellBase SDK库文件.

⑵ 编译和运行环境设置

把以上所列常用的头文件(后缀.h)单独放在一个用户所建的include目录下,编译所需的库文件(后缀.lib)单独放在一个用户所建的lib目录下,然后,在VC++主界面的Tools菜单下“Options”对话框中,在“Show directories for:”中依次选择“Include files”和“Library files”,并在下面的“Directories”中添加以上建立的相应路径即可.

对于用户程序运行时所需的动态库文件(后缀.dll),建议放在Windows系统默认的“Windows\system32”目录下,当然也可直接放在当前用户工程目录下,或者通过Windows的环境设置指定相应位置.

3.开发应用实例分析

借助于WellBase SDK,以WIS格式为底层数据格式,可以利用Visual C++开发一些实用的工具,作为Forward软件平台的重要补充.SDK提供的接口函数有很多,下面以获取用户选定测井曲线的极值和均值为例介绍基本的程序开发技术.

3.1 测井曲线数值统计程序的功能设计

用户选定并打开WIS格式的井数据文件,然后读取其中的测井曲线、深度、采样间隔等信息;用户选定曲线并指定深度段后,统计出该深度段内选定曲线的最大值、最小值和平均值并通过信息窗口显示出来. 3.2 主要步骤

⑴ 利用VC++向导建立一个基本的MFC工程[5].主菜单项包括文件(File)、编辑(Edit)、程序处理(Process)等几个,如图1所示.

⑵ 利用File中的Open菜单项选定并打开一个WIS格式数据文件,获取其中包含的测井曲线.主要步骤:

定义一个CWisIO类变量mwis,用其成员函数Open()打开WIS文件,用成员函数FindObjectName()获取其中包含的所有测井曲线名.

⑶ 在Process菜单下建立菜单项“曲线处理”,由该菜单项实现设计功能.主要步骤:

利用CComboBox控件将上一步得到的曲线名列表显示,供用户选择其中的测井曲线以进行数值统计;

定义一个CLogIO类指针变量plog,利用其成员函数OpenCurve()获取用户选定曲线的所有信息,特别是起始和终止深度、深度采样间隔等;

利用plog的成员函数ReadCurve()读取用户所选曲线指定深度段内的测井数值,然后统计出该深度段内曲线的最大值、最小值、平均值,最后利用VC++的MessageBox()向用户呈现这些信息.图2是运行效果示意图.

4.结束语

利用Forward系统底层平台开发工具包不仅可以开发测井分析程序,而且可以用来开发其他测井资料处理支持软件和各种应用工具.由于WIS文件系统设计先进,可以满足目前各种测井资料的存储和应用[6],而SDK提供了各种平台底层接口函数类库,因此用户可以容易地开发以WIS文件为数据对象的应用程序.

通过本文的应用实例开发,说明了该软件平台工具包具有接口丰富、易于应用等特点,该工具包能够为专业工具和应用软件开发提供高效、便捷的编程环境,具有很好的行业应用前景,建议多加推广和利用.当然,本文的方法只是作为WellBase技术开发手册中应用程序开发方法的一个简单补充,实际应用中用户可以有更多可选的开发方案.

类似论文

对计算机程序开发设计问题

摘 要:高职院校在开发和实施计算机程序设计项目课程时,经常会出现不知如何选择项目,对选定的项目如何高效的实施等问题。
更新日期:2024-1-12 浏览量:19448 点赞量:5513

嵌入式Linux设备驱动程序开发

摘 要:为了探讨嵌入式Linux设备驱动程序开发,文中对其设备驱动程序完成了以下分析:Linux设备驱动程序开发过程;基本组。
更新日期:2024-12-12 浏览量:154977 点赞量:33128

Web应用程序开发

一、Web应用程序开发 Web应用程序既不是一个真正意义上的Web网站 也不是一个传统的应用程序,它是Web网页和用来完成某些功能。
更新日期:2024-3-26 浏览量:43765 点赞量:9863

网络化CAD测试系统客户端程序开发

摘 要:计算机辅助设计(CAD)是现代工程及产品设计的先进技术,在工业各领域有着广泛的应用和重要的推广价值 本。
更新日期:2024-7-26 浏览量:96081 点赞量:21419

5S质量管理在程序开发中的作用建议

摘 要:5S管理即质量程序管理,包括整理(SEIRI)、整顿(SEITON)、清扫(SEISO)、清洁(SEIKETSU)、素养(SHITSUKE)程序,起源于。
更新日期:2024-2-13 浏览量:33188 点赞量:8698

程序开发教学在高职药学专业中的应用

摘 要:针对新版GSP对药品经营企业在计算机系统管理控制方面的要求,以高职药学专业为例,阐述计算机程序开发的教学应该。
更新日期:2024-11-10 浏览量:143931 点赞量:31331

基于OpenCV的DMD视频播放程序开发

摘 要:针对DMD视频播放需求,提出了一种基于OpenCV的视频播放程序开发方法 利用面向对象开发平台VC++6 0。
更新日期:2024-4-28 浏览量:59072 点赞量:13791