shapefile文件格式说明

shapefile是一种用于存储地理要素的几何位置和属性信息的非拓扑简单格式,可以用于表达点、线、面、多点、多线、多面等地理要素格式,并不存储拓扑数据。它是Esri公司开发出的用于实现SFS简单要素模型的一种文件格式。

尽管它的名字看起来仅表示一个文件,但实际上,一个shapefile至少包含三个基础文件: .shp、.dbf和.shx 。为了使它们联系彼此,它们的名字必须相同,必须在同一文件夹里出现。

1 .shp文件

用于存储要素空间位置信息,其中每个记录用其顶点列表描述一个形状;

该主文件具有100bytes的固定长度头文件,含有17个字段,共100个字节,其中包含九个4字节(32位有符号整数,int32)整数字段,紧接着是八个8字节(双精度浮点数)有符号浮点数字段:

Bytes Type Endianness Usage
0–3 int32 big File code (always hex value 0x0000270a)
4–23 int32 big Unused; five uint32
24–27 int32 big File length (in 16-bit words, including the header)
28–31 int32 little Version
32–35 int32 little Shape type (see reference below)
36–67 double little Minimum bounding rectangle (MBR) of all shapes contained within the dataset; four doubles in the following order: min X, min Y, max X, max Y
68–83 double little Range of Z; two doubles in the following order: min Z, max Z
84–99 double little Range of M; two doubles in the following order: min M, max M

然后该文件包含任意数量的可变长度记录。每条记录都有一个8字节的记录头:

Bytes Type Endianness Usage
0–3 int32 big Record number (1-based)
4–7 int32 big Record length (in 16-bit words)

接下来是存储的实际数据:

Bytes Type Endianness Usage
0–3 int32 little Shape type (see reference below)
4– Shape content

长度可变的记录内容取决于形状类型,形状类型必须是文件头中给定的形状类型或Null。以下是可能的形状类型:

Value Shape type Fields
0 Null shape None
1 Point X, Y
3 Polyline MBR, Number of parts, Number of points, Parts, Points
5 Polygon MBR, Number of parts, Number of points, Parts, Points
8 MultiPoint MBR, Number of points, Points
11 PointZ X, Y, Z Optional: M
13 PolylineZ Mandatory: MBR, Number of parts, Number of points, Parts, Points, Z range, Z array Optional: M range, M array
15 PolygonZ Mandatory: MBR, Number of parts, Number of points, Parts, Points, Z range, Z array Optional: M range, M array
18 MultiPointZ Mandatory: MBR, Number of points, Points, Z range, Z array Optional: M range, M array
21 PointM X, Y, M
23 PolylineM Mandatory: MBR, Number of parts, Number of points, Parts, Points Optional: M range, M array
25 PolygonM Mandatory: MBR, Number of parts, Number of points, Parts, Points Optional: M range, M array
28 MultiPointM Mandatory: MBR, Number of points, Points Optional Fields: M range, M array
31 MultiPatch Mandatory: MBR, Number of parts, Number of points, Parts, Part types, Points, Z range, Z array Optional: M range, M array
2 .dbf文件

用于存储要素的非空间属性信息,其中每个地理要素使用一个记录,属性和位置信息通过记录号一对一对应,所以 .dbf 文件和 .shp 文件的记录顺序必须相同

3 .shx文件

存储索引信息,文件中每个记录包含对应的 .shp 文件记录距离 .shp 文件的初始位置的偏移量。
索引文件首先包含与 .shp 文件相同的100字节头,后跟任意数量的8字节定长记录,由以下两个字段组成:

Bytes Type Endianness Usage
0–3 int32 big Record offset (in 16-bit words)
4–7 int32 big Record length (in 16-bit words)

它记录每一个几何体在 .shp 文件之中的位置ID,从而能够加快向前或向后搜索一个几何体的效率。

*最后值得一提的是在一个shapefile中只能定义一种集合类型。

你可能感兴趣的:(GIS,gis,shapefile)