WIS测井数据格式文档格式.docx
《WIS测井数据格式文档格式.docx》由会员分享,可在线阅读,更多相关《WIS测井数据格式文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
偏移字节数描述
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对象数据类型,参见
422数据类型的长度。
444对象的最小值(测井曲线缺省左刻度值)。
484对象的最大值(测井曲线缺省右刻度值)。
522保留字节。
542对象维信息数。
564*56对象维信息。
通道维信息结构定义如下:
typedefstructtagWIS_CHANNLE_DIMENSION
charName[8];
floatStartVal;
floatDelta;
DWORDSamples;
DWORDMaxSamples;
DWORDSize;
}WIS_CHANNEL_DIMENSION;
08维的名称,以零结尾的字符串。
88维的单位,以零结尾的字符串。
1616维的别名,以零结尾的字符串。
324维的开始值。
364维的采集或计算增量。
对于离散数据,该值为0,数据中记录该维的值。
404维的数据采样点数。
如果该值为0,采样点数为可变值,数据中记录该值。
对于第一维数据,该值不能为0。
444维的数据采样最大点数。
该值仅当采样点数信息为0(可变采样点)时有效,该维信息在数据中所占用的字节数通过该值计算。
484该维上每一采样点所占用的字节数。
522维的数据类型,参见
542保留字节。
通道数据从通道描述信息的下一块开始。
下面为一个包含深度和时间维的物理信息数据体的存放顺序。
第一维为深度,第二维为时间。
[A1]+[N2]+[B1]+X1+[B2]+X2+·
·
+[BN]+XN+
[A2]+[N2]+[B1]+X1+[B2]+X2+·
[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];
WORDLength;
DWORDReserved;
}WIS_TABLE_FIELD;
032字段的名称,以零结尾的字符串。
322字段值的浮点类型,参见
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:
7.
English
Name:
Alex
8.
Release
Date:
18/03/2011
9.*/
10./**
*****************************************************************
*/
11./**
This
Program
is
for
converting
wis
format
file
to
txt
12./**
Command:
wis2txt_win.exe
args1
args2
13./**
Description:
14./**
wis2txt_win.exe:
the
executable
as
command
15./**
args1:
first
argument
that
name
16./**
args2:
second
17./**
18.#include
<
windows.h>
19.#include
stdio.h>
20.#include
stdlib.h>
21.#include
string.h>
22.#include
ctype.h>
23.#include
time.h>
24.#include
math.h>
25.#define
ROW
65536
26.#define
COL
512
27./*
****************************************
28./*
Below
blocks
are
structs
of
29./*
30.typedef
struct
tagWIS_HEAD
31.{
32.
WORD
MachineType;
//
0-PC
1-SUN
2-IBM
3-HP
33.
MaxObjectNumber;
34.
ObjectNumber;
35.
BlockLen;
36.
DWORD
EntryOffset;
37.
DataOffset;
38.
FileSize;
39.
time_t
TimeCreate;
40.
char
Reserved[32];
41.}WIS_HEAD;
42.typedef
tagWIS_OBJECT_ENTRY
43.{
44.
Name[16];
45.
long
Status;
46.
short
Attribute;
1-通道对象
2-表对象
3-流对象
47.
SubAttribute;
1-曲线对象
2-波形对象
3-地层测试对象
4-时深时对象
48.
Position;
对象数据体从文件开始处的偏移量
49.
BlockNum;
50.
51.
TimeWrite;
52.
53.}WIS_OBJECT_ENTRY;
54.typedef
tagWIS_CHANNEL_DIMENSION
55.{
56.
Name[8];
57.
Unit[8];
58.
AliasName[16];
59.
float
StartVal;
60.
Delta;
61.
Samples;
62.
MaxSamples;
63.
Size;
64.
RepCode;
65.
Reserved;
66.}WIS_CHANNEL_DIMENSION;
67.typedef
tagWIS_CHANNEL
68.{
69.
70.
71.
AliasUnit[16];
72.
73.
CodeLen;
74.
MinVal;
75.
MaxVal;
76.
77.
NumOfDimension;
78.
WIS_CHANNEL_DIMENSION
DimInfo[4];
79.}WIS_CHANNEL;
80.typedef
tagWIS_STREAM
81.{
82.
Length;
83.
Offset;
84.}WIS_STREAM;
85.typedef
tagWIS_TABLE_FIELD
86.{
87.
Name[32];
88.
89.
90.
91.}
WIS_TABLE_FIELD;
92.typedef
tagWIS_TABLE
93.{
94.
RecordCount;
95.
FieldCount;
96.
WIS_TABLE_FIELD
*pField;
97.}WIS_TABLE;
98.typedef
tagWIS_TABLE_DEFAULT_FILED
99.{
100.
101.
Alias[16];
102.
103.
Type[8];
104.
105.
Count;
106.
DefVal[64][12];
107.}
WIS_TABLE_DEFAULT_FIELD;
108.typedef
tagWIS_DEFAULT_TABLE
109.{
110.
111.
112.
Attrb[8];
113.
114.
WIS_TABLE_DEFAULT_FIELD
115.}
WIS_DEFAULT_TABLE;
116./*
曲线的信息结构体*/
117.typedef
tagCURVE_HEAD
118.{
119.
曲线的名字
120.
曲线的单位
121.
startMD;
曲线的起始深度
122.
stopMD;
曲线的结束深度
123.
int
pointNum;
数据样点数
124.
position;
数据位置
125.
*next;
126.}
CURVE_HEAD;
127./*
曲线的数据结构体
128.typedef
tagCURVE_DATA
129.{
130.
131.
132.
Depth[ROW];
曲线的深度值
133.
Value[ROW];
曲线的值
134.
135.}
CURVE_DATA;
136./*
*************************************************************
137./*
block
Main
program
processing
138./*
139.int
main(int
argc,
*argv[])
140.{
141.
FILE
*wisfile;
输入文件
142.
*txtfile;
输出文件
143.
*infilename
=
argv[1];
144.
*outfilename
argv[2];
145.
"
demoa.wis"
;
146.
demoa.txt"
147.
if(argc
!
3
)
148.
{
149.
printf("
ERROR:
Command
parameters
not
defined
correctly!
/n"
);
150.
exit
(1);
151.
}
152.
wisfile
fopen(infilename,
rb"
153.
if(wisfile
==
NULL)
154.
155.
Read
terminated!
156.
157.
158.
txtfile
fopen(outfilename,
w"
159.
if(txtfile
160.
161.
Write
162.
163.
164.
/*
Process
file,
it
and
transfer
text
165.
/**
wis文件标识符从文件偏移0开始,为10个字节的字符
166.
wisid[10];
167.
fread(wisid,
10,
1,
wisfile);
168.
文件标识符:
%s/n"
wisid);
169.
fprintf(txtfile,
ASCII
WIS
%c%c%c/n"
wisid[4],
wisid[5],
wisid[6]);
170.
头文件紧接文件标识
171.
WIS_HEAD
*wishead;
172.
wishead
(WIS_HEAD
*)malloc(sizeof(WIS_HEAD));
173.
fseek(wisfile,
SEEK_SET);
174.
fread(wishead,
sizeof(WIS_HEAD),
175.
pri