////////////////////////////////////////////////////////////////////////////// //文件: 格式转换类 //主要功能: // 转换GeoMap3.2的GDB格式 // //程序编写: 2009-8-04 // // ///////////////////////////////////////////////////////////////////////////// #pragma once #include "GeoMapDataType.h" namespace NFormatReader { namespace NGeoMapReader { /*********************************************** // Geomap 3.2 图形文件(GDB)结构定义 // 注意:设置结构成员对齐方式为1字节 // 目前支持的文件格式版本为3.2/3.3/3.51/3.6 //***********************************************/ #pragma pack(1) // Geomap 3.2 图元标识 enum GMElementID { eSymbol = 3, // 符号 eText, // 文本 eLegend, // 图例框 eScale, // 比例尺 eAxis, // 刻度轴 eCompass, // 方向标 eWell, // 井位 eReside = 10, // 地名 eFrame = 12, // 图框 eGrid, // 网格 eRect = 15, // 矩形 eRoundRect, // 圆角矩形 ePie, // 饼/椭圆 eLine, // 线段矩形 eBmp, // 位图(BMP) eMetafile, // 元文件(WMF/EMF) eOle = 21, // OLE图元 eTriagonal = 23, // 三角图(23) eGraphy, // 统计图(24) ePolyline = 26, // 折线 eIsoline, // 等值线 eFault, // 断层线 ePoly, // 多边形(面) eSeisSection, // 地震剖面(30) eSeisLine, // 地震测线(31) eSeisArea, // 地震工区(32) eLithology, // 岩性剖面(33) eLog, // 测井曲线(34) eWellText, // 井旁文字(35) eWellLog, // 井旁曲线(36) eWellMarker = 37, // 井旁标记(37) eCompound = 45, // 组合图元 eCustomArrow1= 47, // 自定义图元:单向箭头 eCustomLabel, // 自定义图元:矩形标注 eCustomPentagon, // 自定义图元:五边形 eCustomPentacle, // 自定义图元:五角星 eCustomCube, // 自定义图元:立方体 eCustomHexagon, // 自定义图元:六边型 eCustomCrisscross, // 自定义图元:十字型 eCustomArrow2, // 自定义图元:双向箭头 eCustomCoattail, // 自定义图元:燕尾箭头 eOilWaterCol = 63, // 油水柱子 eDataCross, // 数据十字 eString, // 文字(多行、带上下标) }; //最初投影参数GMProjection与图件信息GMMapInfo定义在了一块,为了统一分开进行定义 //GMFileHead中的与GMLayerHead中的投影参数及图件信息定义完全相同 struct GMProjection { int earthType; // 椭球体类型 (椭球体索引号) int t21i1; double axisLong; // 椭球体长轴 double AxisShort; // 椭球体短轴 int projType; // 投影类型 (投影方式索引号) int t22i1; double centerMeridian; // 中央子午线(弧度,下同) (中央经线) double latOrig; // 原点纬度 double exPand1; // 扩展1 double latFirst; // 第一纬线 (割线1) double exPand2; // 扩展2 double latSecond; // 第二纬线 (割线2) double exPand3; // 扩展3 double scaleFactor; // 比例因子 double offsetEast; // 东偏移 double offsetNorth; // 北偏移 int bandType; // 分带方法(0:六度带,1:三度带,2:不分带) int band; // 带号 DRect lonlat; // 经纬度范围 int coordType; // 坐标类型 0-用户坐标 1-经纬度坐标 2-大地坐标 int coordUnit; // 坐标单位 = 0 单位(毫米) = 1 单位(米) }; //映射信息 struct GMMapInfo { int t31i1; int t32i1; int t33i1; int t34i1; double t41d1; double t42d1; int t51i1; IRect user; // 用户/大地坐标范围 IRect paper; // 图件在图纸上的坐标范围(左、上、右、下),图件左下角为(0,0)点,右上角(宽度,高度),单位为mm double factor; // 当前缩放比例 double xScale; // X方向比例 double yScale; // Y方向比例 int t61i4[4]; }; // Geomap 3.2 文件头结构(0x1000=4096字节) struct GMFileHead { char magic[20]; // (Geomap v3.20 Map) char t1c10[10]; // (0) char t2c32[32]; // 北京侏罗纪技术发展有限责任公司 char t3c46[46]; // Geomap软件开发组 1Geomap软件开发组 1998.8 char t4c12[12]; // 打开输出文件 char t5c392[392]; int layerStart; // 图层索引的开始位置(0x0200) char mapName[80]; // 图件名称 char t6c504[504]; int t7i1; int t8i1; char t9c1490[1490]; ::byte secrecyLevel; // 安全级别(密级)(0x0a26) ::byte t10c1; char t10c166[166]; int dispLevel; // 显示级别(0x0ace) char unit[60]; // 绘图单位 char worker[30]; // 绘图人员 char scale[30]; // 原图比例 char date[24]; // 绘图日期 char desc[80]; // 备注说明 int paperWidth; // 图件宽度(毫米:MM,下同) int paperHeight; // 图件高度 GColor bkColor; // 图件背景颜色(RGB) GMProjection projection; //投影参数 GMMapInfo mapInfo; //图件信息 int t71i205[205]; short t81s1; }; // 图层数据索引表 struct GMLayerIndex { int pos; // 位置偏移量(相对文件开始位置) int len; // 字节长度 }; // 图层头结构(2048字节) struct GMLayerHead { int layerEnd; // 图层结束位置 char magic[20]; // Geomap v3.00 Layer char t1c42[42]; // 北京侏罗纪北京侏罗纪技术发展有限责任公司 char t2c46[46]; // Geomap软件开发组 1Geomap软件开发组 1998.8 char t3c12[12]; // 0x203ED6D00A0A0000D4DACDBC char t4c388[388]; int t7i1; char layerType[8]; // 图层类型 (0x200+4) short t8s1; char layerSort[8]; // 图层类别 int layerShow; // 图层是否显示 int readOnly; // 图层是否只读 int layerCoord; // 图层是否按坐标叠合 int equalScale; // 图层是否等比缩放 int layerLevel; // 图层级别 double t10[6]; GMProjection projection; //投影参数 GMMapInfo mapInfo; //图件信息 int nameLen; // 图层名称字符串长度 char nameStr[80]; // 图层名称 char t71c1094[1094]; // 剩余字节(0) //int layerEnd; // 图层结束位置 //char magic[20]; // Geomap v3.00 Layer //char t1c42[42]; // 北京侏罗纪北京侏罗纪技术发展有限责任公司 //char t2c46[46]; // Geomap软件开发组 1Geomap软件开发组 1998.8 //char t3c12[12]; // 0x203ED6D00A0A0000D4DACDBC //char t4c388[388]; //int t7i1; //char layerType[8]; // 图层类型 (0x200+4) //short t8s1; //char layerSort[8]; // 图层类别 //int layerShow; // 图层是否显示 //int readOnly; // 图层是否只读 //int layerCoord; // 图层是否按坐标叠合 //int t9i1; //int layerLevel; // 图层级别 //double t10[6]; //int earthType; // 椭球体类型 //int t21i1; //double axisLong; // 椭球体长轴 //double axisShort; // 椭球体短轴 //int projType; // 投影类型 //int t22i1; //double centerMeridian;// 中央子午线(弧度,下同) //double latOrig; // 原点纬度 //double t23d1; //double latFirst; // 第一纬线 //double t24d1; //double latSecond; // 第二纬线 //double t25d1; //double prjScale; // 比例因子 //double offsetEast; // 东偏移 //double offsetNorth; // 北偏移 //int bandType; // 分带方法(0:六度带,1:三度带,2:不分带) //int band; // 带号 //DRect lonlat; // 经纬度范围 //int coordType; //坐标类型 0-用户坐标 1-经纬度坐标 2-大地坐标 //int coordUnit; //coord_unit = 0 单位(毫米) = 1 单位(米) //int t31i1; //int t32i1; //int t33i1; //int t34i1; //double t41d1; //double t42d1; //int t51i1; //IRect user; // 大地坐标(投影后坐标)范围 //IRect paper; // 图层在图纸上的坐标范围(左、上、右、下)(右边距=图纸宽度-右位置,顶边距=图纸高度-顶位置) //double factor; // 当前缩放比例 //double xScale; // X方向比例 //double yScale; // Y方向比例 //int t61i4[4]; //int nameLen; // 图层名称字符串长度 //char nameStr[80]; // 图层名称 //char t71c1094[1094]; // 剩余字节(0) }; // 图层集 总图层 struct GMLayerTotal { int nLayerCount; // 图层总数 GMLayerHead head; // 每个图层结构 }; // 图元基本数据结构 struct GMBase { // 基本数据 int t1i1; short t2s2; int t3i3[3]; int angle; // 图元旋转角度 int t4i5[5]; IRect bbox; // 图元MBR short moveable; // 是否允许移动 }; // 符号 struct GMSymbol { GMBase base; // 基本数据 // 专有数据 IPoint coordinate; // 中心坐标 int width,height; // 符号大小 int symbol; // 符号ID GColor color; // 符号颜色(单色模式时使用) GColor bkcolor; // 背景颜色 short transparence; // 是否透明 GColor fillColor; // +GM30(表示3.30以后版本增加的内容,以下类似) 填充颜色(彩色模式时使用) short t1s1; // +GM35 ? short colorMode; // +GM30 颜色模式(0:单色,1:彩色,2:设计颜色) float widthScale; // +GM36 笔宽系数 int version; // 版本号------------------------------------------后添加 }; // Richedit字体结构 //(CHARFORMAT原始结构对齐方式为4字节,这里为单字节,因此增加2字节) //struct CharFormat //{ // UINT cbSize; // DWORD dwMask; // DWORD dwEffects; // LONG yHeight; // LONG yOffset; // COLORREF crTextColor; // BYTE bCharSet; // BYTE bPitchAndFamily; // char szFaceName[32]; // short makeHappy; // 增加2字节对齐 //}; #define CharFormat CHARFORMAT // 文本字符串结构 struct GMRichTextStr { int t0i1; // 屏幕分辨率?(=768) CharFormat cf; // 字体 int t1i1; // 字体大小比例分母 int t2i1; int t3i1; ::byte len; // 字符串长度 char str[100]; // 变长字符串 char[len] }; // 文本行结构 struct GMRichTextLine { int t0i1; int align; // 文字对齐方式 CharFormat cf; // 字符字体结构 int nStr; // 字符串数 GMRichTextStr * textStr;//nStr个GMRichTextStr对象------------------------后添加 // int tt; // 未知(=768),需要跳过 }; // 文本 struct GMRichText { GMBase base; // 基本数据 // 专有数据 IRect rect; // 文字范围 short drawBk; // 是否绘制背景颜色; short t1s1; GColor bkColor; // 背景颜色 int EditWidth; // 编辑宽度 int x; // 位置X int y; // 位置X int width; // 宽度 int height; // 高度 int angle; // 角度 int t37i1; // 背景色 int t38i1; // 透明 int t39i1; // 保留 int nLine; // 行数 GMRichTextLine *textLine; // nLine个GMRichTextLine对象后添加 int * temp; // 后续数据-----------------后添加 // GMRichTextLine *textLine; // 后面跟随nLine个GMRichTextLine对象 //(后面的数据无法用结构描述,需要具体分析) }; //// 文本 //struct GMRichText //{ // GMRichTextBase textBase; // GMRichTextLine *textLine; // 每行,后面跟随nLine个GMRichTextLine对象,动态申请内存空间 // CPtrList strList; // 每行包含多个串,每个元素为GMRichTextStr指针 //}; // 文字 struct GMText { GMBase base; // 基本数据 // 专有基本数据(20字节) IRect rect; // 范围 int len; // 字符串长度 char str[256]; // 变长字符串内容 // 专有扩展数据() double widthD; // 文字宽度 double heightD; // 文字高度 double angleD; // 文字旋转角度 GColor color; // 文字颜色 GColor bkColor; // 背景颜色 int DrawBk; // 是否绘制背景颜色 LOGFONT font; // 字体 int hollow; // 是否空心 int align; // 对齐方式(-1:左对齐,0:居中,1:右对齐) int incline; // 倾斜方式(-1:左斜,0:正常,1右斜:) double PenWidth; // 轮廓笔宽 double distChar; // +GM36 文字间距 //double iLine; // 文字行间距 可能是重复的去掉 int scale; // 是否等比缩放:定义文字在图层缩放时是否随图层比例变化。 // “no”为保持文字自身的长宽比不变缩放,“yes”为文字长度比随图层的长宽比缩放 }; // 图例框 struct GMLegend { GMBase base; // 基本数据 // 专有数据 IPoint coordinate; // 坐标 int width,height; // 边框宽度、高度 short edge; // 边框线是否可见(0-N ; 1-Y) short edgeWidth; // 边框线宽 GColor edgeColor; // 边框线颜色 short t1s1; LOGFONT textFont; // 图例框说明字体名称 int textLen; // 图例框说明文字长度 char textStr[50]; // 图例框说明文字(换行用'|'字符替换) int fontSize; // 图例框说明文字大小 GColor textColor; // 图例框说明文字颜色 double xOffset; // 图例框说明文字X偏移 double yOffset; // 图例框说明文字Y偏移 }; // 比例尺 struct GMScale { GMBase base; // 基本数据 // 专有数据 IPoint coordinate; // 坐标 int width; // 轴宽度 GColor color; // 轴颜色 LOGFONT nameFont; // 名称字体 int nameLen; // 名称长度 char nameStr[50]; // 名称文字 double value; // 比例尺数值 GColor nameColor; // 名称颜色 int nameSize; // 名称字体大小 int nameOffset; // 名称垂向偏移 int kdHeight; // 刻度线长 int kdWidth; // 刻度线宽 double t3d1; double kdStart; // 起始刻度值 double kdEnd; // 终止刻度值 double kdInteval; // 刻度间隔 LOGFONT labelFont; // 标注字体 int unit; // 刻度单位标识(0=km,1=m,2=mm,3=mi,4=ya,5=ft,6=in) int unitLen; // 刻度单位字符串长度 char unitStr[50]; // 刻度单位字符串 double scale; // 图件比例除以比例尺数值(Value*比例尺数值=图件比例) int labelPrec; // 刻度标注精度(小数位数) int labelSize; // 刻度标注字体大小 GColor labelColor; // 刻度标注颜色 int labelOffset; // 刻度标注偏移 int t2i1; // +GM35 ? int t2i2; // +GM35 ? int version; // 版本号------------------------------------后添加 }; // 地名(居民地) struct GMReside { GMBase base; // 基本数据 // 专有数据 IPoint coordinate; // 坐标 int symID; // 符号ID int symSize; // 符号大小 GColor symColor; // 符号颜色 LOGFONT nameFont; // 地名字体 int nameLen; // 地名文字长度 char nameStr[50]; // 地名文字 int nameSize; // 地名字体大小 GColor nameColor; // 字体颜色 int nameOffsetX; // 水平偏移 int nameOffsetY; // 垂直偏移 int nameTransparence;// 地名文字是否透明 GColor nameBkColor; // 字体背景颜色 int symTransparence;// 符号是否透明 GColor symBkColor; // 符号背景颜色 GColor fillColor; // +GM35 填充颜色 short t2s1; // +GM35 short colorMode; // +GM35 ?颜色模式 int version; // 版本号------------------------------------后添加 }; // 矩形/圆角矩形/线段 struct GMRectangle { GMBase base; // 基本数据 // 专有数据 int shpType; // 形状类型(1:矩形,3:圆角矩形,4:线段) int fillStyle; // 填充风格(0:不充填,1:填充颜色,2:填充符号,3:模式填充) int edgeDisp; // 是否显示边界 int symId; // 填充的模式或符号ID int symSize; // 符号大小 GColor color; // 填充前景颜色 GColor colorBk; // 填充背景颜色 int edgeWidth; // 边线宽度 GColor edgeColor; // 边线颜色 IRect rect; // 控制矩形坐标/线段的起止点坐标 int xAngle; // 圆角矩形的圆角控制点X偏移 int yAngle; // 圆角矩形的圆角控制点Y偏移 int fillWidth; // 模式填充线宽度 int fillInterval; // 模式填充线间隔 int transparence; // 是否透明 GColor fillColor; // +GM30 填充颜色 short colorMode; // +GM35 颜色模式 short t2s1; // +GM35 ? int version; // 版本号---------------------------------------后添加 }; // 饼/椭圆 struct GMPie { GMBase base; // 基本数据 // 专有数据 int shpType; // 饼(=2) int fillStyle; // 填充风格 int edgeDisp; // 是否显示边界 int symId; // 填充的模式或符号ID int symSize; // 符号大小 GColor color; // 填充前景颜色 GColor colorBk; // 填充背景颜色 int edgeWidth; // 边线宽度 GColor edgeColor; // 边线颜色 IRect rect; // 控制矩形坐标/线段的起止点坐标 int xAngle; // 圆角矩形的圆角控制点X偏移/饼的起始角度 int yAngle; // 圆角矩形的圆角控制点Y偏移/饼的结束角度 int fillWidth; // 模式填充线宽度 int fillInterval; // 模式填充线间隔 //int transparence; // 是否透明(饼图元无此项数据) }; // 刻度轴 struct GMAxis { GMBase base; // 基本数据 // 专有数据 int type; // 刻度轴类型(0:线性,1:对数,2:概率) IPoint coordinate; // 坐标 int len; // 轴长度 int width; // 轴线宽 GColor color; // 轴颜色 int arrow; // 轴是否带箭头 LOGFONT nameFont; // 名称字体 int nameLen; // 名称长度 char nameStr[100]; // 名称文字 int nameSize; // 名称字体大小 GColor nameColor; // 名称颜色 int nameOffset; // 名称垂向偏移 int nameAlign; // 名称对齐方式(0:居中,-1:起点,1:终点) int kdShort; // 短刻度线长 int kdLong; // 长刻度线长 double kdStart; // 起始刻度值 double kdEnd; // 终止刻度值 double labelStart; // 刻度标注起始值 double labelEnd; // 刻度标注终止值 double labelInte; // 刻度标注间隔值 LOGFONT labelFont; // 标注字体 int labelSize; // 刻度标注文字大小 int labelAngle; // 刻度标注角度 int labelOffset; // 刻度标注偏移 int labelPrec; // 刻度标注精度(小数位数) int labelSkip; // 刻度标注间隔数(跳过的标注个数) }; // 方向标 struct GMCompass { GMBase base; // 基本数据 // 专有数据 int type; // 类型(0:基本型,1:指北针,2:箭头) IPoint coordinate; // 坐标 int width,height; // 大小 int lineWidth; // 边线宽度 GColor lineColor; // 边线颜色 int fill; // 是否填充 GColor fillColor; // 填充颜色 LOGFONT nameFont; // 名称字体 int nameLen; // 名称长度 char nameStr[20]; // 名称文字 double nameOffset; // 名称纵向偏移比例(距离图元中心的距离 除以 图元高度) int nameSize; // 名称字体大小 GColor nameColor; // 名称字体颜色 }; // 图框标注字体 struct GMMapFrameFont { LOGFONT font; // 字体名称 int size; // 字体大小 GColor color; // 字体颜色 }; // 图例标注 struct GMMapFrameLab { double value; // 标注值 int len1; // 主标注字符串长度 char str1[20]; // 主标注字符串 int len2; // 次标注字符串长度 char str2[20]; // 次标注字符串 IPoint pt[5]; IPoint pt2[2]; // 主标注及次标注的偏移量 }; // 图框 struct GMMapFrame { GMBase base; // 基本数据 // 专有数据 IRect rect; // 内框边界 int style; // 图框类型 int inWidth; // 内框线宽 GColor inColor; // 内框颜色 int midWidth; // 中框线宽 GColor midColor; // 中框颜色 int outWidth; // 外框线宽 GColor outColor; // 外框颜色 int inMid; // 内中间距 int outMid; // 外中间距 int fillStyle; // 填充模式 0 = 不填充 ;1= 纯色填充 ; 2=符号填充 3 = 位图 ;4=元文件 int symId; // 填充符号 int symSize; // 符号大小 GColor color; // 填充前景颜色 GColor bkColor; // 填充背景颜色 int offset; // 偏移 int gridType; // 格网类型(=0 无格网 =1 经纬网 =2 直角网,=3 经纬与直角网,=4 方里网,=5 经纬与方里网) int jwWidth; // 经纬网线宽 GColor jwColor; // 经纬网颜色 int zjWidth; // 直角网线宽 GColor zjColor; // 直角网颜色 int flWidth; // 方里网线宽 GColor flColor; // 方里网颜色 int jwFlag; // 经纬网标注风格(0:不绘网格,不标值; 1:绘网格,不标值;2:不绘网格,标值;3:绘网格,标值) int zjFlag; // 直角网标注风格(0:不绘网格,不标值; 1:绘网格,不标值;2:不绘网格,标值;3:绘网格,标值) int flFlag; // 方里网标注风格(0:不绘网格,不标值; 1:绘网格,不标值;2:不绘网格,标值;3:绘网格,标值) int t2i3[3]; double lonStart; //(经纬网)指定某经线 double lonInte; //(经纬网)指定经差 double latStart; //(经纬网)指定某纬线 double latInte; //(经纬网)指定纬差 double zjXStart; //(直角)指定某纵线 double zjXInte; //(直角)纵线间隔 double zjYStart; //(直角)指定某横线 double zjYInte; //(直角)横线间隔 double flXStart; //(方里网)指定纵线 double flXInte; //(方里网)纵线间隔 double flYStart; //(方里网)指定某横线 double flYInte; //(方里网)横线间隔 GMMapFrameFont zj; // 经度主标注字体 GMMapFrameFont fj; // 经度次标注字体 int fjPrec; // 经度次标注类别(0:无,1:分,2:秒) GMMapFrameFont zw; // 纬度主标注字体 GMMapFrameFont fw; // 纬度次标注字体 int fwPrec; // 纬度次标注类别(0:无,1:分,2:秒) GMMapFrameFont zx; // 直角X主标注字体 GMMapFrameFont fx; // 直角X次标注字体 int fxPrec; // 直角次X值位数 GMMapFrameFont zy; // 直角Y主标注字体 GMMapFrameFont fy; // 直角Y次标注字体 int fyPrec; // 直角次Y值位数 int zjxyUnit; // 直角XY单位(0:毫米,1:米) double t3d1; GMMapFrameFont zx1; // 方里网X主标注字体 GMMapFrameFont fx1; // 方里网X次标注字体 int fx1Prec; GMMapFrameFont zy1; // 方里网Y主标注字体 GMMapFrameFont fy1; // 方里网Y次标注字体 int fy1Prec; // 方里网次Y值位数 int flxyUnit; // 方里网XY单位(0:毫米,1:米) double t4d1; int version; // 版本号--------------------------------后添加 int remain; // 剩余字节数----------------------------后添加 char * remaniChr; // 保存剩余字节数的数据------------------后添加 //int nLon; // 经度标注个数 //GMMapFrameLab label1[9]; }; // 网格 struct GMGrid { GMBase base; // 基本数据 // 基本属性 IRect rect; // 网格内框矩形 GColor majorColor; // 主格颜色 GColor minorColor; // 次格颜色 int majorLineWidth; // 主格线宽 int minorLineWidth; // 次格线宽 LOGFONT font; // 标注字体 int fontSize; // 标注字体大小 GColor fontColor; // 标注字体颜色 int xAxisPrec; // 横轴标注小数位数 int yAxisPrec; // 纵轴标注小数位数 //纵轴标注偏移 int yLeftOffsetX; // 纵轴左标注X偏移 int yLeftOffsetY; // 纵轴左标注Y偏移 int yRightOffsetX; // 纵轴右标注X偏移 int yRightOffsetY; // 纵轴右标注Y偏移 //横轴标注偏移 int xTopOffsetX; // 横轴上标注X偏移 int xTopOffsetY; // 横轴上标注Y偏移 int xBottomOffsetX; // 横轴下标注X偏移 int xBottomOffsetY; // 横轴下标注Y偏移 int drawBk; // 是否绘制背景 GColor colorBk; // 背景颜色 int drawGrid; // 是否绘制网格 //横轴定义 double xKdStart; // 横轴起始刻度值 double xKdEnd; // 横轴终止刻度值 double xLabelStart; // 横轴起标值 double xLabelEnd; // 横轴终标值 double xMajorValue; // 横轴主格间隔 int xMinorValue; // 横轴次格间隔 int xAxisType; // 横轴类型 (0:线性型,1:对数型,2:概率型,3:无定义) int xLabelType; // 横轴标注方式 (0:无标注,1:上下标注,2:上标注,3:下标注) //纵轴定义 double yKdStart; // 纵轴起始刻度值 double yKdEnd; // 纵轴终止刻度值 double yLabelStart; // 纵轴起标值 double yLabelEnd; // 纵轴终标值 double yMajorValue; // 纵轴主格间隔 int yMinorValue; // 纵轴次格间隔 int yAxisType; // 纵轴类型 (0:线性型,1:对数型,2:概率型,3:无定义) int yLabelType; // 纵轴标注方式 (0:无标注,1:左右标注,2:左标注,3:右标注) int labelSkip; // 跳过的标注个数(?) }; // 井位 struct GMWell { GMBase base; // 基本数据 // 专有数据 IPoint topCoord; // 井口坐标 int topSymbol; // 井口符号ID int topSize; // 井口符号大小 GColor topColor; // 井口符号颜色 GColor topBkColor; // + GM33 井口符号背景色 int topBkTrans; // + GM33 井口符号是否透明 GColor topFillColor; // + GM33 井口符号填充色 short t1s1; // + GM33 =0 short t1s2; // + GM33 =0 IPoint bottomCoord; // 井底坐标 int bottomSymbol; // 井底符号ID int bottomSize; // 井底符号大小 GColor bottomColor; // 井底符号颜色 GColor botBkColor; // + GM33 井口符号背景色 int botBkTrans; // + GM33 井口符号是否透明 GColor botFillColor; // + GM33 井口符号填充色 short version; // + GM33 =0 short t2s2; // + GM33 符号颜色模式 short topColorMode; // + GM35 井口符号颜色模式 short botColorMode; // + GM35 井底符号颜色模式 float topPenScale; // + GM36 井口符号笔宽系数 float botPenScale; // + GM36 井底符号笔宽系数 LOGFONT nameFont; // 井名字体 int nameLen; // 井名文字长度 char nameStr[100]; // 井名文字 int nameSize; // 井名文字字体大小 GColor nameColor; // 井名文字字体颜色 int nameOffsetX; // 井名文字横向偏移 int nameOffsetY; // 井名文字纵向偏移 int nameTransparence; // 井名文字是否透明 GColor nameColorBk; // 井名文字背景颜色 }; // 多边形 struct GMPolygon { GMBase base; // 基本数据 // 名称属性(+GM35) int nameLen; // +GM35 名称长度 char name[256]; // +GM35 名称 // 名称字体属性(+GM35) LOGFONT nameFont; // +GM35 字体(60) int nameSize; // +GM35 文字大小(应除以10) GColor nameColor; // +GM35 文字颜色 int nameDrawBk; // +GM35 是否绘制背景颜色 GColor nameBkColor; // +GM35 背景颜色 int t1i1; // +GM35 int t1i2; // +GM35 int t1i3; // +GM35 int t1i4; // +GM35 int t1i5; // +GM35 int version; // +GM35 int t1i7; // +GM36 float penScale; // +GM36 笔宽系数 // 专有数据 int fillStyle; // 填充模式(0:不充填,1:填充颜色,2:填充符号,3:模式填充) int symId; // 填充符号 int symSize; // 符号大小 GColor fillColor; // 填充前景颜色 GColor fillColorBk; // 填充背景颜色 int t2i1; // +GM35 short colorMode; // +GM35 颜色模式(0:单色,1:彩色,2:设计) int smooth; // 边界平滑方式(0:不平滑,1:抛物线加权,2:张力样条,3:二次B样条) int t3i1; // +GM35 int t3i2; // +GM35 int t3i3; // +GM35 short transparence; // 是否透明 short edge; // 边界是否可见 GColor edgeColor; // 边界颜色 int edgeWidth; // 边界线宽 int patLineW; // 模式填充(系统图案)线宽 int patLineI; // 模式填充(系统图案)线间距 int nPoint; // 顶点个数 }; // 曲线/等值线/断层线 struct GMPolyline { GMBase base; // 基本数据 // 专有数据 int subType; // 曲线类型(0:曲线,1:等值线,2:断层) IPoint coor; // 曲线位置(目前版本值为0) int labelLen; // 曲线名称长度 char labelStr[100]; // 曲线名称 LOGFONT labelFont; // 标注字体 GColor labelColor; // 标注颜色 int smooth; // 边界平滑方式(0:不平滑,1:抛物线加权,2:张力样条,3:二次B样条) // (新版本增加了平滑的方法种类,但不能保存,文件中该参数仅为0或1) GColor color; // 曲线颜色 double lineWidth; // 线宽(应除以10) double LayerWidth; // 层宽比 double LayerLength; // 层长比 int lineStyle; // 线型 int colorDef; // 缺省颜色(0:不使用缺省,1:使用缺省) int version; // 版本号 int nLabel; // 标注点个数(仅对等职线有效,其他为0) int nPoint; // 顶点个数 char temBuf[28]; // 扩展--------------------------------------------后添加 char temBuf2[8]; // 扩展--------------------------------------------后添加 char temBuf3[8]; // 扩展--------------------------------------------后添加 char temBuf4[8]; // 扩展--------------------------------------------后添加 double *labelData; // 标注点数据集------------------------------------后添加 }; // 等值线(32-36,32之后有多余数据) struct GMIsoline { GMBase base; // 基本数据 // 专有数据 int subType; // 曲线类型(目前版本值为0) IPoint coor; // 曲线位置(目前版本值为0) int labelLen; // 高程值字符串长度 char labelStr[100]; // 高程值字符串 LOGFONT labelFont; // 高程标注字体 GColor labelColor; // 高程标注颜色 int smooth; // 边界平滑方式(0:不平滑,1:抛物线加权,2:张力样条,3:二次B样条) // (新版本增加了平滑的方法种类,但不能保存,文件中该参数仅为0或1) GColor color; // 曲线颜色 double lineWidth; // 线宽(应除以10) double LayerWidth; // 层宽比 double LayerLength; // 层长比 int lineStyle; // 线型 int colorDef; // 缺省颜色(0:不使用缺省,1:使用缺省) int t4i1; // (?==0) int nLabel; // 标注点个数(仅对等职线有效,其他为0) int nPoint; // 顶点个数 char temBuf[28]; // 扩展--------------------------------------------后添加 char temBuf2[8]; // 扩展--------------------------------------------后添加 double temDbl; // 扩展--------------------------------------------后添加 double temDbl2; // 扩展--------------------------------------------后添加 double *labelData; // 标注点数据集------------------------------------后添加 }; // 断层线(32-36,32之后有多余数据) struct GMFault { GMBase base; // 基本数据 // 专有数据 int subType; // 曲线类型(目前版本值为0) IPoint coor; // 曲线位置(目前版本值为0) int labelLen; // 断层名称长度 char labelStr[100]; // 断层名称 LOGFONT labelFont; // 标注字体 GColor labelColor; // 标注颜色 int turnGroup; // 断层掉向组数 double turnPosition; // 掉向位置 int turnDirection; // 断层掉向和顶点顺序是否一致(0:逆向,1:顺向) int turnLength; // 断层掉向线段的长度 int turnWidth; // 断层掉向线段的线宽 int faultType; // 断层性质(0:正断层,1:逆断层,2:不明断层,3:不明正断层,4:不明逆断层) int smooth; // 边界平滑方式(0:不平滑,1:抛物线加权,2:张力样条,3:二次B样条) // (新版本增加了平滑的方法种类,但不能保存,文件中该参数仅为0或1) GColor color; // 曲线颜色 double lineWidth; // 线宽 double LayerWidth; // 层宽比 double LayerLength; // 层长比 int lineStyle; // 线型 int colorDef; // 缺省颜色(0:不使用缺省,1:使用缺省) int t3i1; // (?==0) int nLabel; // 标注点个数(仅对等职线有效,其他为0) int nPoint; // 顶点个数 int version; // 版本号----------------------------------------后添加 double tmpDbl; // 扩展----------------------------------------后添加 double tmpDbl2; // 扩展----------------------------------------后添加 double tmpDbl3; // 扩展----------------------------------------后添加 double *labelData; // 标注点数据集--------------------------------后添加 }; // 地震测线(32-36) struct GMSeisLine { GMBase base; // 基本数据 // 专有数据 int gridType; // 网格类型(0:测线网,1:麻点图) int labelMode; // 标注方式(0:无标注,1:左侧,2:右侧,3:左右两侧) int lineWidth; // 测线宽度 int nameLen; // 名称长度 char lineName[50]; // 名称 LOGFONT nameFont; // 名称字体 GColor color; // 名称颜色 GColor lineColor; // 测线颜色 int labBeg; // 炮点标注的起始点号 int labEnd; // 炮点标注的结束点号 int shotRadium; // 炮点半径 int shotInte; // 炮点间隔 int shotDisp; // 标注间隔 LOGFONT shotFont; // 炮点标注字体 int nPoint; // 坐标点数 int nameSize; // 名称大小(旁边的字体) 取反 int labSize; // 炮点标注大小 取反 int t3i5[4]; DPoint ptStart; // 起点坐标 int t4i6[6]; DPoint ptEnd; // 终点坐标 IPoint pt3[4]; IPoint pt4[4]; int remain; // 剩余字节数----------------------------后添加 char *remainData; // 保存剩余字节数据----------------------后添加 }; // 自定义形状 struct GMCustom { GMBase base; // 基本数据 // 专有数据 short subType; // 图元子类别(=图元类别-46) IPoint coordinate; // 坐标 int width,height; // 大小 short edge; // 是否绘制边界 int edgeWidth; // 边界宽度 GColor edgeColor; // 边界颜色 short fillStyle; // 填充风格(0:不填充,1:颜色填充,2:// 符号填充) GColor fillColor; // 填充颜色 int fillSymbol; // 填充符号ID int symSize; // 符号大小 GColor symColor; // 符号前景色 GColor symColorBk; // 符号背景色 int elemType; // 自定义元素类型 int ctrlPointNum; // 控制点数 double ctrlPt[8]; // 控制点(最多8个) }; // 位图 struct GMBmp { GMBase base; // 基本数据 // 专有数据 IRect rect; // 位置和大小 int t1i1; int t2i1; int iW,iH; // 图片大小 int aspect; // 是否等比缩放 int edge; // 是否显示边界 GColor edgeColor; // 边界颜色 int edgeWidth; // 边界线宽 int bmpSize; // BMP位图数据字节长度 BYTE * pbuffer; // 保存数据----------------------------后添加 // 完整的位图数据 //(与BMP文件头有所不同,比BMP独立文件少14个字节,而且此后的24个字节内容有所不同,有待分析) }; // 元文件 struct GMMetafile { GMBase base; // 基本数据 // 专有数据 IRect rect; // 位置和大小 int t1i1; int t2i1; int aspect; // 是否等比缩放 int transparence; // 是否透明 GColor colorBk; // 背景颜色 int edge; // 是否显示边界 GColor edgeColor; // 边界颜色 int edgeWidth; // 边界线宽 int emfSize; // EMF数据字节长度 BYTE *pbuffer; // 保存数据-----------------------------------后添加 // 完整的EMF数据 }; // 统计图(MS CHART) struct GMGraphy { GMBase base; // 基本数据 // 专有数据 IRect rect; // 矩形 int count; // 总字节数 short rowCount; // 行数 short columnCount; // 列数 char num[10]; // 序号 char *name; //层名称 动态 char **dataNum; // 层数据序号 double **data; //层位数据(顶深或底深)动态 }; // 岩性符号 struct GMLithSymbol { double depth; // 深度值 double scale; // 缩进比例 int symId; // 符号ID int symSize; // 符号大小 GColor symColor; // 前景色 GColor symColorBk; // 背景色 GColor symColorFill; // 填充色 short ex1; // 扩展 short colorModel; // 颜色模式 int transparentBk; // 背景透明 int contactType; // 岩层整合类型(0:整合,1:假整合,2:不整合) int drawModel; // 绘制方式 int ex2; // 扩展2 }; //测井曲线 struct GMLog { GMBase base; // 基本数据 // 专有数据 int leftBound; // 左边界 需缩小十倍 int bottomBound; // 底边界 需缩小十倍 int rightBound; // 右边界 需缩小十倍 int topBound; // 顶边界 需缩小十倍 int oilNameLen; // 油田名称长度 char * oilName; // 油田名称 int wellNameLen; // 井名称长度 char * wellName; // 井名称 int curveNameLen; // 曲线名称长度 char * curveName; // 曲线名称 int axisType; // 坐标类型 double depthStart; // 起始深度 double depthEnd; // 结束深度 double sample; // 采样率 double leftScale; // 左刻度 double rightScale; // 右刻度 int ex1; // 扩展 int ex5; // 扩展 int ex2; // 扩展 int ex6; // 扩展 int ex7; // 扩展 int ex8; // 扩展 int ex3; // 扩展 int ex4; // 扩展 int nSample; // 采样点数(每个样点包含一个深度和一个数值,均为双精度值) DPoint *dp; // 深度和值----------------------------------------后添加 }; // 岩性剖面 struct GMLithSection { GMBase base; // 基本数据 // 专有数据 int drawMode; // 绘制方式(0:单个绘制,1:符号填充,2:单行绘制) IRect rect; // 边框矩形 int edgeMode; // 边线方式(0:直边界,1:右测井曲线,2:双测井曲线,3:岩性缩进,4:沉积韵律) // 沉积韵律比直边界和岩性缩进多个4个字节 int layerEdgeWidth; // 层边线宽度 GColor layerEdgeColor; // 层边线颜色 double depthStart; // 起始深度 double depthEnd; // 结束深度 int nLog; // 测井曲线数 int logLen; // 数据长度 int t3i1; // 扩展1 int ex1; // 扩展2 int isLeftFrame; // 是否绘制左边框 int isTopFrame; // 是否绘制顶边框 int isRightFrame; // 是否绘制右边框 int isBottomFrame; // 是否绘制底边框 int frameWidth; // 边框线宽度 int colEdgeWidth; // 柱边线宽度 GColor colEdgeColor; // 柱边线颜色 GColor frameColor; // 边框线颜色 int nLabel; // 岩性符号个数(按照深度自上而下排列) short * eleType; // 图元类型----------------------------------后添加 int *eleLogLen; // 图元长度----------------------------------后添加 GMLog *log; // 测井曲线----------------------------------后添加 GMLithSymbol * lithSymbol;//岩性符号---------------------------------后添加 // nLabel个岩性符号 //int edgeMode1; // 边线方式(重复记录) }; // 地震工区 struct GMSeisArea { GMBase base; // 基本数据 // 专有数据 int nameLen; // 工区名称长度 char nameStr[50]; // 工区名称 int edge; // 是否显示边界 int edgeType; // 边界类型(0:虚线,1:实线) int edgeWidth; // 边界线宽 GColor edgeColor; // 边界颜色 int dispTyle; // 显示方式(0:网格,1:三维测线,2:麻点) int lineWidth; // 测线宽度 GColor lineColor; // 测线颜色 int cdpSize; // CDP点大小 GColor cdpColor; // CDP点颜色 IPoint mainLinePt1; // 主测线第一点坐标 IPoint mainLinePt2; // 主测线第二点坐标 int mainLineDistence; // 主测线间距 int shotDistence; // 炮点间距 int secLineDistence;// 辅测线间距 int nPoint; // 边界点数 }; // 地震变密度显示振幅颜色对 struct GMAmpColor { double amp; // 振幅 GColor color; // 颜色 int t1i1; }; // 地震剖面 struct GMSeisSection { GMBase base; // 基本数据 // 专有数据 int dispMode; // 显示模式(1:波形,2:变面积,4:变密度) IRect rect; // 剖面矩形 int cdpStart; // 起始CDP int cdpEnd; // 终止CDP int cdpSkip; // CDP间隔(抽稀道数) int timeStart; // 起始时间(微妙) int timeEnd; // 终止时间(微妙) int timeInte; // 时间间隔(微妙) int timeInte2; // 时间加密间隔(微妙) double xScale; // 横向显示比例 double yScale; // 纵向显示比例 double cdpDist; // 道(CDP)间距 int waveWidth; // 波形线宽度 GColor waveColor; // 波形线颜色 GColor areaColor; // 变面积颜色 int t0i9[9]; // +GM36 ? int ampColors; // 变密度显示振幅色阶数 GMAmpColor ampColor; // 振幅颜色(ampColors个连续存放) int cmapOffset; // 颜色表水平偏移 int cmapWidth; // 颜色表宽度 int cmapHeight; // 颜色表高度 LOGFONT cmapFont; // 颜色表字体 int cmapFontSize; // 颜色表字体大小 GColor cmapFontColor; // 颜色表字体颜色 // 以下为原始剖面数据参数 int sample1; // 数据起始样点数(==0) int sample0; // 数据采样间隔(微妙) int sample2; // 数据终止样点数(sample2-sample1)*sample0=剖面时间长度 // (此处sample2严格意义应该减1) int cdp1; // 起始CDP int cdp2; // 终止CDP int cdp0; // CDP间隔 int cdps; // CDP个数(道数) int t1i1; // ?(1) int t2i1; // ?() double cdpDistD; // CDP间距 double ampMin; // AMP最小值 double ampMax; // AMP最大值 int dataLen; // 数据字节长度(道数*道样点数*4) // nSample/4 个样点值(浮点数) // GdbAxis 左时间轴 // GdbAxis 右时间轴 // GdbAxis CDP轴 // GdbAxis 网格(轴) // 地震处理参数、是否绘制轴和网格在Geomap32中文件中不存在,仅在软件界面中出现 int t3i1; // +GM35 ? GColor t4c1; // +GM35 ? GColor t5c1; // +GM35 ? short leftType; int leftLen; GMAxis leftAxis; // 左时间轴 short rightType; int rightLen; GMAxis rightAxis; // 右时间轴 short cdpType; int cdpLen; GMAxis cdpAxis; // cdp轴 short gridType; int gridLen; GMGrid grid; // 直角网格 GMAmpColor * cmap; // 颜色表数据 float * pData; // 地震数据 int version; // 版本号 }; // 三角图单点数据 struct GMTriData { double a,b,c; }; // 三角图 struct GMTriangle { GMBase base; // 基本数据 // 专有数据 LOGFONT font; // 字体 IRect rect; // 范围 ::byte aLen; // 第一个变量名长度 char aStr[21]; // 第一个变量名 ::byte bLen; // 第二个变量名长度 char bStr[21]; // 第二个变量名 ::byte cLen; // 第三个变量名长度 char cStr[21]; // 第三个变量名 double start; // 起始刻度 double end; // 终止刻度 double inte; // 刻度间隔 GColor lineColor; // 刻度线颜色 int t1i1; int symId; // 符号ID int symSize; // 符号大小 int lineWidth; // 刻度线宽度 GColor symColor; // 符号颜色 short t2s1; // +GM35 GColor bkColor; // +背景颜色 GColor fillColor; // +填充颜色 short colorModel; // +颜色模式 short nSample; // 数据点数 GMTriData *triData; // nSample个TriData }; // 井旁曲线 struct GMWellLog { GMBase base; // 基本数据 // 专有数据 IRect rect; // 边框范围(左、下、右、上) double depthStart; // 起始深度 double depthEnd; // 结束深度 int t1i1; int style; // 曲线类型(0:折线图,1:谱线图,2:直方图) int lineWidth; // 曲线宽度 GColor lineColor; // 曲线颜色 int edge; // 是否绘制边界线 GColor edgeColor; // 边界颜色 int edgeWidth; // 边界宽度 double min; // 最小值 double max; // 最大值 int nSample; // 数据点数(每个样点包含一个深度和一个数值,均为双精度值) DPoint *sample; // 数据存储区---------------------------------------------后添加 }; // 井旁标记符号 struct GMWellSymbol { double depth; // 深度 int angle; // 旋转角度 int symId; // 符号ID int symSize; // 符号大小 int expand2; // 扩展2 GColor symColor; // 符号颜色 GColor bkColor; // 背景颜色 short bkTransparent; // 背景透明 short expand1; // 扩展1 GColor fillColor; // 填充颜色 }; // 井旁标记 struct GMWellMarker { GMBase base; // 基本数据 // 专有数据 IRect rect; // 外包矩形 double depthStart; // 起始深度 double depthEnd; // 结束深度 int t1i1; int frame; // 是否绘制边框 GColor frameColor; // 边框颜色 int frameWidth; // 边框线宽度 int nSymbol; // 标记符号个数 GMWellSymbol * wellSymbol; // 标记符号----------------------------后添加 // nSymbol个GdbWellSymbol }; // 井旁文字 struct GMWellText { GMBase base; // 基本数据 // 专有数据 IRect rect; // 外包矩形 double depthStart; // 起始深度 double depthEnd; // 结束深度 int t1i1; int descDirection; // 描述方向(0:横向,1:竖向,2:覆盖线,3:深度点) int frame; // 是否绘制边框 GColor frameColor; // 边框颜色 int frameWidth; // 边框线宽度 int nText; // 文字个数 GMText * text; // nText个GMText结构--------------------------后添加 double *depth; // 井旁文字注释深度值nText个------------------后添加 short *tmpInt2; // 图元类型nText个----------------------------后添加 int *strLen; // 图元数据长度nText个------------------------后添加 }; // 油水柱子 struct GMOilWaterCol { GMBase base; // 基本数据 // 专有数据 IPoint center; // 中心点坐标 int width; // 边框宽度 short frame; // 是否绘制边框 int lineWidth; // 边框线宽 GColor lineColor; // 边框线颜色 int oilNameLength; // 油产量长度 char *oilColScale; // 油产量 int waterNameLength; // 水产量长度 char * waterColScale; // 水产量 double oilheightRatio; // 油柱高比 double waterHeightRatio;// 水柱高比 double columnHeightRatio;// 柱高系数 LOGFONT nameFont; // 说明字体 int nameSize; // 说明字体大小 GColor nameColor; // 说明字体颜色 double t2d2[2]; GColor oilColor; // 油柱颜色 GColor waterColor; // 水柱颜色 }; // 数据十字 struct GMDataCross { GMBase base; // 基本数据 // 专有数据 IPoint center; // 中心点坐标 int width; // 边框宽度 int height; // 边框高度 short frame; // 是否绘制边框 int lineWidth; // 边框线宽 GColor lineColor; // 边框线颜色 LOGFONT nameFont; // 字体 int len1; // 左上角文字长度 char str1[50]; // 左上角文字 int len2; // 左下角文字长度 char str2[50]; // 左下角文字 int len3; // 右上角文字长度 char str3[50]; // 右上角文字 int len4; // 右下角文字长度 char str4[50]; // 右下角文字 int nameSize; // 字体大小 GColor nameColor; // 字体颜色 DPoint offset1; // 左上角文字相对偏移 DPoint offset2; // 左下角文字相对偏移 DPoint offset3; // 右上角文字相对偏移 DPoint offset4; // 右下角文字相对偏移 double offsetX; // 水平线相对偏移 double offsetY; // 垂直线相对偏移 }; #pragma pack() ///////////////////////////////////////////////////////////////////////////////// //only for GXF file //map, "柱状图", "M",比例, x0, y0, x1, y1 struct GxfMap { char mapName[80]; // 图件名称 char unit[60]; // 绘图单位 double scaleFactor; // 原图比例 DRect rect; // 坐标范围 double paperWidth; // 图件宽度(毫米:MM,下同) double paperHeight; // 图件高度 }; struct GxfTransform { double xScale; // X方向比例 double yScale; // Y方向比例 DPoint point; // 坐标(可能是大地坐标或平面坐标点) DSize size; // 坐标(转换后的经纬度坐标点) }; struct GxfLayer { int layerIndex; // 图层索引 char nameStr[80]; // 图层名称 char unit[60]; // 图层单位 double scaleFactor; // 原图比例 DRect rect; // 图层坐标范围 }; //text, 文字名称, 文字颜色, 0, 0, 文字角度, 0, 字体名称, 文字高度, 0.0, 0, X, Y struct GxfText { char str[256]; // 变长字符串内容 DPoint point; // 坐标 char fontName[32]; // 字体名称 double widthD; // 文字宽度 double heightD; // 文字高度 double angleD; // 文字旋转角度 GColor color; // 文字颜色 int extend1; // 扩展1 int extend2; // 扩展2 int extend3; // 扩展3 int extend4; // 扩展4 }; // 符号 struct GxfSymbol { DPoint coordinate; // 中心坐标 double width,height; // 符号大小 int symbol; // 符号ID GColor color; // 前景颜色(单色模式时使用) GColor bkcolor; // 背景颜色 short transparence; // 是否透明 GColor fillColor; // +GM30(表示3.30以后版本增加的内容,以下类似) 填充颜色(彩色模式时使用) short colorMode; // +GM30 颜色模式(0:单色,1:彩色,2:设计颜色) double angle; }; // 矩形/圆角矩形/线段 struct GxfRect { int shpType; // 形状类型(1:矩形,3:圆角矩形,4:线段) int fillStyle; // 填充风格(0:不充填,1:填充颜色,2:填充符号,3:模式填充) int edgeDisp; // 是否显示边界 GColor color; // 填充前景颜色 double edgeWidth; // 边线宽度 GColor edgeColor; // 边线颜色 DRect rect; // 控制矩形坐标/线段的起止点坐标 double xAngle; // 圆角矩形的圆角控制点X偏移/饼的起始角度 double yAngle; // 圆角矩形的圆角控制点Y偏移/饼的结束角度 int modeIndex; // 模式索引 GColor colorBK; // 填充背景颜色 }; // 饼/椭圆 struct GxfPie { DRect rect; // 控制矩形坐标 int shpType; // 饼(=2) // 模式--模式填充时候存在 int fillStyle; // 填充风格 4:颜色填充 5:不填充 6:符号填充 int edgeDisp; // 是否显示边界 GColor edgeColor; // 边线颜色 GColor colorBF; // 前景颜色 GColor colorBK; // 背景颜色 double edgeWidth; // 边线宽度 double xAngle; // 圆角矩形的圆角控制点X偏移/饼的起始角度 double yAngle; // 圆角矩形的圆角控制点Y偏移/饼的结束角度 }; // 地震测线 struct GxfSeisLine { char lineName[50]; // 1测线名称 GColor lineColor; // 2测线颜色 double lineWidth; // 3测线宽度 int gridType; // 4网格类型(0:测线网,1:麻点图) int labelMode; // 5标注方式(0:无标注,1:左侧,2:右侧,3:左右两侧) GColor color; // 6名称颜色 LOGFONT nameFont; // 7名称字体 double nameSize; // 8名称大小(旁边的字体) 取反 int extend; // 扩展 double shotRadium; // 10炮点半径 int shotInte; // 11炮点间隔 int shotDisp; // 12标注间隔 LOGFONT shotFont; // 13炮点标注字体 double labSize; // 14炮点标注大小 取反 int nPoint; // 16坐标点数 }; // 井位 struct GxfWell { char nameStr[100]; // 井名文字 GColor topColor; // 井口符号颜色 GColor topBkColor; // + GM33 井口符号背景色 GColor topFillColor; // + GM33 井口符号填充色 int topBkTrans; // + GM33 井口符号是否透明 double topSize; // 井口符号大小 int topSymbol; // 井口符号ID short topColorMode; // 井口颜色模式 GColor bottomColor; // 井底符号颜色 GColor botBkColor; // + GM33 井口符号背景色 GColor botFillColor; // + GM33 井口符号填充色 int botBkTrans; // + GM33 井口符号是否透明 double bottomSize; // 井底符号大小 int bottomSymbol; // 井底符号ID short bottomColorMode;// 井底颜色模式 //short topColorMode; // + GM35 井口符号颜色模式 //short botColorMode; // + GM35 井底符号颜色模式 float topPenScale; // + GM36 井口符号笔宽系数 float botPenScale; // + GM36 井底符号笔宽系数 LOGFONT nameFont; // 井名字体 GColor nameColor; // 井名文字字体颜色 double nameSize; // 井名文字字体大小 double nameOffsetX; // 井名文字横向偏移 double nameOffsetY; // 井名文字纵向偏移 DPoint topCoord; // 井口坐标 DPoint bottomCoord; // 井底坐标 }; // 地名(居民地) struct GxfReside { DPoint coordinate; // 坐标 int symID; // 符号ID double symSize; // 符号大小 GColor symColor; // 符号颜色 int symTransparence;// 符号是否透明 GColor symBkColor; // 符号背景颜色 LOGFONT nameFont; // 地名字体 char nameStr[50]; // 地名文字 double nameSize; // 地名字体大小 GColor nameColor; // 字体颜色 double nameOffsetX; // 水平偏移 double nameOffsetY; // 垂直偏移 GColor nameBkColor; // 字体背景颜色 GColor fillColor; // +GM35 填充颜色 short colorMode; // +GM35 颜色模式 }; // 图框 struct GxfFrame { DRect rect; // 内框边界 int style; // 图框类型 double inWidth; // 内框线宽 GColor inColor; // 内框颜色 double midWidth; // 中框线宽 GColor midColor; // 中框颜色 double outWidth; // 外框线宽 GColor outColor; // 外框颜色 double inMid; // 内中间距 double outMid; // 外中间距 }; // 比例尺 struct GxfScale { DPoint coordinate; // 坐标 double width; // 轴宽度 double value; // 比例尺数值 GColor color; // 轴颜色 LOGFONT nameFont; // 名称字体 GColor nameColor; // 名称颜色 double nameSize; // 名称字体大小 double nameOffset; // 名称垂向偏移 double kdHeight; // 刻度线长 double kdWidth; // 刻度线宽 double kdStart; // 起始刻度值 double kdEnd; // 终止刻度值 double kdInteval; // 刻度间隔 LOGFONT labelFont; // 标注字体 char unitStr[50]; // 刻度单位字符串 int unit; // 刻度单位标识(0=km,1=m,2=mm,3=mi,4=ya,5=ft,6=in) GColor labelColor; // 刻度标注颜色 double labelSize; // 刻度标注字体大小 double labelOffset; // 刻度标注偏移 int decimalCou; // 刻度小数位数 int extend; // 扩展 int extend2; // 扩展2; }; // 图例框 struct GxfLegend { DPoint coordinate; // 坐标 double width, height; // 边框宽度、高度 short edge; // 边框线是否可见(0-N ; 1-Y) double edgeWidth; // 边框线宽 GColor edgeColor; // 边框线颜色 LOGFONT textFont; // 图例框说明字体名称 char textStr[50]; // 图例框说明文字(换行用'|'字符替换) double fontSize; // 图例框说明文字大小 GColor textColor; // 图例框说明文字颜色 double xOffset; // 图例框说明文字X偏移 double yOffset; // 图例框说明文字Y偏移 tni int extend; // 扩展 }; // 位图 struct GxfBmp { DRect rect; // 位置和大小 char nameStr[50]; // 位图名称 char bmpType[50]; // 图像类型 char bmpCode[50]; // 图像编码方式 int bmpSize; // 图像编码后的数据行数,每行占80个字节 // 完整的位图数据 //(与BMP文件头有所不同,比BMP独立文件少14个字节,而且此后的24个字节内容有所不同,有待分析) }; // 位图 struct GxfMeta { DRect rect; // 位置和大小 char nameStr[50]; // 位图名称 char bmpType[50]; // 图像类型 char bmpCode[50]; // 图像编码方式 int bmpSize; // 图像编码后的数据行数,每行占80个字节 // 完整的位图数据 //(与BMP文件头有所不同,比BMP独立文件少14个字节,而且此后的24个字节内容有所不同,有待分析) }; // 多边形 struct GxfPolygon { char name[256]; // +GM35 名称 short edge; // 边界是否可见 int fillStyle; // 填充模式(0:不充填,1:填充颜色,2:填充符号,3:模式填充) GColor edgeColor; // 边界颜色 double edgeWidth; // 边界线宽 int ext2; // 4,5,6 int modeIndex; // 模式索引:0=水平线,1=垂直线,2=左斜纹,3=右斜纹,4=直角网,5=斜网格,(为81时表示为符号充填???) GColor fillColor; // 填充颜色 GColor fillColorBF; // 填充前景颜色 GColor fillColorBk; // 填充背景颜色 int smooth; // 边界平滑方式(0:不平滑,1:抛物线加权,2:张力样条,3:二次B样条) int nPoint; // 顶点个数 int extend; // 扩展 }; //等值线 struct GxfIsoline { char labelStr[100]; // 高程值字符串 GColor labelColor; // 高程标注颜色 double labelWidth; // 高程标注宽度 int lineStyle; // 线型 GColor color; // 曲线颜色 double lineWidth; // 线宽 int smooth; // 光滑状态(0:不平滑,1:抛物线加权,2:张力样条,3:二次B样条) // (新版本增加了平滑的方法种类,但不能保存,文件中该参数仅为0或1) int nPoint; // 顶点个数 int extend; // 扩展 }; // 测井曲线 struct GxfLog { char curveName[50]; // 曲线名称 // 专有数据 DRect rect; // 位置和大小 short axisType; // 坐标类型 double depthStart; // 起始深度 double depthEnd; // 结束深度 double sample; // 采样率 double leftScale; // 左刻度 double rightScale; // 右刻度 short lineStyle; // 线型 double lineWidth; // 线宽 GColor color; // 颜色 double scale; // 比例尺 char bmpCode[50]; // 图像编码方式 int bmpSize; // 图像编码后的数据行数,每行占80个字节 }; struct GxfSeisSection { char segyName[50]; // segy文件名 DRect rect; // 剖面矩形 int cdpStart; // 起始CDP int cdpEnd; // 终止CDP int cdpSkip; // CDP间隔(抽稀道数) int timeStart; // 起始时间(微妙) int timeEnd; // 终止时间(微妙) int timeInte; // 时间间隔(微妙) short lineWidth; // 线宽 GColor lineColor; // 线颜色 int extend1; // 扩展1 int extend2; // 扩展2 int extend3; // 扩展3 int extend4; // 扩展4 int extend5; // 扩展5 char *tempStr1; // 不明确串 char *tempStr2; // 不明确串 char *tempStr3; // 不明确串 char *bmpCode; // 图像编码方式 int bmpSize; // 图像编码后的数据行数,每行占80个字节 }; //End /////////////////////////////////////////////////////////////////////////////// }; };