加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSS
您当前的位置:首页 > 科技论文 > 地质论文

基于MapObjects油藏动态分析图绘制方法(图文)

时间:1970-01-01  作者:秩名

论文导读:在此基础上以MapObjects为平台将地质图各图层读取并转换为ESRI的Shape格式予以显示。进而关联生产数据库数据绘制柱状图、饼状图、综合柱状图等动态分析图。当地质底图为位图格式时,通过矢量化方式绘制相应的地质要素Shape文件同样可以实现井点图层渲染。
关键词:综合柱状图,MapObjects,渲染,WindowsAPI
 

1. 引言

油田生产动态数据是一个油藏地下状况的真实反映,在油田勘探开发过程中,应用动态分析软件充分挖掘动态数据蕴含信息,可以有效提高油气田动态分析研究水平优化油气生产监控管理[1]。目前,Peoffice、OFM等主流软件都涵盖了油藏动态分析功能。但他们多数通过在列表中选择单元或单井方式进行查询、分析、计算、预测,并以各种曲线和表格显示结果。其缺点是没有很好地将油田动态和油藏静态结合起来,导致动态分析结果缺乏地质信息或地面信息,如井位、断层等。而带有地质底图的平面动态图对油藏工程师来说是十分重要的,目前这部分工作仍然依靠技术人员手工完成。他们因需在地质图上绘制油藏平面生产现状图、水淹图而耗费了大量的时间和精力[3]。

为了充分利用现有的地质成果图(如构造井位图、小层平面图、沉积相带图),实现基于地质信息的油藏动态分析,我们做了如下设计。首先制定了AutoCaD地质图绘制规范(绝大多数地质图由AutoCaD绘制并以DXF格式存储),将各地质要素分图层绘制,即分别存储为油井、水井、断层、尖灭线、油水分界线等图层并以相应的地质要素名称命名。在此基础上以MapObjects为平台将地质图各图层读取并转换为ESRI的Shape格式予以显示。进而关联生产数据库数据绘制柱状图、饼状图、综合柱状图等动态分析图。发表论文。当地质底图为位图格式时,通过矢量化方式绘制相应的地质要素Shape文件同样可以实现井点图层渲染。动态分析图中综合柱状图是一种较为特殊的图形组合,在MapObjects提供的渲染方式中虽不能直接实现,但其图表自定义渲染接口为实现这一功能提供了可能,这也是本文讨论的重点。

2. MapObjdects简介

MapObjects是ESRI公司提供的一组供应用开发人员使用的制图与GIS功能组件,由一个OLE控件和超过45个可编程OLE对象组成。它不是面向最终用户而是专门为开发人员提供的。利用MapObjects,开发人员可以实现图层的操作和管理、图层渲染、数据查询功能、简单空间分析及空间数据库访问等功能。下面讨论MapObjects提供的图表渲染及组渲染方式[2],如下:

(1)图表渲染(ChartRenderer)

ChartRenderer对象提供的属性和方法,可以利用饼图(Pie Chart)或柱图(Bar Chart)来描述特征的多个参数。还可以用显示图表的大小来表示特征值的多少。

表2 属性及意义说明

 

属性 说明
ChartType 类型为饼图或柱图或自定图形(MOCustom)
ShowOutline 是否显示图表的轮廓线
Field属性数组 图表来源字段
Color属性数组 采用的颜色
FieldCount 数组的维数。
BarHeight、BarWidth 图表的行和列
NormalizationField 使图表标准化
SizeField、MinPieSize、MaxPieSize 控制图表的大小
NullValue、NoNullValue 处理空值

(2)组渲染(GroupRenderer)

GroupRenderer并不是一种独立的渲染方式,它实现了上述几种渲染方式组合渲染。使用时先定义一个组渲染对象(GroupRend),再定义前面介绍的方法某种渲染方式(RenderI),用如下语句实现向组内添加渲染方式并完成组渲染。

GroupRend.AddRenderI

MapLayer.Renderer=GroupRend

Map1.Refresh

3. 自定义绘图接口

上一部分介绍了用到的Mapobjects的两种渲染方式,下面我们着力介绍图表渲染中自定义绘图接口。要实现自定义图表渲染方式,首先需要定义如同柱状图或饼状图的渲染类。如在vb6.0中定义一个名为clsBar的柱状图渲染类,则该类使用方法如下:

Dim ChartSymAs New clsBar

Dim pChartRendererAs New MapObjects2.ChartRenderer

WithpChartRenderer

.FieldCount = 1 渲染的字段个数据为1

.Field(0) = 'LJCYL' 渲染的字段名称为LJCYL

.Color(0) = moBlue 颜色为蓝色

.ChartType = moCustom 渲染类型为自定义的

End With

pChartRenderer.CustomChart= ChartSym

SetMapLayer.Renderer = pChartRenderer

Map1.Refresh

上述代码展示了如何用自定义方式实现图表渲染,其前提是实现了clsBar类。下面我们就重点讲述如何实现渲染类clsBar。在mapobjects中为自定义渲染类预留三个成员函数作为接口,分别为SetupDC、Draw和ResetDC。如果使用自定义方式实现了图层渲染,当刷新该图层时,即在BeforeLayerDraw事件之后,在AfterLayerDraw事件之前系统渲染图层。渲染对象的SetupDC方法首先被调用。用来改写设备描述表,选定画笔、画刷。之后,系统调用渲染对象的Draw方法,采用选定设备依次绘制当前渲染图层各个图元的渲染图形。当所有对象绘制完成之后,ResetDC方法被调用,用来恢复设备描述表。这三个函数的命名及参数都是mapobjects规定的,不能更改。

SetupDC函数原型为:Private SubICustomChart_SetupDC(ByVal Map As Object, ByVal MapLayer As Object, ByValChartRenderer As Object, ByVal hdc As Long, ByVal dpi As Double) 其功能是设置设备描述表并保存系统原有设置,以便在绘图完毕予以恢复设备描述表。因此函数中我们需要使用CreatePen、CreateSolidBrush、SelectObject等Windows API函数。代码如下:

查看相关论文专题
加入收藏  打印本文
上一篇论文:电阻率法在岩土工程中应用现状综述
下一篇论文:佛山市顺德区大洲电排站工程基础处理方案的选择分析
科技论文分类
科技小论文 数学建模论文
数学论文 节能减排论文
数学小论文 低碳生活论文
物理论文 建筑工程论文
网站设计论文 农业论文
图书情报 计算机论文
化学论文 机电一体化论文
生物论文 网络安全论文
机械论文 水利论文
地质论文 交通论文
相关地质论文
    无相关信息
最新地质论文
读者推荐的地质论文