shp文件格式说明doc.docx

上传人:b****8 文档编号:9530828 上传时间:2023-02-05 格式:DOCX 页数:51 大小:29.43KB
下载 相关 举报
shp文件格式说明doc.docx_第1页
第1页 / 共51页
shp文件格式说明doc.docx_第2页
第2页 / 共51页
shp文件格式说明doc.docx_第3页
第3页 / 共51页
shp文件格式说明doc.docx_第4页
第4页 / 共51页
shp文件格式说明doc.docx_第5页
第5页 / 共51页
点击查看更多>>
下载资源
资源描述

shp文件格式说明doc.docx

《shp文件格式说明doc.docx》由会员分享,可在线阅读,更多相关《shp文件格式说明doc.docx(51页珍藏版)》请在冰豆网上搜索。

shp文件格式说明doc.docx

shp文件格式说明doc

 

shp文件格式说明

 

SHAPE文件格式

 

SDE,ARC/INFO,PCARC/INFO,DataAutomationKit(DAK)和ArcCAD软件提供了shape到coverage的数据转换器,

 

ARC/INFO同样提供了coverage到shape的转换器。

为了和其他数据格式交换,shape文件的格式在本报告中被出版。

 

其他数据流,比如来自全球定位系统(GPS)接收机的数据能同样被存为shape文件或X,Y事件表。

 

Shape文件技术描述计算机程序能通过使用本节的技术描述来产生,读,写shape文件。

 

一个ESRI的shape文件包括一个主文件,一个索引文件,和一个dBASE表。

主文件是一个直接存取,变量记录长度文

 

件,其中每个记录描述一个有它自己的vertices列表的shape。

在索引文件中,每个记录包含对应主文件记录离主

 

文件头开始的偏移,dBASE表包含一feature一个记录的feature的特征。

几何和属性间的一一对应关系是基于记录

 

数目的。

在dBASE文件中的属性记录必须和主文件中的记录是相同顺序

的。

 

命名习惯所有文件名都符合

 

8.3命名习惯。

主文件,索引文件和dBASE文件有相同的前缀。

前缀必须是由字符或数字

 

(a-Z,0-9)开始,后跟0到7个字符(a-Z,0-9,_,)主文件的后缀是.shp,

索引文件的后缀是.shx,dBASE表的后

 

缀是.dbf。

文件名中的所有字母在对文件名敏感的操作系统中都是小写的。

 

1/31

 

例子

 

主文件:

 

counties.shpxx文件:

 

counties.shxdBASE表:

 

ounties.dbf数字类型一个shape文件存储整数和

 

双精度数,本文档的余数指以下类型:

 

整数:

 

有符号32位整数(4字节)

 

双精度:

 

有符号64位IEEE双精度浮点数(8字节)浮点数必须是数字的值。

负无穷,正无穷和非数字(NaN)值在

 

shape文件不被允许。

然而shape文件支持'没有数据'的值这样的概念,但是目前只用于衡量。

某些小于-1038被

 

shape文件读取程序用来代表'没有数据'的值。

 

下面的第一节描述shape文件的总体结构和组织。

第二节描述shape文件支持的每种shape类型的记录内容。

 

主文件的组织

 

主文件(.shp)由固定长度的文件头和接着的变长度记录组成。

每个变长度记录是由固定长度的记录头和接着的变

 

长度记录内容组成。

图1图解了主文件的结构。

 

图1主文件的结构文件头

 

2/31

 

记录头记录内容

 

记录头记录内容

 

记录头记录内容

 

记录头记录内容

 

记录头记录内容

 

Shape文件中所有的内容可以被分为二类:

 

与数据相关的:

 

主文件记录内容

 

主文件头的数据描述域(Shape类型,边界盒等)

 

与文件管理相关的:

 

文件和记录xx

 

记录偏移等

 

整数和双精度整数在文件头中组成数据描述域,在主文件的记录内容是小ndian(PC或Intel)字节顺序。

组成文件

 

的其余部分和文件管理的整数和双精度浮点数是大endian(Sun或Motorola)字节顺序。

 

主文件头

 

主文件头100字节长。

表1显示带有字节位置,值,类型和字节顺序的文件头中的域。

 

在此表中,位置是相对于文件的开始。

 

3/31

 

表1主文件头的描述

 

位置域值类型字节顺序0字节文件代码9994整数大4字节未被使用0整数

大8字节未被使用0整数大12字节未被使用0整数大16字节未被使用0整数大20字节未被使用0整数大24字节文件长度整数大28字节版本1000整数小

32字节Shape类型整数小36字节边界盒Xmin双精度小44字节边界盒Ymin双精度小52字节边界盒Xmax双精度小60字节边界盒Ymax双精度小68字节*边界盒Zmin双精度小76字节*边界盒Zmax双精度小84字节*边界盒Mmin双精度小92字节*边界盒Mmax双精度小*未被使用,值为

 

0.0,若没有被衡量或是Z轴。

 

文件长度的值是在16位字下文件的总长度(包括组成文件头的50个16位字)。

 

在shape文件中的所有非空shape被需

 

要是同种shape类型。

Shape类型的值如下:

值shape类型

 

0空shape

 

1点

 

3多线

 

5多边形

 

8多点

 

11点Z

 

13多线Z

 

15多边形Z

 

18多点Z

 

4/31

 

21点M

 

23多线M

 

25多边形M

 

28多点M

 

31多斑块

 

没有被定义的Shape类型值(2,4,6等直到33)为将来可能的使用而保

留。

 

目前shape文件被局限于包含以上定义

 

的同种shape类型。

在将来shape文件可以被允许包含多于一种shape类型。

若混合shape类型被实现,文件头中的

 

shape类型将标识该文件。

 

主文件头的边界盒存储文件中shape的实际幅度。

最小边界X和Y直交的(潜在的M,Z)长方形包含了所有的shape。

 

若shape文件是空的(没有记录),min,Ymin,Xmax,Ymax的值是未被定义

的。

 

Mmin和Mmax能包含shape文件用来衡量

 

不包含衡量的shape类型的'没有数据'的值(参见2页的数字类型),记录

头每个记录的头存储了记录的数目和记录内容的长度。

记录头有一个固定长度8字节。

表2显示文件记录头中域的字

 

节位置,值,类型和字节顺序。

在表中,位置是相对于记录的开始的。

 

表2主文件记录头文件的描述

 

位置域值类型字节顺序0字节记录数目整数大4字节内容长度整数大记录数目从1开始。

 

5/31

 

一个记录的内容长度是按16位字衡量的记录内容长度。

每个记录因此为文件的总长度贡献(4+内容长度)个16位

 

字,正如文件头是24字节一样。

 

主文件记录内容

 

Shape文件记录内容包含一个shape类型和接着的该shape的几何数据。

记录内容的长度依赖于在一个shape中部分和

 

vertices的数目。

对每种shape类型,我们首先描述该shape然后是它在磁盘上的存储镜像。

在表3到16,位置是相

 

对于记录内容的开始。

 

空shape

 

shape类型为0指代一种不带几何数据的空shape,每种要素类型(点,线,多边形等)都支持空,在同一个shape文

 

件中有点和空的点是有效的。

常常空shape是放东西的地方;在shape文件产生时被使用和在产生后更被广泛地使用。

 

表3空shape记录内容

 

位置域值类型数目字节顺序0字节shape类型0整数1小在X,Y位置的Shape类型

 

点一个点包括一对以X,Y顺序排列的双精度的坐标

 

Point{DoubleX//X坐标

 

DoubleY//Y坐标}表4点记录内容

 

位置域值类型数目字节顺序0字节shape类型1整数1小4字节X

X双精度1小12字节YY双精度1小多点一个多点代表一个点的

集合:

 

6/31

 

MultiPoint{Double[4]Box//边界盒

 

IntegerNumPoints//点的数目

 

Point[NumPoints]Points//在集合中的点}边界盒以

Xmin,Ymin,Xmax,Ymax存储。

 

表5多点记录内容

 

位置域值类型数目字节顺序0字节shape类型8整数1小4字节Box

Box双精度4小36字节NumPointsNumPoints整数1小40字节Points

Points点NumPoints小PolyLine一条PolyLine是指一条包含一个或多个部分的有序的vertices的集合。

一个部分是指二个或多个点彼此

 

连接的顺序。

部分间彼此相连或不连。

部分间彼此可能相交或不相交。

 

因为该定义没有禁止有确定坐标的连续点,shape文件的读程序必须掌握这样的情况。

在另外,退化(degenerate)

 

和可能导致零长度的结果是不被允许的。

 

PolyLine{Double[4]Box//边界盒

 

IntegerNumParts//部分的数目

 

IntegerNumPoints//点的总数目

 

Integer[NumParts]Parts//在部分中第一个点的索引

Point[NumPoints]Points//所有部分的点}PolyLine的域在以下为更

详细的描述:

 

Box被存储的PolyLine的边界盒,以Xmin,Ymin,Xmax,Ymax的顺序存储。

 

NumParts在PolyLine中部分的数目。

 

NumPoints所有部分的点的总数目。

 

7/31

 

PartsNumParts长度的数列。

为每条PolyLine存储它在点数列中的

第一个点的索引。

数列索引是从0开始的。

 

PointsNumPoints长度的数列。

在PolyLine中的每一部分的点被尾到

尾存储。

部分2的点跟在部分1的点之后

 

,如此下去。

部分数列对每一部分保持开始点的数列索引。

 

在部分间点之间没有界限。

 

表6PolyLine记录内容

 

位置域值类型数目字节顺序0字节shape类型3整数1小4字节Box

Box双精度4小36字节NumPartsNumParts整数1小40字节NumPoints

NumPoints整数1小44字节PartsParts整数NumParts小X字节

PointsPoints点NumPoints小注意:

 

X=44+4*NumParts多边形一个多边形包含一个或多个环。

一个环是四或多个点彼此相连组成的一个闭合的

 

彼此不相交的环。

一个多边形可能包括多个外环,一个环的vertices的顺序

和方向指示环的哪一边是多边形的内部

 

在多边形中的洞的环的vertices是逆时针方向的。

一个环组成的多边形总是顺时针方向的。

一个多边形的环是被

 

做为它的一部分的。

因为该定义没有禁止有确定坐标的连续的点,shape文件读程序必须解决这种情况。

在另外,

 

退化(degenerate)和可能导致零长度的结果是不被允许的。

多边形的结构被定义为PolyLine结构,正如下文:

 

Polygon{Double[4]Box//边界盒

 

IntegerNumParts//部分的数目

 

IntegerNumPoints//点的总数目

 

8/31

 

Integer[NumParts]Parts//在部分中第一个点的索引

Point[NumPoints]Points//所有部分的点}多边形的域在以下为更

详细的描述:

 

Box被存储的多边形的边界盒,以Xmin,Ymin,Xmax,Ymax的顺序存储。

 

NumParts在多边形中环的数目。

 

NumPoints所有环的点的总数目。

 

PartsNumParts长度的数列。

为每条环存储它在点数列中的第一个

点的索引。

数列索引是从0开始的。

 

PointsNumPoints长度的数列。

在多边形中的每一个环的点被尾到尾

存储。

环2的点跟在环1的点之后,如此

 

下去。

部分数列对每一环保持开始点的数列索引。

在环间点之间没有界

限。

 

图2中的例子图演示了多边形的表现。

该图中的多边形有一个洞,总共是8

个vertices。

 

关于多边形shape有以下重要注意事项:

 

环是闭合的(第一个和最后一个vetex必须是一样的)在点数列中环的顺序是不重要的。

 

存储在shape文件中的多边形必须是clean,一个clean的多边形是指这样的一个多边形:

 

1.没有自交。

这意味着属于一个环的一段可能不与另一个环的一段相交。

一个多边形

 

的环可能在vetices处彼此相交,但不是在沿段处。

重合的段被认为是相交

的。

 

2.在定义多边形的线的正确一边有多边形的内部。

一个观察者以vertex顺

序沿环走时,右边的邻居是多边形的内

 

9/31

 

部。

一个独环的多边形的vertices因此都是顺时针的。

在这些多边形中的洞有一个逆时针的方向。

当定义在多边形

 

中的洞同样是顺时针时,发生"Dirty"多边形错误。

这会导致内部的重叠。

 

图2一个多边形的实例

 

在此例中,NumParts等于2,NumPoints等于10。

注意洞多边形的点的顺序是逆序的。

 

05

 

部分:

05

 

0123456789

 

点:

 

v1v2v3v4v1v5v8v7v6v5

 

表7多边形记录内容

 

位置域值类型数目字节顺序0字节shape类型5整数1小4字节Box

Box双精度4小36字节NumPartsNumParts整数1小40字节NumPoints

NumPoints整数1小44字节PartsParts整数NumParts小X字节

PointsPoints点NumPoints小注意:

 

X=44+4*NumParts

 

在X,Y空间中衡量的shape类型该种shape有一个额外的坐标M,注意"没有数据"的值可以被指定为M的一个值。

 

PointM一个PointM包括一对以X,Y顺序排列的双精度的坐标,再加上衡量

M。

 

PointM{DoubleX//X坐标

 

DoubleY//Y坐标

 

10/31

 

DoubleM//M衡量}表8PointM记录内容

 

位置域值类型数目字节顺序0字节shape类型21整数1小4字节X

X双精度1小12字节YY双精度1小20字节M

M双精度1小

 

多PointM一个多PointM代表一个PointM的集合:

 

MultiPoint{Double[4]Box//边界盒

 

IntegerNumPoints//点的数目

 

Point[NumPoints]Points//在集合中的点

 

Double[2]MRange//衡量M的上下界

 

Double[NumPoints]MArray//衡量}多PointM的域在以下为更详

细的描述:

 

Box被存储的多PointM的边界盒,以Xmin,Ymin,Xmax,Ymax的顺序存储。

 

NumPoints点的总数目。

 

PointsNumPoints长的点的数列。

 

MRange以Mmin,Mmax顺序存储的多PointM的最小,最大值。

 

MArrayNumPoints长的衡量的数组。

 

表9多PointM记录内容

 

位置域值类型数目字节顺序0字节shape类型28整数1小4字节Box

Box双精度4小36字节NumPointsNumPoints整数1小40字节Points

Points点NumPoints小X*字节MminMmin双精度1小X+8*字节

MmaxMmax双精度1小X+16*字节MarryMarry双精度

NumPoints小注意:

 

X=40+(16*NumPoints)*可选的

 

11/31

 

多LineM一条shape文件的多LineM包含一个或多个部分。

指一条包含一个或多个部分的有序的vertices的集合。

 

一个部分是指二个或多个点彼此连接的顺序。

部分间彼此相连或不连。

部分间彼此可能相交或不相交。

 

PolyLineM{Double[4]Box//边界盒

 

IntegerNumParts//部分的数目

 

IntegerNumPoints//点的总数目

 

Integer[NumParts]Parts//在部分中第一个点的索引

Point[NumPoints]Points//所有部分的点

 

Double[2]MRange//衡量M的上下界

 

Double[NumPoints]MArray//所有点的衡量}PolyLineM的域在

以下为更详细的描述:

 

Box被存储的PolyLineM的边界盒,以Xmin,Ymin,Xmax,Ymax的顺序存储。

 

NumParts在PolyLineM中部分的数目。

 

NumPoints所有部分的点的总数目。

 

PartsNumParts长度的数列。

为每条PolyLineV存储它在点数列中

的第一个点的索引。

数列索引是从0开始

 

的。

 

PointsNumPoints长度的数列。

在PolyLineM中的每一部分的点被尾

到尾存储。

部分2的点跟在部分1的点之

 

后,如此下去。

部分数列对每一部分保持开始点的数列索引。

 

在部分间点之间没有界限。

 

MRange以Mmin,Mmax顺序存储的多PointM的最小,最大值。

 

12/31

 

MArrayNumPoints长的衡量的数组,在多PointM每部分的衡量被被尾到尾存储部分2的点跟在部分1的点之后,

 

如此下去。

部分数列对每一部分保持开始点的数列索引。

在部分间点之间没有界限。

 

表10PolyLineM记录内容

 

位置域值类型数目字节顺序0字节shape类型23整数1小4字节Box

Box双精度4小36字节NumPartsNumParts整数1小40字节NumPoints

NumPoints整数1小44字节PartsParts整数NumParts小X字节

PointsPoints点NumPoints小Y*字节MminMmin双

精度1小Y+8*字节MmaxMmax双精度1小Y+16*字节Marry

Marry双精度NumPoints小注意:

 

X=44+4*NumPartsY=40+(16*NumPoints)*可选的

 

多边形M一个多边形M包含一个或多个环。

一个环是四或多个点彼此相连组成的一个闭合的彼此不相交的环。

注意

 

相交是在X,Y空间计算,而不是在X,Y,M空间。

一个多边形可能包括多个外环,一个多边形的环是被做为它的一部分

 

的。

 

多边形M的结构被定义为PolyLineM结构,正如下文:

 

PolygonM{Double[4]Box//边界盒

 

IntegerNumParts//部分的数目

 

IntegerNumPoints//点的总数目

 

Integer[NumParts]Parts//在部分中第一个点的索引

Point[NumPoints]Points//所有部分的点

 

Double[2]MRange//衡量M的上下界

 

13/31

 

Double[NumPoints]MArray//所有点的衡量}多边形M的域在以

下为更详细的描述:

 

Box被存储的多边形的边界盒,以Xmin,Ymin,Xmax,Ymax的顺序存储。

NumParts在多边形M中环的数目。

 

NumPoints所有环的点的总数目。

 

PartsNumParts长度的数列。

为每条环存储它在点数列中的第一个

点的索引。

数列索引是从0开始的。

 

PointsNumPoints长度的数列。

在多边形中的每一个环的点被尾到尾

存储。

环2的点跟在环1的点之后,如此

 

下去。

部分数列对每一环保持开始点的数列索引。

在环间点之间没有界

限。

 

MRange以Mmin,Mmax顺序存储的多PointM的最小,最大值。

 

MArrayNumPoints长的衡量的数组,在多PointM每部分的衡量被被尾到尾存储部分2的点跟在部分1的点之后,

 

如此下去。

部分数列对每一部分保持开始点的数列索引。

在部分间点之间没有界限。

 

关于PolygonMshape有以下注意事项:

 

环是闭合的(第一个和最后一个vetex必须是一样的)在点数列中环的顺序是不重要的。

 

表11多边形M的记录内容

 

位置域值类型数目字节顺序0字节shape类型5整数1小4字节Box

Box双精度4小36字节NumPartsNumParts整数1小40字节NumPoints

NumPoints整数1小44字节PartsParts整数NumParts小X字节

PointsPoints点NumPoints小Y*字节MminMmin双精

 

14/31

 

度1小Y+8*字节MmaxMmax双精度1小Y+16*字节Marry

Marry双精度NumPoints小注意:

 

X=44+4*NumPartsY=40+(16*NumPoints)*可选的在X,Y,Z空间中衡量的shape类型该种shape有一

 

个额外的坐标M,注意"没有数据"的值可以被指定为M的一个值。

 

PointZ一个PointZ包括一对以X,Y,Z顺序排列的双精度的坐标,再加

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1