什么是一 .shp 文件?
SHP 是用于表示 ESRI Shapefile 的主要文件类型之一的文件扩展名。它以矢量数据的形式表示地理空间信息,以供地理信息系统 (GIS) 应用程序使用。该格式已被开发为开放规范,以促进 ESRI 和其他软件产品之间的互操作性。
数据表示
如前所述,shapefile 格式将数据集的地理空间信息描述为矢量特征。这些矢量特征包括:
- 点
- 行
- 多边形
这些特征组合起来可以表示几乎任何类型的形状,如水井、国家边界、空间点、河流、湖泊等。每个矢量特征都可以具有实际定义该特征用途的属性。例如,包含洛杉矶城市的 shapefile 可以将城市名称和温度作为属性,为空间数据提供有意义的表示。
相关文件
软件应用程序不能使用独立的 shp 文件来理解它所包含的数据。为了理解此类文件中包含的信息,shapefile 使用了以下附加的强制文件。
- shx 文件 - 索引文件
- dbf 文件 - 一个 dBASE 文件,在主文件中存储形状的所有属性
- prj 文件 - 存储文件的项目信息
还可以有其他可选文件与主文件同名。
SHP 文件格式规范
ESRI 以 技术说明 的形式在线提供 shapefile 的开放规范,并详细阐述了文件的整体结构。主 .shp 文件中的信息由标题和记录组成。固定长度的文件头后面是可变长度的记录,其中每条记录由固定长度的记录头和可变长度的记录内容组成。
主 SHP 文件头
主文件头从文件的开头开始,长度为 100 字节。该主文件头的结构以及字节位置、值、类型和字节顺序如下表所示。
字节 | 字段 | 值 | 类型 | 字节顺序 |
---|---|---|---|---|
0-3 | 文件代码 | 9994 | 整数 | 大端 |
4-23 | 未使用 | 0 | 整数 | 大端 |
24-27 | 文件长度 | 文件长度 | 整数 | 大端 |
28-31 | 版本 | 1000 | 整数 | 小尾数 |
32-35 | 形状类型 | 形状类型 | 整数 | 小端 |
36-67 | 最小边界矩形 | Xmin、Ymin、Xmax 和 Ymax | 双精度 | 小端 |
68-83 | 边界框 | Zmin, Zmax | 双 | 小端 |
84-99 | 边界框 | Mmin, Mmax | 双 |
需要注意的是,文件长度的值是文件的总长度,以 16 位字为单位,还包括构成标题的 50 个 16 位字。
形状类型
上表中形状类型字段的值如下:
值 | 形状类型 |
---|---|
0 | 空形状 |
1 | 点 |
3 | 折线 |
5 | 多边形 |
8 | 多点 |
11 | Z 点 |
13 | 折线Z |
15 | 多边形Z |
18 | 多点Z |
21 | 点M |
23 | 折线M |
25 | 多边形M |
28 | 多点M |
31 | 多补丁 |
数据记录###
主文件头后面是可变长度记录,其中每条记录由一个固定长度的记录头和可变长度的记录内容组成。
记录标题####
记录头包含有关记录号和记录内容长度的信息,固定长度为 8 个字节。记录头的组织结构如下图:
字节 | 字段 | 值 | 类型 | 字节顺序 |
---|---|---|---|---|
0-3 | 记录号 | 记录号 | 整数 | 大 |
4-7 | 记录长度 | 记录长度 | 整数 | 大 |
记录内容####
shapefile 记录内容由形状类型和该形状的几何数据组成。形状类型 0 表示没有该形状的几何数据的空形状。记录内容的长度是形状部分和顶点的反映。让我们以 Point Shape 类型为例来详细说明记录如何包含有关这种形状类型的信息。
一个点以 X,Y 的顺序表示某个地理位置,其中每个坐标由一个双精度值表示。下表显示了点形状类型的排列。
字节 | 形状类型 | 值 | 类型 | 数字 | 字节顺序 |
---|---|---|---|---|---|
0-3 | 形状类型 | 1 | 整数 | 1 | 小 |
4-11 | X | X | 双 | 1 | 小 |
12-19 | Y | Y | 双 | 1 | 小 |
其他形状类型的示例可以在 ESRI 技术描述文档中找到。
参考 ##
- ESRI Shapefile 技术说明 by ESRI