基于VBA的测井原始数据处理方法
2014-06-17于浩洋谢传礼张航王强张慧
于浩洋,谢传礼,张航,王强,张慧
(中国石油大学(北京)油气资源与勘探国家重点实验室,北京102249)
0 引言
地球物理和地质开发者在研究中经常要对各种大量的数据进行前期处理,才能满足后续研究的需要,这就给他们带来了极其繁冗的工作,比如测井原始LAS文件导入卡奔之前的数据处理和格式调整、测井数据平滑处理、卡奔分层数据批量导出等[1-2]。当然,用Matlab,VB,VC 等工具进行编程也可以完成这些工作;但使用这些工具既需要一定的软件基础,又要在数据处理中进行大量复杂的编程,会耗费地质工作者大量的时间和精力,不利于科研成果的高效研发[3]。因此,相关科研人员迫切期待一种能够快速、准确地完成批量重复工作且不需复杂程序代码的工具。
Office Excel 具有强大的文字图片处理能力,本身包含丰富的函数,但对于大量重复性的原始数据,只用单窗口逐个处理,无法适应浩繁的数据处理工作。Excel中集成的Visual Basic for Applications(VBA)开发环境,能够与Excel 顺利链接,且代码简洁清晰,可以通过“宏”录制实现部分代码编写[4]。笔者经过大量试验后,利用ExcelVBA 很好地完成了测井LAS 文件的数据处理、格式转换及批量处理,完全可以适用卡奔软件的数据导入要求。
下面以此为例,介绍ExcelVBA 在测井原始数据处理中的应用。
1 ExcelVBA 简介
Office Excel 是目前主流办公软件之一,具有强大的数据编辑处理能力。VBA 是镶嵌到应用程序里面的Basic 语言,但不是一个独立存在的语言,必须基于一个主应用程序[5]。基于Excel 的VBA,在用于Excel 时并没有键入Excel 的特别组分,Excel 通过对象库使VBA 发挥作用(见图1)[6]。
图1 Excel 与VBA 信息交换关系
VBA 在用于各种应用程序时,都不需要键入应用程序的特有组分,均通过对象库对应用程序发挥作用,且能够控制任何提供对象库的应用程序,比如Word,AutoCAD,Coreldraw 等(见图2)。
图2 VBA 可控应用程序
当某个应用程序提供对象库时,用户便可使用VBA 对该应用程序进行进一步开发,以实现用户自己所需的功能。目前VBA 已成为应用程序二次开发的重要工具,但VBA 又独立于应用程序而存在,因此出现了WordVBA,ExcelVBA,AutoCADVBA,CoreldrawVBA等形式[7-10]。VBA 是一种寄生在宿主(Host)上的自动化语言,不能像VB 一样生成EXE 可执行文件,须在宿主父应用程序中才能应用;但它继承了VB 的优点,而且能够结合宿主程序进行编程,降低了代码复杂程度,使程序运行更加稳定快速[3]。
2 利用ExcelVBA 处理测井原始数据
目前油田所用的测井仪器(如ECLIPS5700,CSU,XSKG-92,CLS3700 等)多种多样,生成的测井文件也多种多样,包括LAS 格式、ASCII 格式、716 格式、WIS格式、LOG 格式、野外带格式等[11]。测井解释软件难以识别所有测井文件格式,只能预先设定几个固定的文件格式,这就造成了测井仪器生成数据与测井解释软件可识别数据之间格式的矛盾。要解决这一矛盾,必须进行数据格式转换。下面以处理测井LAS 文件适应卡奔导入数据要求为例,介绍利用ExcelVBA 处理测井原始数据的过程。
2.1 LAS 文件简介
LAS 文件标准,是加拿大测井协会为了方便测井作业方与油田使用者之间测井数据交换提出的。LAS文件可以很方便地从计算机大型平台、计算机客户端、工作站服务器上自由输入与输出,格式简单,易于分析处理。LAS 已成为测井数据数字转换最广泛的使用格式和事实上的工业标准[12]。
LAS 格式文件在文件头先进行基本信息陈述,包括作业对象、作业时间、作业起止点等,并用符号来表示不同信息及其对应的信息含义(见表1)[13]。
表1 LAS 格式中的符号及对应含义
2.2 卡奔BendlinkEx 导入数据要求
卡奔bendlinkEx 是国内第1 个利用PC 机即可进行地层划分对比、小层划分对比和绘制油藏剖面的软件。它可以顺利完成油砂体对比,并同步生成对比数据表,也可以快速绘制沉积相剖面图、油气藏剖面图和上层对比剖面图等图件,同时,可以获得油水分布情况,清晰地显示出油水关系和连通情况,从而为进行储量单元和开发层系划分提供依据[14]。
卡奔软件产品和技术已覆盖国内数十家油田和勘探开发单位,在我国石油行业有着广泛影响。该软件可以识别716,ASCII 等格式测井资料的加载,但对于广泛应用于生产实践的LAS 格式文件却难以识别。
2.3 基于VBA 的LAS 文件处理和格式转换
下面以胜利油田胜坨区块ST2-0-10 井为例,描述如何将LAS 文件转化为内容和格式均符合卡奔BendlinkEx 录入标准的TXT 文件过程。
先明确原始LAS 文件的内容格式和最终卡奔BendlinkEx 可识别的TXT 文件格式。分别用Excel 打开LAS 文件,记事本打开TXT 文件,如表2、表3所示。
表2 原始LAS 文件
表3 卡奔软件可识别的TXT 文件
对比处理前后的文件格式和内容差别,编辑VBA“格式化格式”函数:
1)通过对照,确定表2左下曲线名称和对应采点数值为后续处理的目的数据。
2)定义变量类型、初始值。
3)观察LAS 文件并结合工区其他LAS 文件,发现该文件中曲线名称左侧“~A DEPTH”为所有文件所共有,且正好处于目的数据之前分界处,因此,设置循环,查找“~A DE”并删除之。
4)根据LAS 文件特点,第1 列只有刚刚删除的单元格为空值。设置循环,查找该单元格,确定位置。
5)根据前步确定的位置,选定该位置前所有行,并删除之。
6)格式化完毕,函数退出。
具体VBA 代码如下:
以上程序完成了由LAS 文件到TXT 文件的转化,但是面对数以千百计的工区测井数据,单个文件的处理远远不够。下面介绍测井原始数据批量处理方法。结合LAS 文件特征以及处理前后文件格式变化,编辑VBA“批量处理”函数:
1)定义变量类型。
2)用代码打开需要处理的文件。
3)设置循环,逐个处理LAS 文件。调用“格式化格式”函数,嵌套于循环中。格式化后,更改LAS 文件为TXT 文件。
4)结束循环,函数退出。所有文件处理完毕。
具体VBA 代码如下:
3 VBA 应用拓展
以上介绍的VBA 处理测井原始LAS 数据转换只是VBA 处理数据文件的一个特例,但可以从中提炼出一种编程的思想和方法,并将其应用于解决更多的实际问题过程中。
随着地质工作从最初的定性描述逐渐向定量分析发展,地质开发研究人员将面对越来越庞杂的数据资料[15-16]。掌握一门计算机编程语言,运用计算机处理众多重复而繁冗的工作,成为相关人员的一项必备技能。VBA 作为一款内嵌式的应用程序编程语言,可以在多种应用程序中广泛应用。VBA 的宏可以使程序编写智能化,计算机可以将用户的操作编码成程序代码,开发研究人员仅仅需要在此基础上进行修改和调试就可完成程序的开发。因此,即使没有太多编程经验的地质开发研究人员,只要掌握编程的基本思想和方法,也可以顺利完成VBA 程序的建立,从而解决相关问题[17]。
4 结论
1)基于VBA 的LAS 格式测井原始数据处理程序,可以精确高效地完成LAS 格式测井数据编辑和转换等任务。
2)本程序提供了批量处理功能,很大程度上解放了手工劳动,提高了效率,减少了人工干预,避免了人为因素产生的误差和错误。
3)基于ExcelVBA 的二次开发,操作简捷,使用方便,初学者易于掌握。把这种编程思想引入其他内嵌VBA 的应用程序,可以优化应用程序功能,方便快捷地解决相关问题。
[1]杜锦霞,黄哲.测井约束反演及在JD 地区的应用[J].断块油气田,2009,16(5):126-128.
[2]杨勇,聂海峰,张雅玲,等.基于多点地质统计学的岩性气藏精细建模方法与应用[J].断块油气田,2013,20(6):723-726.
[3]鲍祥生.VBA 和EXCEL 函数结合编程在数据处理中的应用[J].石油工业计算机应用,2009,64(4):9-12.
[4]韩小良,韩舒婷.ExcelVBA 从入门到精通[M].北京:中国铁道出版社,2006:1-7.
[5]V.k.工作室. Excel 2000 VBA 入门[M].北京:科学出版社,2001:17-25.
[6]Reed Jacobson. Microsoft Office Excel 2007 Visual Basic [M].Washington:Microsoft Press,2007:29-33.
[7]韩方,牛利兵,牛利军,等.基于AutoCAD VBA 的两圆外公切线编程[J].机械,2010,37(增刊1):38-40.
[8]朱剑军,范忠明.ExcelVBA 编制河道断面观测内业计算程序[J].江苏水利,2010(6):15-17.
[9]刘军.在Word 下实现汉字注音直接输入输出[J].电脑编程技巧与维护,2010(15):10-14.
[10]钟炜.利用CorelDraw VBA 开发宏程序绘制地图[J].江西测绘,2007(3):4-6.
[11]张军,李洪奇,谭伏霖,等.常规测井原始资料质量检查软件系统研制[J].测井技术,2010,34(5):453-455.
[12]马勇光.测井数据格式解编框架设计及应用该框架实现LAS 数据格式解编[D].长春:吉林大学,2008.
[13]郭海敏,樊鹤,张宫,等.LAS 测井数据解析与批量转化方法研究[J].石油天然气学报,2013,35(4):89-91.
[14]范本江,唐建新,谢姝.BendlinkEx 软件在地层对比和油藏研究中的应用[J].石油天然气学报,2006,28(3):246-248.
[15]张艳,刘丹强,周璐红.地质灾害土地资源易损性评价定量探讨[J].水文地质工程地质,2010,37(3):122-126.
[16]邱骏挺,于心起,李春麟,等.使用VBA 处理地质数据的方法及步骤:以Excel 二次编程为例[J].中国地质教育,2011(1):78-83.
[17]王高成,郭玲,陈兴炳,等.基于VBA 的储层评价数据处理方法[J].物探与化探,2009,33(6):718-722.