1、、概述概述1.1 文件组成文件组成MAPGIS 数据文件主要包括工程文件文件和工程内各工作区的文件工作区是 MAPGIS 提出的一个概念,简单地说,工作区就是一个数据池,存放实体的空间数据、拓扑数据、图形数据和属性数据,每个工作区都对应于一个 MAPGIS 数据文件数据文件主要有以下几种: 点工作区(.MPJ 文件):工程文件,存放工程中所有的工作区文件 点工作区(.WT 文件):点(PNT) 线工作区(.WL 文件):线(LIN)、结点(NOD) 区工作区(.WP 文件):线(LIN)、结点(NOD)、区(REG) 网工作区(.WN 文件:线(LIN)、结点(NOD)、网(NET) 表工作区(.WB 文件):无空间实体,仅有表格记录1.2 数据类型数据类型 点元:点元是点图元的简称,有时也简称点,所谓点元是指由一个控制点决定其位置的有确定形状的图形单元它包括字、字符串、文本、子图、圆、弧、直线段等几种类型它与“线上加点”中的点概念不同 弧段:弧段是一系列有规则的,顺序的点的集合,用它们可以构成区域的轮廓线它与曲线是两个不同的概念,前者属于面元,后者属于线元。
区/区域:区/区域是由同一方向或首尾相连的弧段组成的封闭图形 结点:结点是某弧段的端点,或者是数条弧段间的交叉点 属性:就是一个实体的特征,属性数据是描述真实实体特征的数据集显示地物属性的表通常称为属性表,属性表常用来组织属性数据2、工程文件、工程文件2.1 基本构成基本构成工程文件数据由头信息+各工作区信息数据构成,其中头信息是 0-1112 字节,各工作区信息是 400 各字节,按顺序首尾存放在文件中2.2 头信息头信息头信息存储位置为 0-1112 字节,主要存储包含的工作区文件数、图形范围、比例、位移等信息内容字节位置字节数类型说明文件标记0-78Char[8]GDMP`D29文件类型 8-114int9文件数 12-131short 文件的图形范围 14-4532Double (XMin, YMin, XMax, YMax)文件的环境 46-685640 结构文件的标题 686-74560Char[60] 图层字典位置746-7494int 首文件存放指针 750-7534int 位移 X 754-7618double 位移 Y 762-7698double 比例 X 770-7778double 比例 Y 778-7858double 旋转角度 786-7938double 版面宽 794-8018double 版面高 802-8098double PrjType 810-8112short 首图例存放指针 812-8154int 工程预设的地图参数 816-984169 结构UnUsed 985-1112128Char[128]无用2.3 工作区信息工作区信息头信息后是各工作区信息,从 1113 字节开始,每 400 字节存储一个工作区信息,主要包括各工作区的类型、文件名、范围等信息。
内容字节位置字节数类型说明文件类型 01bytePNT/LIN/REG/MSIIMG文件状态 11byte 文件名(全路径) 2-129128Char[128] 文件的描述 130-257128Char[128] 图形范围 XMin 258-2658double 图形范围 YMin 266-2738double 图形范围 XMax 274-2818double 图形范围 YMax 282-2898double 用户自定义类型 290-2901byte GroupCode 291-2911byte 网络数据的数据源292-32332Char[32]单机文件此项为空最小显示比例324-3318double小于 MinDispRate,不显示最大显示比例332-3398double大于 MaxDispRate,不显示字段动态标注340-3401byte是否进行字段动态标注,以及是否跟随放大标注字段名称 341-36121Char[21] 标注字高 362-3654float 标注颜色 366-3672short 标注字体 368-3681byte 图例分类信息 369-3691byte 保留 370-39930Char[30] 3、工作区文件、工作区文件3.1 基本构成基本构成工作区文件主要有点工作区文件(*.WT)、线工作区文件(*.WL)、区域工作区文件(*.WP)等几种,不同工作区文件构成有一些不同,但是大体结构是一致的,一般包括三大部分: 文件头信息:包括文件类型、数据区头信息的起始位置等 数据区头信息:存储各种结构的数据的字节起始位置和总字节数 数据区:存储点、线、区域、属性等各种数据数据读取时首先读文件头信息,通过文件头信息中数据区头信息的起始位置读取数据区头信息,在数据头信息中存储各数据区的起始位置和总字节数,通过这些信息找到各数据区位置获取数据。
3.4 文件头文件头各种工作区文件(WP WL WT)的头信息基本都是一样的,从 0 字节开始,到数据区的起始位置处,存放文件标记、文件类型、数据区起始位置,各数据区的数据总数、工作区图形范围等信息内容字节位置字节数类型说明文件头标识0-78Char[8]GDMP`D20(WL)GDMP`D22(WT)GDMP`D21(WP)文件标识8-114Int0-LIN 1-PRT 2-REG起始位置12-154Int数据区头的起始位置,从这个整数指向的字节位置存储数据区头信息?16-19 此处的整数不知道意义20-259 未知,好像没什么用260-303 存储有 11 个整数,表示各种数据的总数0-线数 260-263 104h2-节点数 268-271 10Ch4-区数 276-279 114h其余未知图形范围304-3358*4 XMin YMin XMax YMax3.3 数据区头信息数据区头信息数据区头信息包含工作区文件中各种数据的起始位置和数据总的字节数,为表述方便,下文中以 DataHeader 标识每个数据头信息 10 字节,如:29 02 00 00 E4 00 00 00 FF FF其中 0-3 数据区的起始位置 4-7 数据区总字节数 8-9 结束标记(FF FF)数据区头信息一般存储有这样的头信息 11 个左右,WP WL WT 文件数据都是各有所区别,但是相同类型数据存放位置基本一致,如无论是 WL 文件还是 WP 文件,第一个头信息存储都是线(弧段)信息,各数据区域的位置大致如下: DataHeader[0]:线信息位置(WP WL)\点信息位置(WT) DataHeader[1]:线坐标点位置(WP WL)\点字符串位置(WT) DataHeader[2]:线属性位置(WP WL)\点属性位置(WT) DataHeader[3]:线拓扑关系的位置 DataHeader[4]:节点信息的位置 DataHeader[5]:节点属性 DataHeader[6]: DataHeader[7]: DataHeader[8]:区信息位置 DataHeader[9]:区属性位置 DataHeader[10:3.4 点数据点数据点数据存在于 WT 文件中,从 DataHeader[0]+93 开始读,每 93 个字节存储一个点信息。
由于 MapGIS 的点数据包括字符串、文本、子图、圆、弧等几种类型,各种类型数据存储结构不一致,结构如下:内容字节位置字节数类型说明公用部分开始标记 01 01字符串总数1-22short字符偏移量 3-64Int如果点类型是字符串,存储字符串信息位置:DataHeader[1]+ 偏移量 – 总数坐标 X 7-148double 坐标 Y15-228double 点类型31-311byte0-字符串 1-子图 2-圆 3-弧 4-图象 5-文本透明输出32-321byte 图层73-742short 颜色75-784int 0-字符串部分字符串stringDataHeader[1]+ 偏移量 – 总数字符高度 33-364float 字符宽度 37-404float 字符间隔 41-444float 字符串角度 45-484float 中文字体 49-502short 西文字体 51-52 2short 字形 53-531byte 排列 54-541byte 1-子图部分子图号 33-364Int 子图高 37-404float 子图宽 41-444float 子图角度 45-484float 线宽 49-524float 辅色 53-564Int 2-圆部分 ?半径 33-404float 边线颜色 41-444int 线宽度 45-484float 标识 49-491byte1=填充圆 0=空心圆3-弧部分 ?半径 33-408double 起始角度 41-444float 终止角度 45-484float 线宽度 49-524float 4-图片部分 ?文件名stringDataHeader[1]+ 偏移量 – 总数字符高度 33-364float 字符宽度 37-404float 字符串角度 41-444float 5-文本部分(多行) ?文本字符串stringDataHeader[1]+ 偏移量 – 总数字符高度33-364float 字符宽度37-404float 字符间隔41-444float 字符串角度45-484float 中文字体49-502short 西文字体51-522short 字形53-531byte 行间距54-574float 版面高度58-614float 版面宽度62-654float 排列661byte 3.5 线数据线数据线数据在 WL 和 WP 文件中都有,主要包括线信息、坐标信息,对于 WP 文件还有线与区域的拓扑关系。
1 1、线信息、线信息存储位置:DataHeader[0].DataOffset+59 字节数:57格式:内容字节位置字节数类型说明未知? 0-3 4 未知? 4-74 线点数 8-114Int 坐标存储位置 12-154IntDataHeader[1]加这个偏移量是坐标的存储起始位置未知? 16-194 线型号 20-212Short 辅助线型号 22-221Byte 覆盖方式 23-231Byte 线颜色号 24-274Int 线宽 28-314Float 线种类 32-321Byte X 系数 33-364Float Y 系数 37-404Float 辅助色 41-444Int 图层 45-484Int ? 49-524 ? 53-564 2 2、坐标、坐标存储位置:DataHeader[1].DataOffset+每条线坐标存储位置 字节数:16( 两个八位的浮点数) 格式:X 坐标 0-7 Y 坐标 8-15 3 3、拓扑关系、拓扑关系存储位置:DataHeader[3].DataOffset+24 字节数:24( 前 16 位有效,共四个整数) 格式:前节点号 0-3后节点号 4-7左区号 8-11右区号 12-153.6 结点数据结点数据结点是某弧段的端点,或者是数条弧段间的交叉点,结点数据区由结点基本信息加一系列结点线号信息组成,基本信息起始位置为 DataHeader[4].DataOffset + 55,每个接点 55 个字节,格式:内容字节位置字节数类型说明节点坐标 X 0-78Double 节点坐标 Y 8-158Double 节点所在的线总数 24-252short 节点线段的存储位置 26-272shortDataHeader[1].DataOffset 加偏移量存储结点相关的线段信息,每。