📄 shp文件格式.htm
字号:
<BR>76字节* 边界盒
Zmax
双精度
小
<BR>84字节* 边界盒
Mmin
双精度
小
<BR>92字节* 边界盒
Mmax
双精度
小
<BR>*未被使用,值为0.0,若没有被衡量或是Z轴。
<BR>文件长度的值是在16位字下文件的总长度(包括组成文件头的50个16位字)。在shape文件中的所有非空shape被需要是同种shape类型。Shape类型的值如下:
<BR>值
shape类型
<BR>0 空shape <BR>1
点
<BR>3
多线
<BR>5 多边形 <BR>8 多点 <BR>11 点Z <BR>13
多线Z
<BR>15
多边形Z
<BR>18 多点Z <BR>21 点M <BR>23
多线M
<BR>25 多边形M <BR>28 多点M <BR>31
多斑块
<BR>没有被定义的Shape
类型值(2,4,6等直到33)为将来可能的使用而保留。目前shape文件被局限于包含以上定义的同种shape类型。在将来shape文件可以被允许包含多于一种shape类型。若混合shape类型被实现,文件头中的shape类型将标识该文件。
<BR>主文件头的边界盒存储文件中shape的实际幅度。最小边界X和Y直交的(潜在的M,Z)长方形包含了所有的shape。若shape文件是空的(没有记录),min,Ymin,Xmax,Ymax的值是未被定义的。Mmin和Mmax能包含shape文件用来衡量不包含衡量的shape类型的'没有数据'的值(参见2页的数字类型),记录头
<BR>每个记录的头存储了记录的数目和记录内容的长度。记录头有一个固定长度8字节。表
2显示文件记录头中域的字节位置,值,类型和字节顺序。在表中,位置是相对于记录的开始的。 <BR> 表 2 主文件记录头文件的描述
<BR>位置 域
值
类型
字节顺序 <BR>0字节
记录数目
记录数目
整数
大
<BR>4字节 内容长度
内容长度
整数
大
<BR>记录数目从1开始。
<BR>一个记录的内容长度是按16位字衡量的记录内容长度。每个记录因此为文件的总长度贡献(4+内容长度)个16位字,正如文件头是24字节一样。
<BR><BR>主文件记录内容
<BR>Shape文件记录内容包含一个shape类型和接着的该shape的几何数据。记录内容的长度依赖于在一个shape中部分和vertices的数目。对每种shape类型,我们首先描述该shape然后是它在磁盘上的存储镜像。在表3到16,位置是相对于记录内容的开始。
<BR>空shape
<BR>shape类型为0指代一种不带几何数据的空shape,每种要素类型(点,线,多边形等)都支持空,在同一个shape文件中有点和空的点是有效的。常常空shape是放东西的地方;在shape文件产生时被使用和在产生后更被广泛地使用。
<BR> 表 3 空shape记录内容 <BR>位置
域
值
类型
数目 字节顺序 <BR>0字节
shape类型
0
整数
1
小 <BR>在X,Y位置的Shape类型 <BR>点
一个点包括一对以X,Y顺序排列的双精度的坐标
<BR> Point
<BR> {
<BR> Double
X //X坐标
<BR> Double
Y //Y坐标 <BR> }
<BR> 表 4 点记录内容 <BR>位置
域
值
类型
数目 字节顺序 <BR>0字节
shape类型
1
整数
1
小 <BR>4字节
X
X
双精度
1
小 <BR>12字节
Y
Y
双精度
1
小 <BR>多点 一个多点代表一个点的集合:
<BR> MultiPoint
<BR> {
<BR> Double[4]
Box
//边界盒
<BR> Integer
NumPoints
//点的数目
<BR> Point[NumPoints]
Points
//在集合中的点
<BR> } <BR>边界盒以Xmin,Ymin,Xmax,Ymax存储。 <BR>表 5
多点记录内容 <BR>位置
域
值
类型
数目 字节顺序 <BR>0字节
shape类型
8
整数
1
小 <BR>4字节
Box
Box
双精度
4
小 <BR>36字节
NumPoints NumPoints
整数 1
小 <BR>40字节
Points
Points
点
NumPoints 小 <BR>PolyLine
一条PolyLine是指一条包含一个或多个部分的有序的vertices的集合。一个部分是指二个或多个点彼此连接的顺序。部分间彼此相连或不连。部分间彼此可能相交或不相交。
<BR>因为该定义没有禁止有确定坐标的连续点,shape文件的读程序必须掌握这样的情况。在另外,退化(degenerate)和可能导致零长度的结果是不被允许的。
<BR>PolyLine <BR>{ <BR> Double[4]
Box
//边界盒
<BR> Integer
NumParts
//部分的数目 <BR> Integer
NumPoints
//点的总数目
<BR> Integer[NumParts]
Parts
//在部分中第一个点的索引
<BR> Point[NumPoints]
Points
//所有部分的点 <BR>}
<BR>PolyLine的域在以下为更详细的描述: <BR>Box
被存储的PolyLine的边界盒,以Xmin,Ymin,Xmax,Ymax的顺序存储。
<BR>NumParts 在PolyLine中部分的数目。 <BR>NumPoints
所有部分的点的总数目。 <BR>Parts
NumParts长度的数列。为每条PolyLine存储它在点数列中的第一个点的索引。数列索引是从0开始的。
<BR>Points
NumPoints长度的数列。在PolyLine中的每一部分的点被尾到尾存储。部分2的点跟在部分1的点之后,如此下去。部分数列对每一部分保持开始点的数列索引。
<BR>在部分间点之间没有界限。 <BR>表 6 PolyLine记录内容 <BR>位置
域
值
类型
数目 字节顺序 <BR>0字节
shape类型
3
整数
1
小 <BR>4字节
Box
Box
双精度
4
小 <BR>36字节
NumParts NumParts
整数
1
小 <BR>40字节
NumPoints NumPoints
整数 1
小 <BR>44字节
Parts
Parts
整数
NumParts 小 <BR>X字节
Points
Points
点
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -