WIS测井数据格式.docx

上传人:b****5 文档编号:3436383 上传时间:2022-11-23 格式:DOCX 页数:25 大小:64.86KB
下载 相关 举报
WIS测井数据格式.docx_第1页
第1页 / 共25页
WIS测井数据格式.docx_第2页
第2页 / 共25页
WIS测井数据格式.docx_第3页
第3页 / 共25页
WIS测井数据格式.docx_第4页
第4页 / 共25页
WIS测井数据格式.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

WIS测井数据格式.docx

《WIS测井数据格式.docx》由会员分享,可在线阅读,更多相关《WIS测井数据格式.docx(25页珍藏版)》请在冰豆网上搜索。

WIS测井数据格式.docx

WIS测井数据格式

测井曲线wis文件格式转换为ASCII文本格式小软件的开发(C与Python结合开发)

分类:

C/C++2011-03-2512:

45627人阅读评论

(2)收藏举报

在油田开发地质研究工作中,测井曲线是必不可少的数据文件之一。

Forward软件是测井软件中非常优秀的产品,Forward中使用的是wis二进制格式,可是很多其他类型的软件不能直接识别wis格式,所以需要我们将wis格式文本格式。

Forward软件有一个transfer小软件,不能实现批量处理,每次只能转换一个文件,但实际工作中通常一次要转换上百个文件,这就有点不方便了,因此,我在业余时间,阅读了Forward软件中自带的wis格式说明(如下,第一章内容),利用C和Python编写了一个可以批量处理的小软件。

第1章WIS测井数据文件格式

WellBase平台底层数据文件使用WIS格式,WIS文件分为文件头、对象入口记录和对象数据三部分。

数据存放以块为单位。

WIS文件能存放三种类型的对象,根据对象的类型分为通道对象、表对象和流对象。

通道对象一般用来存放采集数据和处理结果(如测井曲线),表对象用来存放二维表数据(如解释结论),流对象用来存放二进制数据块(如解释参数,用户数据)。

1.1WIS文件结构

1.1.1文件标识

WIS文件标识从文件偏移零开始,为10个字节的字符。

当前版本的标识为WIS1.0。

1.1.2文件头结构

头结构紧接文件标识。

描述WIS文件的公共信息。

结构定义如下:

typedefstructtagWIS_HEAD

{

WORDMachineType;

WORDMaxObjectNumber;

WORDObjectNumber;

WORDBlockLen;

DWORDEntryOffset;

DWORDDataOffset;

DWORDFileSize;

DWORDTimeCreate;

charReserved[32];

}WIS_HEAD;

 

偏移字节数描述

02机器类型=1为PC;=2为SUN;=3为IBM;

=4为HP。

22允许记录的最大对象数。

缺省为512个,该值可以在文件产生时给出。

42当前记录的对象总数(包括删除和抛弃的对象)。

62块长。

WIS文件对象占用的磁盘空间以块为单位,该值指示每一数据块的字节数。

84对象入口记录从文件开始的偏移量。

124对象数据记录从文件开始的偏移量。

164WIS文件的字节数大小。

204WIS文件产生的时间。

2432保留字节。

1.1.3对象入口

对象入口描述每个对象的公共信息,开始位置由头结构给出。

每个对象的描述信息前后相连。

结构定义如下:

typedefstructtagWIS_OBJECT_ENTRY

{

charName[16];

longStatus;

shortAttribute;

shortSubAttribute;

DWORDPosition;

DWORDBlockNum;

DWORDTimeCreate;

DWORDTimeWrite;

charReserved[32];

}WIS_OBJECT_ENTRY;

 

偏移字节数描述

016对象的名称,以零结尾的字符串。

164对象的状态:

=0为正常;=1为抛弃;=2为删除。

202对象的主属性:

=1为通道对象;=2为表对象;=3为流对象。

222对象的子属性,描述对应主属性的子属性。

244对象数据体从文件开始处的偏移量。

284对象数据体占用磁盘的块数。

324对象产生的时间。

364对象最近修改的时间。

4032保留字节。

1.1.4对象数据体

对象数据体记录各个对象的具体特性及数据。

根据不同的主属性分三种类型。

对象数据体在WIS文件中的位置由对象入口指定。

 

1.1.5通道对象

通道对象用来存放采集和计算结果数据(如测井曲线)。

分为通道信息和通道数据两部分。

WIS文件将在一定时空内对某一采集或计算的物理信息数据集统称为通道数据。

通道信息描述通道数据的存放形式,分为基本信息和维信息,基本信息描述信息的基本物理含义,维信息描述信息的时空特性,可以等间隔(连续)或非等间隔(离散)。

最大允许有四维信息,通道信息共占用一个块空间,结构定义如下:

typedefstructtagWIS_CHANNLE

{

charUnit[8];

charAliasName[16];

charAliasUnit[16];

WORDRepCode;

WORDCodeLen;

floatMinVal;

floatMaxVal;

WORDReserved;

WORDNumOfDimension;

WIS_CHANNEL_DIMENSIONDimInfo[4];

}WIS_CHANNEL;

 

偏移字节数描述

08对象的单位,以零结尾的字符串。

816对象的别名,以零结尾的字符串。

2416单位的别名,以零结尾的字符串。

402对象数据类型,参见3.2.1。

422数据类型的长度。

444对象的最小值(测井曲线缺省左刻度值)。

484对象的最大值(测井曲线缺省右刻度值)。

522保留字节。

542对象维信息数。

564*56对象维信息。

 

通道维信息结构定义如下:

typedefstructtagWIS_CHANNLE_DIMENSION

{

charName[8];

charUnit[8];

charAliasName[16];

floatStartVal;

floatDelta;

DWORDSamples;

DWORDMaxSamples;

DWORDSize;

WORDRepCode;

WORDReserved;

}WIS_CHANNEL_DIMENSION;

 

偏移字节数描述

08维的名称,以零结尾的字符串。

88维的单位,以零结尾的字符串。

1616维的别名,以零结尾的字符串。

324维的开始值。

364维的采集或计算增量。

对于离散数据,该值为0,数据中记录该维的值。

404维的数据采样点数。

如果该值为0,采样点数为可变值,数据中记录该值。

对于第一维数据,该值不能为0。

444维的数据采样最大点数。

该值仅当采样点数信息为0(可变采样点)时有效,该维信息在数据中所占用的字节数通过该值计算。

484该维上每一采样点所占用的字节数。

522维的数据类型,参见3.2.1。

542保留字节。

 

 

通道数据从通道描述信息的下一块开始。

下面为一个包含深度和时间维的物理信息数据体的存放顺序。

第一维为深度,第二维为时间。

 

[A1]+[N2]+[B1]+X1+[B2]+X2+···+[BN]+XN+

[A2]+[N2]+[B1]+X1+[B2]+X2+···+[BN]+XN+

···

···

[AN]+[N2]+[B1]+X1+[B2]+X2+···+[BN]+XN

 

其中:

A1,A2,···,AN代表深度值,当深度维信息结构中的Delta为零时,记录此值。

N2代表当前深度点上的时间采样点数,当时间维信息结构中的采样点数为零时,记录此值。

B1,B2,···,BN代表时间值,当时间维信息结构中的Delta为零时,记录此值。

X1,X2,···,N代表物理信息的值。

1.1.6表对象

表对象用来存放二维表数据,分为表信息和表数据体两个部分。

表信息由不同的表项组成,每一表项称为字段。

表信息结构定义如下:

typedefstructtagWIS_TABLE

{

DWORDRecordCount;

DWORDFieldCount;

WIS_TABLE_FIELD*pField;

}WIS_TABLE;

偏移字节数描述

04表的记录数。

44表的字段数。

84指向字段信息结构的指针。

 

 

 

字段信息结构定义如下:

typedefstructtagWIS_TABLE_FIELD

{

charName[32];

WORDRepCode;

WORDLength;

DWORDReserved;

}WIS_TABLE_FIELD;

 

偏移字节数描述

032字段的名称,以零结尾的字符串。

322字段值的浮点类型,参见3.2.1。

342字段值的长度。

 

表数据体(记录)从表信息记录的下一块开始。

1.1.7流对象

流对象用来存放二进制数据块。

开始为4个字节的无符号长整形数,代表数据流的长度。

接着为该流的二进制值。

 

第二章 WIS测井数据格式转换文本格式C程序代码

代码如下:

viewplaincopytoclipboardprint?

1./* 

2. * Copyright (c) 2011, Sun Yunqiang 

3. * All rights reserved. 

4. * Software:

 wis2txt_win 

5. * Version:

 1.0 

6. * Author:

 Sun Yunqiang 

7. * English Name:

 Alex Sun 

8. * Release Date:

 18/03/2011 

9.*/  

10.  

11./** ***************************************************************** */  

12./** This Program is for converting wis format file to txt format file */  

13./** Command:

 wis2txt_win.exe  args1  args2                            */  

14./** Description:

                                                      */  

15./**              wis2txt_win.exe:

 the executable file as command      */  

16./**              args1:

 the first argument that is the wis file name  */  

17./**              args2:

 the second argument that is the txt file name */  

18./** ***************************************************************** */  

19.  

20.#include   

21.#include   

22.#include   

23.#include   

24.#include   

25.#include   

26.#include   

27.  

28.#define ROW 65536  

29.#define COL 512  

30.  

31.  

32./* **************************************** */  

33./* Below blocks are the structs of wis file */  

34./* **************************************** */  

35.typedef struct tagWIS_HEAD  

36.{  

37.    WORD  MachineType;  // 0-PC  1-SUN   2-IBM  3-HP  

38.    WORD  MaxObjectNumber;  

39.    WORD  ObjectNumber;  

40.    WORD  BlockLen;  

41.    DWORD EntryOffset;  

42.    DWORD DataOffset;  

43.    DWORD FileSize;  

44.    time_t TimeCreate;  

45.    char  Reserved[32];  

46.}WIS_HEAD;  

47.  

48.typedef struct tagWIS_OBJECT_ENTRY  

49.{  

50.    char   Name[16];  

51.    long   Status;  

52.    short  Attribute;      // 1-通道对象 2-表对象 3-流对象  

53.    short  SubAttribute;   // 1-曲线对象 2-波形对象 3-地层测试对象 4-时深时对象  

54.    DWORD  Position;       // 对象数据体从文件开始处的偏移量  

55.    DWORD  BlockNum;  

56.    time_t TimeCreate;  

57.    time_t TimeWrite;  

58.    char  Reserved[32];  

59.}WIS_OBJECT_ENTRY;  

60.  

61.typedef struct tagWIS_CHANNEL_DIMENSION  

62.{  

63.    char   Name[8];  

64.    char   Unit[8];  

65.    char   AliasName[16];  

66.    float  StartVal;  

67.    float  Delta;  

68.    DWORD  Samples;  

69.    DWORD  MaxSamples;  

70.    DWORD  Size;  

71.    WORD   RepCode;  

72.    WORD   Reserved;  

73.}WIS_CHANNEL_DIMENSION;  

74.  

75.typedef struct tagWIS_CHANNEL  

76.{  

77.    char   Unit[8];  

78.    char   AliasName[16];  

79.    char   AliasUnit[16];  

80.    WORD   RepCode;  

81.    WORD   CodeLen;  

82.    float  MinVal;  

83.    float  MaxVal;  

84.    WORD   Reserved;  

85.    WORD   NumOfDimension;  

86.    WIS_CHANNEL_DIMENSION DimInfo[4];  

87.}WIS_CHANNEL;  

88.  

89.typedef struct tagWIS_STREAM  

90.{  

91.    DWORD Length;  

92.    DWORD Offset;  

93.}WIS_STREAM;  

94.  

95.typedef struct tagWIS_TABLE_FIELD  

96.{  

97.    char   Name[32];  

98.    WORD   RepCode;  

99.    WORD   Length;  

100.    DWORD  Reserved;  

101.} WIS_TABLE_FIELD;  

102.  

103.typedef struct tagWIS_TABLE  

104.{  

105.    DWORD  RecordCount;  

106.    DWORD  FieldCount;  

107.    WIS_TABLE_FIELD *pField;  

108.}WIS_TABLE;  

109.  

110.  

111.typedef struct tagWIS_TABLE_DEFAULT_FILED  

112.{  

113.    char   Name[16];  

114.    char   Alias[16];  

115.    char   Unit[8];  

116.    char   Type[8];  

117.    WORD   Length;  

118.    WORD   Count;  

119.    char   DefVal[64][12];  

120.} WIS_TABLE_DEFAULT_FIELD;  

121.  

122.  

123.typedef struct tagWIS_DEFAULT_TABLE  

124.{  

125.    char   Name[16];  

126.    char   Alias[16];  

127.    char   Attrb[8];  

128.    DWORD  FieldCount;  

129.    WIS_TABLE_DEFAULT_FIELD *pField;  

130.} WIS_DEFAULT_TABLE;  

131.  

132.  

133.  

134./* 曲线的信息结构体*/  

135.typedef struct tagCURVE_HEAD  

136.{  

137.    char   Name[16];        // 曲线的名字  

138.    char   Unit[8];         // 曲线的单位  

139.    float  startMD;         // 曲线的起始深度  

140.    float  stopMD;          // 曲线的结束深度  

141.    int    pointNum;        // 数据样点数  

142.    int    position;        // 数据位置  

143.    struct tagCURVE_HEAD  *next;  

144.} CURVE_HEAD;  

145.  

146./* 曲线的数据结构体 */  

147.typedef struct tagCURVE_DATA  

148.{  

149.    char   Name[16];        // 曲线的名字  

150.    char   Unit[8];         // 曲线的单位  

151.    float  Depth[ROW];      // 曲线的深度值  

152.    float  Value[ROW];      // 曲线的值  

153.    struct tagCURVE_DATA  *next;  

154.} CURVE_DATA;  

155.  

156.  

157.  

158.  

159./* ************************************************************* */  

160./* Below block is the Main program of processing wis format file */  

161./* ************************************************************* */  

162.  

163.int main(int argc, char *argv[])  

164.{  

165.    FILE *wisfile;        // 输入文件  

166.    FILE *txtfile;        // 输出文件  

167.    char *infilename = argv[1];  

168.    char *outfilename = argv[2];  

169.    // char *infilename = "demoa.wis";  

170.    // char *outfilename = "demoa.txt";  

171.  

172.    if(argc !

= 3 )  

173.    {  

174.        printf("ERROR:

 Command parameters is not defined correctly!

/n");  

175.       exit

(1);  

176.    }  

177.  

178.  

179.    wisfile = fopen(infilename, "rb");  

180.    if(wisfile == NULL)  

181.    {  

182.        printf("ERROR:

 Read file terminated!

/n");  

183.        exit

(1);  

184.    }  

185.    txtfile = fopen(outfilename, "w");  

186.    if(txtfile == NULL)  

187.    {  

188.        printf("ERROR:

 Write file terminated!

/n");  

189.        exit

(1);  

190.    }  

191.  

192.    /* Process wis file, Read it and transfer it to text */  

193.  

194.    /** wis文件标识符从文件偏移0开始,为10个字节的字符 */  

195.    char wisid[10];  

196.    fread(wisid, 10, 1, wisfile);  

197.    // printf("文件标识符:

 %s/n", wisid);  

198.    fprintf(txtfile, "ASCII WIS %c%c%c/n", wisid[4], wisid[5], wisid[6]);  

199.  

200.    /** 头文件紧接文件标识 */  

201.    WIS_HEAD *wishead;  

202.    wishead = (WIS_HEAD *)malloc(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 远程网络教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1