WIS测井数据文件格式
WIS文件分为文件头、对象入口记录和对象数据三部分。数据存放以块为单位,一个块为1024字节。WIS文件能存放三种类型的对象,根据对象的类型分为通道对象、表对象和流对象。通道对象一般用来存放采集数据和处理结果(如测井曲线),表对象用来存放二维表数据(如解释结论),流对象用来存放二进制数据块(如解释参数,用户数据)。WIS文件结构
1、    文件标识
WIS文件标识从文件偏移零开始,为10个字节的字符。
2、    文件头结构
头结构紧接文件标识。描述WIS文件的公共信息。结构定义如下:
typedef struct tagWIS_HEAD
{
    WORD MachineType;
    WORD MaxObjectNumber;
    WORD ObjectNumber;
    WORD BlockLen;
    DWORD EntryOffset;
    DWORD DataOffset;
    DWORD FileSize;
    DWORD TimeCreate;
    char Reserved[32];
}WIS_HEAD;
偏移            字节数                        描述
0            2                机器类型=1为PC;=2为SUN;=3为IBM;=4为HP
2            2                允许记录的最大对象数。缺省为512个
4            2                当前记录的对象总数(包括删除和抛弃的对象)
6            2                块长。以块为单位,该值指示每一数据块的字节数
8            4                对象入口记录从文件开始的偏移量
12            4                对象数据记录从文件开始的偏移量
16            4                WIS文件的字节数大小
20            4                WIS文件产生的时间
24            32                保留字节3、    对象入口
对象入口描述每个对象的公共信息,开始位置由头结构给出。每个对象的描述信息前后相连。结构定义如下:
    typedef struct tagWIS_OBJECT_ENTRY
{
    char  Name[16];
    long  Status;
    short Attribute;
    short SubAttribute;
    DWORD Position;
    DWORD BlockNum;
    DWORD TimeCreate;
    DWORD TimeWrite;
    char  Reserved[32];
}WIS_OBJECT_ENTRY;
偏移            字节数                        描述
0            16                对象的名称,以零结尾的字符串。
16            4                对象的状态:=0为正常;=1为抛弃;=2为删除
20            2                对象的主属性:=1为通道对象;=2为表对象;=3为流对象
22            2                对象的子属性,描述对应主属性的子属性
24            4                对象数据体从文件开始处的偏移量
28            4                对象数据体占用磁盘的块数
32            4                对象产生的时间
36            4                对象最近修改的时间
40            32                保留字节4、    对象数据体
对象数据体记录各个对象的具体特性及数据。根据不同的主属性分三种类型。对象数据体在WIS文件中的位置由对象入口指定。5、    通道对象
通道对象用来存放采集和计算结果数据(如测井曲线)。分为通道信息和通道数据两部分。
WIS文件将在一定时空内对某一采集或计算的物理信息数据集统称为通道数据。通道信息描述通道数据的存放方式,分为基本信息和维信息,基本信息描述信息的基本物理含义,维信息描述信息的时空特性,可以等间隔(连续)或非等间隔(离散)。最大允许有四维信息,通道信息共占有一个块空间,结构定义如下:
typedef struct tagWIS_CHANNLE
{
    char  Unit[8];
    char  AliasName[16];
    char  AliasUnit[16];
    WORD  RepCode;
    WORD  CodeLen;
    float MinVal;
    float MaxVal;
    WORD  Reserved;
    WORD  NumOfDimension;
    WIS_CHANNLE_DIMENSION DimInfo[4];
}WIS_CHANNLE;
偏移            字节数                        描述
0            6                        对象的单位,以零结尾的字符串
8            16                        对象的别名,以零结尾的字符串
24            16                        单位的别名,以零结尾的字符串
40            2                        对象数据类型
42            2                        数据类型的长度
44            4                        对象的最小值(测井曲线缺省左刻度值)
48            4                        对象的最大值(测井曲线缺省右刻度值)
52            2                        保留字节
54            2                        对象维信息数
56            4*56                    对象维信息
通道维信息结构定义如下:
typedef struct tagWIS_CHANNLE_DIMENSION
{
    char  Name[8];
    char  Unit[8];
    char  AliasName[16];
    float StartVal;
    float Delta;
    DWORD Samples;
    DWORD MaxSamples;
    DWORD Size;
    WORD  RepCode;
    WORD  Reserved;
}WIS_CHANNLE_DIMENSION;
偏移            字节数                        描述
0            8                        维的名称,以零结尾的字符串
8            8                        维的单位,以零结尾的字符串
16            16                        维的别名,以零结尾的字符串
32            4                        维的开始值
36            4                        维的采集或计算增量。对于离散数据,该值为零,数据中记录该维的值
40            4                        维的数据采样点数。如果该值为0,采样点数为可变值,数据中记录该值。对于第一维数据,改制不能为0。
44            4                        维的数据采样最大点数。该值仅当采样点数信息为0(可变采样点)时有效,该维信息在数据中所占用的字节数通过该值计算。
48            4                        该维上每一采样点所占用的字节数
52            2                        维的数据类型
54            2                        保留字节
通道数据从通道描述信息的下一块开始。6、    表对象
表对象用来存放二维数据表,分为表信息和表数据体两个部分。表信息由不同的表项组成,每一表象称为字段。表信息结构定义如下:
typedef struct tagWIS_TABLE
{
    DWORD RecordCount;
DWORD FieldCount;
WIS_TABLE_FIELD *pField;
}WIS_TABLE;
偏移            字节数                        描述
0                4                        表的记录数
4                4                        表的字段数
8                4                        指向字段信息结构的指针
字段信息结构定义如下:
typedef struct tagWIS_TABLE_FIELD
{
char  Name[32];
WORD RepCode;
WORD Length;
DWORD Reserved;
}WIS_TABLE_FIELD;
偏移            字节数                        描述
0                32                        字段的名称,以零结尾的字符串
32                2                        字段值的浮点类型
34                2                        字段值的长度
表数据体(记录)从表信息记录的下一块开始7、    流对象
流对象用来存放二进制数据块。开始为4个字节的无符号长整形数,代表数据流的长度。接着为该流的二进制值。
对象子属性定义
通道对象子属性定义
代码值        类型说明
1    曲线对象
2    波形对象
3    地层测试对象
4    时深时对象
这就是一些资料

解决方案 »

  1.   

    有C的,太多了没时间,你先看着,有朋友来了也会帮你分析。空了的朋友可以研究一下算法,把它转成C#
    http://blog.csdn.net/syunqiang/article/details/6277458
      

  2.   


    哎 C++编写的wis读取代码我也有  只是不熟悉C++  有些看不明白  所以没有办法把它转成C#。
      

  3.   

    公司最近事儿很多,没有时间去看C++。  希望各位大哥 大侠们有空没什么事儿的时候帮帮研究研究C
    #怎么读取WIS。  谢谢
      

  4.   

    到www.geoilog.com网站上有C#做的解析wis格式测井数据的相关软件。