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

 

區域的線號信息

 

 

 

一系列整數值


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM