2022年shp文件格式.pdf
《2022年shp文件格式.pdf》由会员分享,可在线阅读,更多相关《2022年shp文件格式.pdf(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、shp 文件格式SDE,ARC/INFO,PC ARC/INFO,Data Automation Kit(DAK)和 ArcCAD软件提供了shape 到coverage 的数据转换器, ARC/INFO同样提供了coverage 到 shape 的转换器。 为了和其他数据格式交换, shape 文件的格式在本报告中被出版。其他数据流, 比如来自全球定位系统(GPS)接收机的数据能同样被存为shape 文件或 X,Y 事件表。Shape文件技术描述计算机程序能通过使用本节的技术描述来产生,读,写shape 文件。一个 ESRI的 shape 文件包括一个主文件,一个索引文件,和一个dBASE表
2、。主文件是一个直接存取,变量记录长度文件,其中每个记录描述一个有它自己的vertices列表的 shape。在索引文件中,每个记录包含对应主文件记录离主文件头开始的偏移,dBASE表包含一feature一个记录的feature的特征。几何和属性间的一一对应关系是基于记录数目的。在dBASE文件中的属性记录必须和主文件中的记录是相同顺序的。命名习惯所有文件名都符合命名习惯。主文件, 索引文件和dBASE文件有相同的前缀。前缀必须是由字符或数字 (a-Z,0-9 ) 开始, 后跟 0 到 7 个字符 (a-Z,0-9 , _, ) 主文件的后缀是.shp ,索引文件的后缀是.shx ,dBASE表
3、的后缀是 .dbf 。文件名中的所有字母在对文件名敏感的操作系统中都是小写的。例子主文件:索引文件 : dBASE表: 数字类型一个shape 文件存储整数和双精度数,本文档的余数指以下类型:整数:有符号32 位整数( 4 字节)双精度:有符号64 位 IEEE 双精度浮点数(8 字节)浮点数必须是数字的值。负无穷,正无穷和非数字(NaN )值在 shape 文件不被允许。然而shape 文件支持 没有数据 的值这样的概念,但是目前只用于衡量。某些小于1038 被 shape 文件读取程序用来代表 没有数据 的值。下面的第一节描述shape 文件的总体结构和组织。第二节描述shape 文件支持
4、的每种shape类型的记录内容。主文件的组织主文件 (.shp )由固定长度的文件头和接着的变长度记录组成。每个变长度记录是由固定长度的记录头和接着的变长度记录内容组成。图1 图解了主文件的结构。图 1 主文件的结构文件头记录头记录内容记录头记录内容记录头记录内容记录头记录内容 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 19 页 - - - - - - - - - - 记录头记录内容Shape文件中所有的内容可以被分为二类:与数据相关的:。主文件记录内容。主文件头的数据描述域(Shape
5、 类型,边界盒等)与文件管理相关的:。文件和记录长度。记录偏移等整数和双精度整数在文件头中组成数据描述域,在主文件的记录内容是小ndian (PC或Intel)字节顺序。 组成文件的其余部分和文件管理的整数和双精度浮点数是大endian(Sun或 Motorola )字节顺序。主文件头主文件头 100 字节长。表1显示带有字节位置,值,类型和字节顺序的文件头中的域。在此表中,位置是相对于文件的开始。表 1 主文件头的描述位置域值类型字节顺序0 字节文件代码9994 整数大4 字节未被使用0 整数大8 字节未被使用0 整数大12 字节未被使用0 整数大16 字节未被使用0 整数大20 字节未被使
6、用0 整数大24 字节文件长度文件长度整数大28 字节版本1000 整数小32 字节Shape 类型Shape类型整数小精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 19 页 - - - - - - - - - - 36 字节边界盒Xmin 双精度小44 字节边界盒Ymin 双精度小52 字节边界盒Xmax 双精度小60 字节边界盒Ymax 双精度小68 字节 * 边界盒Zmin 双精度小76 字节 * 边界盒Zmax 双精度小84 字节 * 边界盒Mmin 双精度小92 字节 * 边界盒M
7、max 双精度小*未被使用,值为,若没有被衡量或是Z 轴。文件长度的值是在16 位字下文件的总长度(包括组成文件头的50 个 16 位字)。在shape文件中的所有非空shape 被需要是同种shape 类型。 Shape 类型的值如下:值shape 类型0 空 shape 1 点3 多线5 多边形8 多点11 点 Z 13 多线 Z 15 多边形 Z 18 多点 Z 21 点 M 23 多线 M 25 多边形 M 28 多点 M 31 多斑块没有被定义的Shape 类型值( 2,4,6 等直到 33)为将来可能的使用而保留。目前shape文件被局限于包含以上定义的同种shape 类型。在将来
8、 shape 文件可以被允许包含多于一种shape 类型。若混合shape 类型被实现,文件头中的shape 类型将标识该文件。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 19 页 - - - - - - - - - - 主文件头的边界盒存储文件中shape 的实际幅度。最小边界X和 Y直交的(潜在的M,Z)长方形包含了所有的shape。若 shape 文件是空的 (没有记录), min,Ymin,Xmax,Ymax 的值是未被定义的。 Mmin和 Mmax能包含 shape 文件用来衡量
9、不包含衡量的shape 类型的 没有数据 的值(参见2 页的数字类型),记录头每个记录的头存储了记录的数目和记录内容的长度。记录头有一个固定长度8 字节。表 2显示文件记录头中域的字节位置,值,类型和字节顺序。在表中, 位置是相对于记录的开始的。表 2 主文件记录头文件的描述位置域值类型字节顺序0 字节记录数目记录数目整数大4 字节内容长度内容长度整数大记录数目从1 开始。一个记录的内容长度是按16 位字衡量的记录内容长度。每个记录因此为文件的总长度贡献(4内容长度)个16 位字,正如文件头是24 字节一样。主文件记录内容Shape文件记录内容包含一个shape 类型和接着的该shape 的几
10、何数据。 记录内容的长度依赖于在一个shape 中部分和 vertices的数目。对每种shape 类型,我们首先描述该shape然后是它在磁盘上的存储镜像。在表3 到 16,位置是相对于记录内容的开始。空 shape shape 类型为 0 指代一种不带几何数据的空shape,每种要素类型(点,线,多边形等)都支持空, 在同一个shape 文件中有点和空的点是有效的。常常空 shape 是放东西的地方;在shape 文件产生时被使用和在产生后更被广泛地使用。表 3 空 shape 记录内容位置域值类型数目字节顺序0 字节shape 类型0 整数1 小在 X,Y 位置的 Shape 类型点一个
11、点包括一对以X,Y 顺序排列的双精度的坐标Point Double X /X 坐标精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 19 页 - - - - - - - - - - Double Y /Y 坐标 表4 点记录内容位置域值类型数目字节顺序0 字节shape 类型1 整数1 小4 字节X X 双精度1 小12 字节Y Y 双精度1 小多点一个多点代表一个点的集合:MultiPoint Double4 Box / 边界盒Integer NumPoints / 点的数目PointNumP
12、oints Points / 在集合中的点 边界盒以Xmin,Ymin,Xmax,Ymax 存储。表5 多点记录内容位置域值类型数目字节顺序0 字节shape 类型8 整数1 小4 字节Box Box 双精度4 小36 字节NumPoints NumPoints 整数1 小40 字节Points Points 点NumPoints 小PolyLine 一条 PolyLine是指一条包含一个或多个部分的有序的vertices的集合。一个部分是指二个或多个点彼此连接的顺序。部分间彼此相连或不连。部分间彼此可能相交或不相交。因为该定义没有禁止有确定坐标的连续点,shape 文件的读程序必须掌握这样的
13、情况。在另外,退化 (degenerate)和可能导致零长度的结果是不被允许的。PolyLine 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 19 页 - - - - - - - - - - Double4 Box / 边界盒Integer NumParts / 部分的数目Integer NumPoints / 点的总数目IntegerNumParts Parts / 在部分中第一个点的索引PointNumPoints Points / 所有部分的点 PolyLine的域在以下为更详细的描
14、述:Box 被存储的PolyLine的边界盒,以 Xmin,Ymin,Xmax,Ymax 的顺序存储。NumParts 在 PolyLine中部分的数目。NumPoints 所有部分的点的总数目。Parts NumParts 长度的数列。 为每条 PolyLine存储它在点数列中的第一个点的索引。数列索引是从0 开始的。Points NumPoints 长度的数列。 在 PolyLine中的每一部分的点被尾到尾存储。部分 2 的点跟在部分1 的点之后,如此下去。部分数列对每一部分保持开始点的数列索引。在部分间点之间没有界限。表6 PolyLine记录内容位置域值类型数目字节顺序0 字节shap
15、e 类型3 整数1 小4 字节Box Box 双精度4 小36 字节NumParts NumParts 整数1 小40 字节NumPoints NumPoints 整数1 小44 字节Parts Parts 整数NumParts 小X字节Points Points 点NumPoints 小注意: X=44+4* NumParts 多边形一个多边形包含一个或多个环。一个环是四或多个点彼此相连组成的一个闭合的彼此不相交的环。一个多边形可能包括多个外环,一个环的vertices的顺序和方向指示环的哪一边是多边形的内部。在多边形中的洞的环的vertices是逆时针方向的。 一个环组成的多边形总是顺时针
16、方向的。一个多边形的环是被做为它的一精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 19 页 - - - - - - - - - - 部分的。因为该定义没有禁止有确定坐标的连续的点,shape 文件读程序必须解决这种情况。在另外, 退化 (degenerate)和可能导致零长度的结果是不被允许的。多边形的结构被定义为PolyLine结构,正如下文:Polygon Double4 Box / 边界盒Integer NumParts / 部分的数目Integer NumPoints / 点的总数目
17、IntegerNumParts Parts / 在部分中第一个点的索引PointNumPoints Points / 所有部分的点 多边形的域在以下为更详细的描述:Box 被存储的多边形的边界盒,以Xmin,Ymin,Xmax,Ymax 的顺序存储。NumParts 在多边形中环的数目。NumPoints 所有环的点的总数目。Parts NumParts 长度的数列。为每条环存储它在点数列中的第一个点的索引。数列索引是从0 开始的。Points NumPoints 长度的数列。在多边形中的每一个环的点被尾到尾存储。环 2 的点跟在环1 的点之后, 如此下去。 部分数列对每一环保持开始点的数列索
18、引。在环间点之间没有界限。图 2 中的例子图演示了多边形的表现。该图中的多边形有一个洞,总共是8个 vertices。关于多边形shape 有以下重要注意事项:环是闭合的(第一个和最后一个vetex 必须是一样的)在点数列中环的顺序是不重要的。存储在 shape 文件中的多边形必须是clean ,一个 clean 的多边形是指这样的一个多边形:1 没有自交。这意味着属于一个环的一段可能不与另一个环的一段相交。一个多边形的环可能在vetices处彼此相交,但不是在沿段处。重合的段被认为是相交的。2 在定义多边形的线的正确一边有多边形的内部。一个观察者以vertex顺序沿环走时,右边的邻居是多边形
19、的内部。一个独环的多边形的vertices因此都是顺时针的。在这些多边形中的洞有一个逆时针的方向。当定义在多边形中的洞同样是顺时针时,发生Dirty多边形错误。这会导致内部的重叠。图 2 一个多边形的实例在此例中, NumParts 等于 2,NumPoints 等于 10。注意洞多边形的点的顺序是逆序的。0 5 部分 : 0 5 0 1 2 3 4 5 6 7精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 19 页 - - - - - - - - - - 8 9 点: v1 v2 v3 v4
20、 v1 v5 v8 v7 v6 v5 表 7 多边形记录内容位置域值类型数目字节顺序0 字节shape 类型5 整数1 小4 字节Box Box 双精度4 小36 字节NumParts NumParts 整数1 小40 字节NumPoints NumPoints 整数1 小44 字节Parts Parts 整数NumParts 小X字节Points Points 点NumPoints 小注意: X=44+4* NumParts 在 X,Y 空间中衡量的shape 类型该种shape 有一个额外的坐标 M, 注意 没有数据 的值可以被指定为M的一个值。PointM 一个 PointM 包括一对以
21、X,Y 顺序排列的双精度的坐标,再加上衡量M 。PointM Double X /X 坐标Double Y /Y 坐标Double M /M 衡量 表8 PointM记录内容位置域值类型数目字节顺序0 字节shape 类型21 整数1 小4 字节X X 双精度1 小12 字节Y Y 双精度1 小精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 19 页 - - - - - - - - - - 20 字节M M 双精度1 小多 PointM 一个多 PointM 代表一个PointM 的集合:Mu
22、ltiPoint Double4 Box / 边界盒Integer NumPoints / 点的数目PointNumPoints Points / 在集合中的点Double2 M Range / 衡量 M的上下界DoubleNumPoints M Array / 衡量 多 PointM 的域在以下为更详细的描述:Box 被存储的多PointM 的边界盒,以 Xmin,Ymin,Xmax,Ymax 的顺序存储。NumPoints 点的总数目。Points NumPoints 长的点的数列。M Range 以 Mmin,Mmax顺序存储的多PointM 的最小,最大值。M Array NumPoi
23、nts 长的衡量的数组。表9 多 PointM 记录内容位置域值类型数目字节顺序0 字节shape 类型28 整数1 小4 字节Box Box 双精度4 小36 字节NumPoints NumPoints 整数1 小40 字节Points Points 点NumPoints 小X*字节Mmin Mmin 双精度1 小X+8*字节Mmax Mmax 双精度1 小X+16*字节Marry Marry 双精度NumPoints 小注意: X 40 ( 16* NumPoints )* 可选的多 LineM 一条 shape 文件的多LineM 包含一个或多个部分。指一条包含一个或多个部精品资料 -
24、- - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 19 页 - - - - - - - - - - 分的有序的vertices的集合。一个部分是指二个或多个点彼此连接的顺序。部分间彼此相连或不连。部分间彼此可能相交或不相交。PolyLineM Double4 Box / 边界盒Integer NumParts / 部分的数目Integer NumPoints / 点的总数目IntegerNumParts Parts / 在部分中第一个点的索引PointNumPoints Points / 所有部分的点Doub
25、le2 M Range / 衡量 M的上下界DoubleNumPoints M Array / 所有点的衡量 PolyLineM 的域在以下为更详细的描述:Box 被存储的 PolyLineM 的边界盒,以 Xmin,Ymin,Xmax,Ymax 的顺序存储。NumParts 在 PolyLineM 中部分的数目。NumPoints 所有部分的点的总数目。Parts NumParts 长度的数列。为每条PolyLineV存储它在点数列中的第一个点的索引。数列索引是从0 开始的。Points NumPoints 长度的数列。在PolyLineM 中的每一部分的点被尾到尾存储。部分 2 的点跟在部
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022 shp 文件格式
限制150内