MapGIS数据格式技术详解

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

区域的线号信息

 

一系列整数值

你可能感兴趣的:(MapGIS数据格式技术详解)