您的位置:首页 > 其它

MapGIS数据格式技术详解

2014-03-27 12:59 211 查看

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-7
8
Char[8]
GDMP`D29
文件类型
8-11
4
int
9
文件数
12-13
1
short
文件的图形范围
14-45
32
Double
(XMin, YMin, XMax, YMax)
文件的环境
46-685
640
结构
文件的标题
686-745
60
Char[60]
图层字典位置
746-749
4
int
首文件存放指针
750-753
4
int
位移X
754-761
8
double
位移Y
762-769
8
double
比例X
770-777
8
double
比例Y
778-785
8
double
旋转角度
786-793
8
double
版面宽
794-801
8
double
版面高
802-809
8
double
PrjType
810-811
2
short
首图例存放指针
812-815
4
int
工程预设的地图参数
816-984
169
结构
UnUsed
985-1112
128
Char[128]
无用

2.3工作区信息

头信息后是各工作区信息,从1113字节开始,每400字节存储一个工作区信息,主要包括各工作区的类型、文件名、范围等信息。

内容
字节位置
字节数
类型
说明
文件类型
0
1
byte
PNT/LIN/REG/MSIIMG
文件状态
1
1
byte
文件名(全路径)
2-129
128
Char[128]
文件的描述
130-257
128
Char[128]
图形范围XMin
258-265
8
double
图形范围YMin
266-273
8
double
图形范围XMax
274-281
8
double
图形范围YMax
282-289
8
double
用户自定义类型
290-290
1
byte
GroupCode
291-291
1
byte
网络数据的数据源
292-323
32
Char[32]
单机文件此项为空
最小显示比例
324-331
8
double
小于MinDispRate,不显示
最大显示比例
332-339
8
double
大于MaxDispRate,不显示
字段动态标注
340-340
1
byte
是否进行字段动态标注,以及是否跟随放大
标注字段名称
341-361
21
Char[21]
标注字高
362-365
4
float
标注颜色
366-367
2
short
标注字体
368-368
1
byte
图例分类信息
369-369
1
byte
保留
370-399
30
Char[30]

3、工作区文件

3.1基本构成

工作区文件主要有点工作区文件(*.WT)、线工作区文件(*.WL)、区域工作区文件(*.WP)等几种,不同工作区文件构成有一些不同,但是大体结构是一致的,一般包括三大部分:

Ø 文件头信息:包括文件类型、数据区头信息的起始位置等
Ø 数据区头信息:存储各种结构的数据的字节起始位置和总字节数
Ø 数据区:存储点、线、区域、属性等各种数据
数据读取时首先读文件头信息,通过文件头信息中数据区头信息的起始位置读取数据区头信息,在数据头信息中存储各数据区的起始位置和总字节数,通过这些信息找到各数据区位置获取数据。

3.4 文件头

各种工作区文件(WP WL WT)的头信息基本都是一样的,从0字节开始,到数据区的起始位置处,存放文件标记、文件类型、数据区起始位置,各数据区的数据总数、工作区图形范围等信息。

内容
字节位置
字节数
类型
说明
文件头标识
0-7
8
Char[8]
GDMP`D20(WL)
GDMP`D22(WT)
GDMP`D21(WP)
文件标识
8-11
4
Int
0-LIN 1-PRT 2-REG
起始位置
12-15
4
Int
数据区头的起始位置,从这个整数指向的字节位置存储数据区头信息

16-19
此处的整数不知道意义
20-259
未知,好像没什么用
260-303
存储有11个整数,表示各种数据的总数
0-线数
260-263 104h
2-节点数
268-271 10Ch
4-区数
276-279 114h
其余未知
图形范围
304-335
8*4
XMin YMin XMax YMax

3.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的点数据包括字符串、文本、子图、圆、弧等几种类型,各种类型数据存储结构不一致,结构如下:

内容
字节位置
字节数
类型
说明
公用部分
开始标记
0
1
01
字符串总数
1-2
2
short
如果点类型是字符串,存储字符串信息位置:DataHeader[1]+
偏移量 –总数
字符偏移量
3-6
4
Int
坐标X
7-14
8
double
坐标Y
15-22
8
double
点类型
31-31
1
byte
0-字符串
1-子图 2-圆
3-弧 4-图象 5-文本
透明输出
32-32
1
byte
图层
73-74
2
short
颜色

75-78

4
int
0-字符串部分
字符串
string
DataHeader[1]+ 偏移量
–总数
字符高度
33-36
4
float
字符宽度
37-40
4
float
字符间隔
41-44
4
float
字符串角度
45-48
4
float
中文字体
49-50
2
short
西文字体
51-52
2
short
字形
53-53
1
byte
排列
54-54
1
byte
1-子图部分
子图号
33-36
4
Int
子图高
37-40
4
float
子图宽
41-44
4
float
子图角度
45-48
4
float
线宽
49-52
4
float
辅色
53-56
4
Int
2-圆部分

半径
33-40
4
float
边线颜色
41-44
4
int
线宽度
45-48
4
float
标识
49-49
1
byte
1=填充圆 0=空心圆
3-弧部分

半径
33-40
8
double
起始角度
41-44
4
float
终止角度
45-48
4
float
线宽度

49-52

4
float
4-图片部分

文件名
string
DataHeader[1]+ 偏移量
–总数
字符高度
33-36
4
float
字符宽度
37-40
4
float
字符串角度
41-44
4
float
5-文本部分(多行)

文本字符串
string
DataHeader[1]+ 偏移量
–总数
字符高度
33-36
4
float
字符宽度
37-40
4
float
字符间隔
41-44
4
float
字符串角度
45-48
4
float
中文字体
49-50
2
short
西文字体
51-52
2
short
字形
53-53
1
byte
行间距
54-57
4
float
版面高度
58-61
4
float
版面宽度
62-65
4
float
排列
66
1
byte

3.5线数据

线数据在WL和WP文件中都有,主要包括线信息、坐标信息,对于WP文件还有线与区域的拓扑关系。

1、线信息

存储位置:DataHeader[0].DataOffset+59

字节数:57

格式:

内容
字节位置
字节数
类型
说明
未知?
0-3
4
未知?
4-7
4
线点数
8-11
4
Int
坐标存储位置
12-15
4
Int
DataHeader[1]加这个偏移量是坐标的存储起始位置
未知?
16-19
4
线型号
20-21
2
Short
辅助线型号
22-22
1
Byte
覆盖方式
23-23
1
Byte
线颜色号
24-27
4
Int
线宽
28-31
4
Float
线种类
32-32
1
Byte
X系数

33-36
4
Float
Y系数

37-40
4
Float
辅助色
41-44
4
Int
图层
45-48
4
Int
?
49-52
4
?

53-56

4
2、坐标

存储位置:DataHeader[1].DataOffset+每条线坐标存储位置

字节数:16( 两个八位的浮点数)

格式:
X坐标  0-7

Y坐标  8-15

3、拓扑关系

存储位置:DataHeader[3].DataOffset+24

字节数:24( 前16位有效,共四个整数)

格式:
前节点号 0-3
后节点号 4-7
左区号 8-11
右区号 12-15

3.6 结点数据

结点是某弧段的端点,或者是数条弧段间的交叉点,结点数据区由结点基本信息加一系列结点线号信息组成,基本信息起始位置为DataHeader[4].DataOffset + 55,每个接点55个字节,格式:

内容
字节位置
字节数
类型
说明
节点坐标X
0-7
8
Double
节点坐标Y
8-15
8
Double
节点所在的线总数
24-25
2
short
节点线段的存储位置

26-27

2
short
DataHeader[1].DataOffset加偏移量存储结点相关的线段信息,每个线段号为4字节的整数
结点线信息

一系列整数值

3.7 区域数据

区域是由同一方向或首尾相连的弧段组成的封闭图形,所以MapGis的区域数据是基本信息和一系列线信息中线的顺序号(整数)组成。基本信息的起始位置为DataHeader[8].DataOffset + 40,每个结点基本信息共40字节,格式:

内容
字节位置
字节数
类型
说明
标记位
0
1
Byte
01
线总数
1-4
4
Int
线号存储位置
5-8
4
Int
DataHeader[1]加这个偏移量是线号的存储起始位置
区颜色
9-12
4
Float
填充图案号
13-14
2
Short
图案高
15-18
4
Float
图案宽
19-22
4
Float
笔宽
23-24
2
Short
图案颜色
25-28
4
Int
透明输出
29
1
Byte
图层

30-31

2
Short
区域的线号信息

一系列整数值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: