- 6
- 0
- 约1.88千字
- 约 3页
- 2017-08-18 发布于重庆
- 举报
应用GDIPlus绘图技术实现随钻测井密度成像.doc
应用GDIPlus绘图技术实现随钻测井密度成像
摘要:哈里伯顿的ALD方位岩性密度随钻测井提供8和16扇区密度成像,由于其采样间隔较大(一般与常规曲线一样,为0.1524m),用填充矩形的方式成图效果较差。本文提出了应用GDIPlus进行绘图的方式,从而提高绘图的质量。用天东007-X9井实测资料的验证,绘图效果好、效率高。
关键词:随钻测井;GDIPlus;密度成像;软件开发
0、引言
哈里伯顿的ALD方位岩性密度随钻测井提供8和16扇区密度成像,其纵向采样间隔为0.1524m,井周方向为360度全覆盖。由于其采样率较低,用一般成图方式(填充矩形)将会出现方块(马赛克现象),其成图效果较差。
通过分析可知,对于像XRMI的电成像资料,纵向采样间隔为0.1英寸,即在深度方向,每英寸有10个测井值,对于屏幕绘图(每英寸96个像素)来说,只要绘图比例在1:9.6以上,则可达到很好的成图效果。而对于ALD方位岩性密度,采样间隔0.1524m(6英寸),要达到不出现马赛克现象,其深度比例必须在1:552.96以上,但在这种比例下绘图,根本无法看到地层细节。
为了得到更好地成图效果,需寻找一种更好地成图方式。微软提供的GDIPlus可很好地解决这个问题。
1、使用GDIPlus进行绘图的方法
GDIPlus是GDI(Graphics Device Interface,即图形设备接口)的增强版。它主要提供三类服务:一是二维矢量图形;二是图像处理;三是文字显示。GDI接口是基于函数的,而GDIPlus是基于C++类的对象化的应用程序编程接口,因此使用起来比GDI更方便。
下面以Visual C++2008.net为例,说明使用GDIPlus的过程:
(1)在stdafx.h中加入:
#include gdiplus.h
using namespace Gdiplus;
#pragma comment(lib,gdiplus.lib)
(2)在C****App中加入变量:ULONG_PTR m_gdiplusToken;
(3)在C****App的InitInstance()中加入:
//初始化GDI+
GdiplusStartupInput gsi;
GdiplusStartup(m_gdiplusToken,gsi,NULL);
(4)重载ExitInitInstance()函数
GdiplusShutdown(m_gdiplusToken);
通过上面的设置,就可在视图或对话框中使用GDIPlus进行绘图了。
2、应用GDIPlus实现密度成像图的绘制
(1)创建Graphics对象
一般在视图类的OnDraw函数中实现:
void CWellPlotView::OnDraw(CDC* pDC)
{
CWellPlotDoc* pDoc = GetDocument();
Graphics g(pDC-m_hDC); //创建Graphics对象
pDoc-Plot_Map(g,this); //调用绘图模块
}
(2)密度成像图的绘制
第一步:根据绘图井段计算采样数(NP),从密度成像数据中获取扇区个数Npw;
第二步: 应用Bitmap类创建位图,图的宽为Npw,高为NP,即
Bitmap bmpPapers(Npw,NP);
第三步:读取密度成像数据,计算每个密度值所对应的颜色值,用SetPixel(x,y,Color)函数填充位图。
第四步:设置图形缩放时的插值方式,GDIPlus提供了多种方式,为了实现平滑的图形绘制,选择InterpolationModeHighQuality,使用函数为SetInterpolationMode。
第五步:计算绘图矩形rc。
第六步:使用函数DrawImage(bmpPapers,rc,0,0,Npw-1,NP-1,UnitPixel)将生成的位图拷贝到绘图区域上。
到此,一幅非常漂亮的图形会按合适的比例绘制在指定区域。
3、应用效果
附图1为天东007-X9井随钻测井曲线图,井段为5783~5807米。图的第四道为用一般方式绘制的图形,最右边那道为应用GDIPlus绘制的图形。
从图上可见,应用GDIPLus绘制的图形消除了马赛克现象,展示了应用GDIPLus绘图的优越性。
4、结论与认识
(1)应用GDIPlus绘图技术已实现了随钻密度成像测井图的绘图。
(2)GDIPlus绘制成像图具有速度快、成图效果好的特点,值得推广应用。
1
原创力文档

文档评论(0)