Shape格式说明

 

1Shape技术描述

一个完整的ESRIshape文件包括一个主文件,一个索引文件,和一个dBASE表文件。主文件是一个直接存取,变记录长度文件,其中每个记录描述一个由其顶点列表组成的shape。在索引文件中,每条记录是在主文件中对应记录距离主文件头部的偏移量。dBASE中记录的是对应主文件中记录的属性记录,每条主文件记录对应dBASE中的一条属性记录。几何对象和属性间的一一对应关系是基于记录编号的。在dBASE文件中的属性记录必须和主文件中的记录保持相同的顺序。

1.1命名习惯

所有文件名都遵循8.3命名习惯。主文件,索引文件和dBASE文件有相同的前缀。前缀必须是由字符或数字(a-Z,0-9)开始,后跟07个字符(a-Z,0-9_,)主文件的后缀是.shp,索引文件的后缀是.shxdBASE表的后缀是.dbf。在对文件名敏感的操作系统中,文件名中的所有字母都是小写的。

例子

主文件:counties.shp

索引文件:counties.shx

dBASE表:ounties.dbf

1.2数字类型

Shape格式文件存储整数型和双精度型数据,本文档的余下部分将涉及到以下类型:
整数:有符号32位整数(4字节)

双精度:有符号64IEEE双精度浮点数(8字节)

浮点数必须是数字值。负无穷,正无穷和无效数字(NaNshape文件中是不合法的。然而,shape文件支持“没有数据”这样的概念,但是目前只用于带有measure值的情况。所谓Measure值,是用于存储需要的附加数据,可以用来记录各种数据,例如权值、道路长度等信息。某些小于-1038shape文件读取程序用来表示为“没有数据”的值。

下面的第一节描述shape文件的总体结构和组织。第二节描述shape文件支持的每种shape类型的记录内容。

2、主文件的组织

主文件(.shp)由固定长度的文件头和后面变长的记录组成。每个变长记录是由固定长度的记录头和紧接着的变长记录内容组成。图1是主文件的结构。
1 主文件的结构

文件头

 

记录头

记录内容

记录头

记录内容

记录头

记录内容

。。。。。。

。。。。。。

。。。。。。

。。。。。。

记录头

记录内容

字节序

Shape文件中所有的内容可以被分为两种类型:

n         与数据相关的:

l         主文件记录内容

l         主文件头的数据描述域(Shape 类型,边界盒等)

n         与文件管理相关的:

l         文件和记录长度

l         记录偏移量等

 

在主文件的文件头和记录内容中的描述域中的整型和双精度浮点数据是按照little endianPCIntel)的字节顺序形式组织的。组成文件的其余部分和文件管理的整数和双精度浮点数是big endianSunMotorola)字节顺序。

2.1主文件头

主文件头100字节长。表1描述了文件头中数据的字节位置,值,类型和字节顺序。 在此表中,位置是相对于文件头的。

1 主文件头的描述

位置

字段

类型

字节顺序

Byte 0

File Code(文件代码)

9994

Integer

Big

Byte 4

Unused

0

Integer

Big

Byte 8

Unused

0

Integer

Big

Byte 12

Unused

0

Integer

Big

Byte 16

Unused

0

Integer

Big

Byte 20

Unused

0

Integer

Big

Byte 24

File Length(文件长度)

File Length

Integer

Big

Byte 28

Version

1000

Integer

Little

Byte 32

Shape Type

Shape Type

Integer

Little

Byte 36

Bounding Box

Xmin

Double

Little

Byte 44

Bounding Box

Ymin

Double

Little

Byte 52

Bounding Box

Xmax

Double

Little

Byte 60

Bounding Box

Ymax

Double

Little

Byte 68*

Bounding Box

Zmin

Double

Little

Byte 76*

Bounding Box

Zmax

Double

Little

Byte 84*

Bounding Box

Mmin

Double

Little

Byte 92*

Bounding Box

Mmax

Double

Little

 

*是未被使用的域,值为0.0,如果没有measure值或Z轴。

文件长度的值指的是16位字的个数,即文件的字节长度除以2(包括组成文件头的5016位字)。

shape文件中的所有非空shape必须是同一种shape类型。Shape类型的值如下:

Shape类型

0

Null Shape

1

Point

3

PolyLine

5

Polygon

8

MultiPoint

11

PointZ

13

PolyLineZ

15

PolygonZ

18

MultiPointZ

21

PointM

23

PolyLineM

25

PolygonM

28

MultiPointM

31

MultiPatch

 

没有被定义的Shape 类型值(246等直到33)为将来可能的使用而保留。目前shape文件被局限于包含以上定义的同种shape类型。但在将来shape文件可能会允许包含多种shape类型。若混合shape类型被实现,文件头中的shape类型将标识该文件。
主文件头的边界盒存储文件中shape的实际范围。所有的shape记录将都处于这个范围定义的矩形边界以内。如果shape文件是空的(没有记录),Xmin,Ymin,Xmax,Ymax的值则将是未被定义的。如果shape文件的类型是带有measure的,而实际却又没有记录measure数据的话,MminMmax可以是“没有数据”的值(参见2页的数字类型)。

2.2记录头

每个记录的头存储了记录的数目和记录内容的长度。记录头固定长度为8字节。表 2显示文件记录头中域的字节位置,值,类型和字节顺序。在表中,位置是相对于记录的开始位置。

2 主文件记录头文件的描述

位置

字段

类型

字节顺序

Byte 0

Record Number

 (记录数目)

Record Number

Integer

Big

Byte 4

Content Length

(内容长度)

Content Length

Integer

Big

 

记录数目从1开始。

一个记录的内容长度是按16位字计算的记录内容长度。每个记录因此为文件的总长度贡献(4+内容长度)个16位字,正如文件头是100字节一样。

 

完整内容见附件。

你可能感兴趣的:(数据结构,sun,Motorola)