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中只能定义一种集合类型。