搜档网
当前位置:搜档网 › shape文件格式

shape文件格式

shape文件格式
shape文件格式

SHAPE 文件格式

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表。主文件是一个直接存取,变量记录长度文件,其中每个记录描述一个有它自己的vertices列表的shape。在索引文件中,每个记录包含对应主文件记录离主文件头开始的偏移,dBASE表包含一feature一个记录的feature的特征。几何和属性间的一一对应关系是基于记录数目的。在dBASE文件中的属性记录必须和主文件中的记录是相同顺序的。

命名习惯

所有文件名都符合8.3命名习惯。主文件,索引文件和dBASE文件有相同的前缀。前缀必须是由字符或数字(a-Z,0-9)开始,后跟0到7个字符(a-Z,0-9,_,)主文件的后缀是.shp,索引文件的后缀是.shx,dBASE表的后缀是.dbf。文件名中的所有字母在对文件名敏感的操作系统中都是小写的。

例子

主文件:counties.shp 索引文件:counties.shx dBASE表: counties.dbf

数字类型

一个shape文件存储整数和双精度数,本文档的余数指以下类型:

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

双精度:有符号64位IEEE双精度浮点数(8字节)

浮点数必须是数字的值。负无穷,正无穷和非数字(NaN)值在shape文件不被允许。然而shape文件支持'没有数据'的值这样的概念,但是目前只用于衡量。某些小于-1038被shape文件读取程序用来代表'没有数据'的值。

下面的第一节描述shape文件的总体结构和组织。第二节描述shape文件支持的每种shape类型的记录内容。

主文件的组织

主文件(.shp)由固定长度的文件头和接着的变长度记录组成。每个变长度记录是由固定长度的记录头和接着的变长度记录内容组成。图1图解了主文件的结构。

图 1 主文件的结构

文件头

记录头记录内容

记录头记录内容

记录头记录内容

记录头记录内容

……

……

记录头记录内容

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

与数据相关的:

。主文件记录内容

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

与文件管理相关的:

。文件和记录长度

。记录偏移等

整数和双精度整数在文件头中组成数据描述域,在主文件的记录内容是小endian(PC或Intel)字节顺序。组成文件的其余部分和文件管理的整数和双精度浮点数是大endian(Sun或Motorola)字节顺序。主文件头

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

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

表 1 主文件头的描述

位置域值类型字节顺序

0字节文件代码 9994 整数大

4字节未被使用 0 整数大

8字节未被使用 0 整数大

12字节未被使用 0 整数大

16字节未被使用 0 整数大

20字节未被使用 0 整数大

24字节文件长度文件长度整数大

28字节版本 1000 整数小

32字节 Shape类型 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

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文件是空的(没有记录),Xmin,Ymin,Xmax,Ymax的值是未被定义的。Mmin和Mmax 能包含shape文件用来衡量不包含衡量的shape类型的'没有数据'的值(参见2页的数字类型),

记录头

每个记录的头存储了记录的数目和记录内容的长度。记录头有一个固定长度8字节。表 2显示文件记录头中域的字节位置,值,类型和字节顺序。在表中,位置是相对于记录的

开始的。

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

位置域值类型字节顺序

0字节记录数目记录数目整数大

4字节内容长度内容长度整数大

记录数目从1开始。

一个记录的内容长度是按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

{

Double X //X坐标

Double Y //Y坐标

}

表 4 点记录内容

位置域值类型数目字节顺序

0字节 shape类型 1 整数 1 小

4字节 X X 双精度 1 小

12字节 Y Y 双精度 1 小

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

MultiPoint

{

Double[4] Box //边界盒

Integer NumPoints //点的数目

Point[NumPoints] 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文件的读程序必须掌握这样的情况。在另外,退化(degenerate)和可能导致零长度的结果是不被允许的。

PolyLine

{

Double[4] Box //边界盒

Integer NumParts //部分的数目

Integer NumPoints //点的总数目

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

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

}

PolyLine的域在以下为更详细的描述:

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

NumParts 在PolyLine中部分的数目。

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

Parts NumParts长度的数列。为每条PolyLine存储它在点数列中的第一个点的索

引。数列索引是从0开始的。

Points NumPoints长度的数列。在PolyLine中的每一部分的点被尾到尾存储。部分2的点跟在部分1的点之后,如此下去。部分数列对每一部分保持开始点的数列索引。在部分间点之间没有界限。

表 6 PolyLine记录内容

位置域值类型数目字节顺序

0字节 shape类型 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是逆时针方向的。一个环组成的多边形总是顺时针方向的。一个多边形的环是被做为它的一部分的。因为该定义没有禁止有确定坐标的连续的点,shape文件读程序必须解决这种情况。在另外,退化(degenerate)和可能导致零长度的结果是不被允许的。多边形的结构被定义为PolyLine结构,正如下文:

Polygon

{

Double[4] Box //边界盒

Integer NumParts //部分的数目

Integer NumPoints //点的总数目

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

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

}

多边形的域在以下为更详细的描述:

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

NumParts 在多边形中环的数目。

NumPoints 所有环的点的总数目。

Parts NumParts长度的数列。为每条环存储它在点数列中的第一个点的索引。数列索引是从0开始的。

Points NumPoints长度的数列。在多边形中的每一个环的点被尾到尾存储。环2的点跟在环1的点之后,如此下去。部分数列对每一环保持开始点的数列索引。在环间点之间没有界限。

图 2中的例子图演示了多边形的表现。该图中的多边形有一个洞,总共是8个vertices。

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

环是闭合的(第一个和最后一个vetex必须是一样的)在点数列中环的顺序是不重要的。存储在shape文件中的多边形必须是clean,一个clean的多边形是指这样的一个多边形:

1.没有自交。这意味着属于一个环的一段可能不与另一个环的一段相交。一个多边形的环可能在vetices处彼此相交,但不是在沿段处。重合的段被认为是相交的。

2.在定义多边形的线的正确一边有多边形的内部。一个观察者以vertex顺序沿环走时,右边的邻居是多边形的内部。一个独环的多边形的vertices因此都是顺时针的。在这些多边形中的洞有一个逆时针的方向。当定义在多边形中的洞同样是顺时针时,发生"Dirty"多边形错误。这会导致内部的重叠。

图 2 一个多边形的实例

在此例中,NumParts等于2,NumPoints等于10。注意洞多边形的点的顺序是逆序的。

0 5

部分: 0 5

0 1 2 3 4 5 6 7 8 9

点: v1 v2 v3 v4 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包括一对以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 小

20字节 M M 双精度 1 小

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

MultiPoint

{

Double[4] Box //边界盒

Integer NumPoints //点的数目

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

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

Double[NumPoints] M Array //衡量

}

多PointM的域在以下为更详细的描述:

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

NumPoints 点的总数目。

Points NumPoints长的点的数列。

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

M Array NumPoints长的衡量的数组。

表 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包含一个或多个部分。指一条包含一个或多个部分的有序的vertices的集合。一个部分是指二个或多个点彼此连接的顺序。部分间彼此相

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

PolyLineM

{

Double[4] Box //边界盒

Integer NumParts //部分的数目

Integer NumPoints //点的总数目

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

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

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

}

PolyLineM的域在以下为更详细的描述:

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

NumParts 在PolyLineM中部分的数目。

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

Parts NumParts长度的数列。为每条PolyLineV存储它在点数列中的第一个点的索引。数列索引是从0开始的。

Points NumPoints长度的数列。在PolyLineM中的每一部分的点被尾到尾存储。部分2的点跟在部分1的点之后,如此下去。部分数列对每一部分保持开始点的数列索引。在部分间点之间没有界限。M Range 以Mmin,Mmax顺序存储的多PointM的最小,最大值。

M Array NumPoints长的衡量的数组,在多PointM每部分的衡量被被尾到尾存储部分2的点跟在部分1的点之后,如此下去。部分数列对每一部分保持开始点的数列索引。在部分间点之间没有界限。

表 10 PolyLineM记录内容

位置域值类型数目字节顺序

0字节 shape类型 23 整数 1 小

4字节 Box Box 双精度 4 小

36字节 NumParts NumParts 整数 1 小

40字节 NumPoints NumPoints 整数 1 小

44字节 Parts Parts 整数 NumParts 小

X字节 Points Points 点 NumPoints 小

Y*字节 Mmin Mmin 双精度 1 小

Y+8*字节 Mmax Mmax 双精度 1 小

Y+16*字节 Marry Marry 双精度 NumPoints 小

注意:X=44+4* NumParts Y = 40+(16* NumPoints) *可选的

多边形M 一个多边形M包含一个或多个环。一个环是四或多个点彼此相连组成的一个闭合的彼此不相交的环。注意相交是在X,Y空间计算,而不是在X,Y,M空间。一个多边形可能包括多个外环,一个多边形的环是被做为它的一部分的。

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

PolygonM

{

Double[4] Box //边界盒

Integer NumParts //部分的数目

Integer NumPoints //点的总数目

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

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

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

}

多边形M的域在以下为更详细的描述:

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

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

NumPoints 所有环的点的总数目。

Parts NumParts长度的数列。为每条环存储它在点数列中的第一个点的索引。数列索引是从0开始的。

Points NumPoints长度的数列。在多边形中的每一个环的点被尾到尾存储。环2的点跟在环1的点之后,如此下去。部分数列对每一环保持开始点的数列索引。在环间点之间没有界限。

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

M Array NumPoints长的衡量的数组,在多PointM每部分的衡量被被尾到尾存储部分2的点跟在部分1的点之后,如此下去。部分数列对每一部分保持开始点的数列索引。在部分间点之间没有界限。

关于PolygonM shape有以下注意事项:

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

表 11 多边形M的记录内容

位置域值类型数目字节顺序

0字节 shape类型 5 整数 1 小

4字节 Box Box 双精度 4 小

36字节 NumParts NumParts 整数 1 小

40字节 NumPoints NumPoints 整数 1 小

44字节 Parts Parts 整数 NumParts 小

X字节 Points Points 点 NumPoints 小

Y*字节 Mmin Mmin 双精度 1 小

Y+8*字节 Mmax Mmax 双精度 1 小

Y+16*字节 Marry Marry 双精度 NumPoints 小

注意:X=44+4* NumParts Y = 40+(16* NumPoints) *可选的

在X,Y,Z空间中衡量的shape类型

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

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

PointM

{

Double X //X 坐标

Double Y //Y 坐标

Double Z //Z 坐标

Double M //M 衡量

}

表 12 PointZ记录内容

位置域值类型数目字节顺序

0字节 shape类型 21 整数 1 小

4字节 X X 双精度 1 小

12字节 Y Y 双精度 1 小

20字节 Z Z 双精度 1 小

28字节 Measure M 双精度 1 小

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

MultiPoint

{

Double[4] Box //边界盒

Integer NumPoints //点的数目

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

Double[2] Z Range //Z的上下界

Double[NumPoints] Z Array //Z的值

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

Double[NumPoints] M Array //衡量

}

边界盒是以Xmin,Ymin,Xmax,Ymax的顺序存储。Z Range是以Mmin,Mmax顺序存储的,M Range是以Mmin,Mmax顺序存储的。

表 9 多PointM记录内容

位置域值类型数目字节顺序

0字节 shape类型 28 整数 1 小

4字节 Box Box 双精度 4 小

36字节 NumPoints NumPoints 整数 1 小

40字节 Points Points 点 NumPoints 小

X字节 Zmin Zmin 双精度 1 小

X+8字节 Zmax Zmax 双精度 1 小

X+16字节 Zarry Zarry 双精度 NumPoints 小

Y*字节 Mmin Mmin 双精度 1 小

Y+8*字节 Mmax Mmax 双精度 1 小

Y+16*字节 Marry Marry 双精度 NumPoints 小

注意:X = 40+(16* NumPoints)Y=X+16+(8* NumPoints) *可选的

多LineZ 一条shape文件的多LineZ包含一个或多个部分。指一条包含一个或多个部分的有序的vertices的集合。一个部分是指二个或多个点彼此连接的顺序。部分间彼此相连或不连。部分间彼此可能相交或不相交。

PolyLineZ

{

Double[4] Box //边界盒

Integer NumParts //部分的数目

Integer NumPoints //点的总数目

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

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

Double[2] Z Range //Z的上下界

Double[NumPoints] Z Array //Z的值

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

Double[NumPoints] M Array //所有点的衡量

}

PolyLineZ的域在以下为更详细的描述:

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

NumParts 在PolyLineZ中部分的数目。

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

Parts NumParts长度的数列。为每条PolyLineZ存储它在点数列中的第一个点的索引。数列索引是从0开始的。

Points NumPoints长度的数列。在PolyLineZ中的每一部分的点被尾到尾存储。部分2的点跟在部分1的点之后,如此下去。部分数列对每一部分保持开始点的数列索引。在部分间点之间没有界限。ZRange 以Zmin,Zmax顺序存储的多PointZ的最小,最大值。

Z Array NumPoints长的衡量的数组,在多PointZ每部分的衡量被被尾到尾存储部分2的点跟在部分1的点之后,如此下去。部分数列对每一部分保持开始点的数列索引。在部分间点之间没有界限。

M Range 以Mmin,Mmax顺序存储的多PointZ的最小,最大值。

M Array NumPoints长的衡量的数组,在多PointZ每部分的衡量被被尾到尾存储部分2的点跟在部分1的点之后,如此下去。部分数列对每一部分保持开始点的数列索引。在部分间点之间没有界限。

表 14 PolyLineZ记录内容

位置域值类型数目字节顺序

0字节 shape类型 23 整数 1 小

4字节 Box Box 双精度 4 小

36字节 NumParts NumParts 整数 1 小

40字节 NumPoints NumPoints 整数 1 小

44字节 Parts Parts 整数 NumParts 小

X字节 Points Points 点 NumPoints 小

Y字节 Zmin Zmin 双精度 1 小

Y+8字节 Zmax Zmax 双精度 1 小

Y+16字节 Zarry Zarry 双精度 NumPoints 小

Z*字节 Mmin Mmin 双精度 1 小

Z+8*字节 Mmax Mmax 双精度 1 小

Z+16*字节 Marry Marry 双精度 NumPoints 小

注意:X=44+4* NumParts Y = X+(16* NumPoints)Z=Y+16+(8* NumPoints) *可选的

多边形Z 一个多边形Z包含一个或多个环。一个环是四或多个点彼此相连组成的一个闭合的彼此不相交的环。一个多边形可能包括多个外环,一个多边形Z的环是被做为它的一部分的。

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

PolygonZ

{

Double[4] Box //边界盒

Integer NumParts //部分的数目

Integer NumPoints //点的总数目

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

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

Double[2] Z Range //Z的上下界

Double[NumPoints] Z Array //Z的值

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

Double[NumPoints] M Array //所有点的衡量

}

多边形Z的域在以下为更详细的描述:

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

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

NumPoints 所有环的点的总数目。

Parts NumParts长度的数列。为每条环存储它在点数列中的第一个点的索引。数列索引是从0开始的。

Points NumPoints长度的数列。在多边形中的每一个环的点被尾到尾存储。环2的点跟在环1的点之后,如此下去。部分数列对每一环保持开始点的数列索引。在环间点之间没有界限。

ZRange 以Zmin,Zmax顺序存储的多PointZ的最小,最大值。

Z Array NumPoints长的衡量的数组,在多PointZ每部分的衡量被被尾到尾存储部分2的点跟在部分1的点之后,如此下去。部分数列对每一部分保持开始点的数列索引。在部分间点之间没有界限。

M Range 以Mmin,Mmax顺序存储的多PointZ的最小,最大值。

M Array NumPoints长的衡量的数组,在多PointZ每部分的衡量被被尾到尾存储部分2的点跟在部分1的点之后,如此下去。部分数列对每一部分保持开始点的数列索引。在部分间点之间没有界限。

关于PolygonZ shape有以下注意事项:

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

表 15 多边形Z的记录内容

位置域值类型数目字节顺序

0字节 shape类型 15 整数 1 小

4字节 Box Box 双精度 4 小

36字节 NumParts NumParts 整数 1 小

40字节 NumPoints NumPoints 整数 1 小

44字节 Parts Parts 整数 NumParts 小

X字节 Points Points 点 NumPoints 小

Y字节 Zmin Zmin 双精度 1 小

Y+8字节 Zmax Zmax 双精度 1 小

Y+16字节 Zarry Zarry 双精度 NumPoints 小

Z*字节 Mmin Mmin 双精度 1 小

Z+8*字节 Mmax Mmax 双精度 1 小

Z+16*字节 Marry Marry 双精度 NumPoints 小

注意:X=44+4* NumParts Y = X+(16* NumPoints)Z=Y+16+(8* NumPoints) *可选的

多Patch 一个MultiPatch 包括许多表面斑块。每个表面斑块描述了一个表面。MultiPatch的表面斑块是指比如它的部分,控制一个MultiPatch部分的vertices顺序是如何被解释的部分类型。一个MultiPatch的部分可以是以下类型:

三角形条带三角形的连接条带,此处每个顶点(在开始二个后)完成一个新三角形。一个新三角形总是通过把新顶点和二个临近的原有点相连而得到。

三角形扇三角形的连接扇,此处每个顶点(在开始二个后)完成一个新三角形。一个新三角形总是通过把新顶点和一个个临近的原有点及这部分的第一个顶点相连而得到。

外环多边形的外环。

内环多边形的洞。

第一环未定义类型的多边形的第一个环。

环未定义类型的多边形的环。

一个简单的三角形条带或三角形扇代表一个简单的表面斑块。参见图 3 看这些部分类型的例子。

带环的部分的序列能描述有洞的多边形表面。该序列典型包括一个外环,代表斑块的外边界,用许多内环代表洞。当用代表表现带洞的多边形斑块环的集合的个体环是不知道,整个序列以第一环开始,接着是其他的环。不跟着第一环后的环的序列被认为是没有洞的外环的序列。

图 3 MultiPatch 部分例子

用来对部分类型进行编码的值有:

值部分类型

0 三角形条带

1 三角形扇

2 外环

3 内环

4 第一环

5 环

MultiPatch

{

Double[4] Box //边界盒

Integer NumParts //部分的数目

Integer NumPoints //点的总数目

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

Integer[NumParts] PartsTypes //部分类型

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

Double[2] Z Range //Z的上下界

Double[NumPoints] Z Array //Z的值

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

Double[NumPoints] M Array //所有点的衡量

}

多边形Z的域在以下为更详细的描述:

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

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

NumPoints 所有环的点的总数目。

Parts NumParts长度的数列。为每条环存储它在点数列中的第一个点的索引。数列索引是从0开始的。

PartsType NumParts长度的数列,存储每一部分的类型。

Points NumPoints长度的数列。在多边形中的每一个环的点被尾到尾存储。环2的点跟在环1的点之后,如此下去。部分数列对每一环保持开始点的数列索引。在环间点之间没有界限。

ZRange 以Zmin,Zmax顺序存储的多PointZ的最小,最大值。

Z Array NumPoints长的衡量的数组,在多PointZ每部分的衡量被被尾到尾存储部分2的点跟在部分1的点之后,如此下去。部分数列对每一部分保持开始点的数列索引。在部分间点之间没有界限。

M Range 以Mmin,Mmax顺序存储的多PointZ的最小,最大值。

M Array NumPoints长的衡量的数组,在多PointZ每部分的衡量被被尾到尾存储部分2的点跟在部分1的点之后,如此下去。部分数列对每一部分保持开始点的数列索引。在部分间点之间没有界限。

SHP文件格式的研究与应用

第31卷第6期2006 年11月 测绘科学 Sc i ence o f Survey ing and M app i ng V o l 131N o 16 N ov 1 作者简介:刘锋(1980O ),男,中国测绘科学研究院摄影测量与遥感专业研究生,主要从事RS 和G IS 开发与应用研究。E O m a i:l li ufeng1980421@1261com 收稿日期:2006O 01O 05 基金项目:国土资源部土地资源遥感监测信息获取与处理软件开发(2003AA131010) S HP 文件格式的研究与应用 刘锋,张继贤,李海涛 (中国测绘科学研究院,北京 100039) 【摘 要】在全国第二次土地详查中,土地利用基础图件大部分是以S H P 文件格式存储的,因此在对土地利用基础图件进行更新的过程中,首要的问题是对SHP 文件的访问。本文以解决这一问题为目标,以S HP 文件中常用的多边形元素为例,对S H P 文件中二进制格式的元素表示方法加以阐述,并以程序实现的方式对资料进行了访问,最终在项目中得到了充分的应用。【关键词】土地利用基础图件;S H P 文件格式;多边形元素【中图分类号】TP311 【文献标识码】A 【文章编号】1009O 2307(2006)06O 0116O 02 1 引 言 S H P 文件格式是美国ESR I 公司生产的A rcV iew 和A rc G IS 软件的专用资料格式,它将地理空间资料以坐标点串的形式存储起来。A rcV iew 以其易用性和灵活性受到大量用户的喜爱,占有极高的市场占有率,广泛应用于国土资源、环境、地学等领域中。现在S H P 文件格式已经成为G IS 界的一种标准格式,几乎所有的G IS 软件都支持对它的转换甚至支持对其直接进行读写操作,大量的工程项目也往往把SHP 文件格式作为首选格式,因而每个从事研究G IS 人员都应该详细的了解和掌握SHP 文件格式。 2 SHP 文件格式说明 通常开发人员可以采用自带的开发软件包对资料的采集、入库、查询以及分析进行编程。但是他们开发的地理信息软件包所处理的文件格式通常与S HP 格式不兼容。但是如果清楚了S H P 文件的编码方式就可以利用常用的开发工具(如V C ,V B)等将自定义文件格式转换为S H P 文件格式。 不同于其它各种转换文件格式如M IF 、M I D 、E00等,S H P 文件格式采用编码效率较高的二进制格式。点的坐标采用双精度保存,保证了点的精确度。S HP 文件系统由三个文件组成:S H P 文件、S HX 文件和DBF 文件。S H P 文件中存储每个地物的空间资料,S HX 文件主要存储了S HP 文件中每个地物元素的起始位置和所占字节的大小,D BF 文件存储每个地物元素的属性资料。相对于向量图形中的每个元素,S H P 文件中都有相应的一个段落与之对应,所以其资料格式有一定的复杂性。 每个S H P 文件都包含一百个字节的文件头信息,文件头记录了文件中常用的基本信息,信息如表1所示: 表1 主文件头的描述 位置域值类型字节次序 Byte 0文件代码9994整型B i g Byte 4未使用0整型B i g Byte 8未使用0整型B i g B yte 12未使用0整型B i g B yte 16未使用0整型B i g B yte 20未使用0整型B i g B yte 24文件长度文件长度整型B i g B yte 28版本1000整型Littl e B yte 32形状类型形状类型整型Littl e B yte 36边界盒X 坐标最小值双精度Littl e B yte 44边界盒Y 坐标最小值双精度Littl e B yte 52边界盒X 坐标最大值双精度Littl e B yte 60边界盒Y 坐标最大值双精度Littl e B yte 68边界盒Z 坐标最小值双精度Littl e B yte 76边界盒Z 坐标最大值双精度Littl e B yte 84边界盒M 最小值双精度Littl e B yte 92 边界盒 M 最大值 双精度 Littl e 其中,0-3字节表示文件代码,固定值为9994,字节排列方式为倒序排列;3-19字节为空,固定值为0,字节排列方式为倒序排列;19-23字节为文件的大小,取值为文件的长度,字节排列方式为倒序排列(并以十六b it 存储);24-27字节为文件的版本,固定值为1000,字节排列方式为正序排列;28-31字节为地物的形状类型,取值如表二所示(x,y 为二维坐标,m 为度量坐标,z 为高程坐标),字节排列方式为正序排列: 表2 形状类型 值形状类型描述 0NULL Shap e 空地物类型 1Poi n t 单点类型(包含x ,y 坐标)3Pol yL i ne 线类型(每个点包括x ,y 坐标)5 Polygon 多边形类型(每个点包括x ,y 坐标)8M ulti Po i nt 多点类型(每个点包含x ,y 坐标)11Poi n t Z 单点类型(包含x ,y ,m,z 坐标)13Po l yL i neZ 线类型(每个点包含x ,y ,m,z 坐标)15Pol ygonZ 多边形类型(每个点包括x ,y ,m,z 坐标)18M u lti P oi n t Z 多点类型(每个点包括x ,y ,m,z 坐标) 21 Poi n M t 单点类型(包括x ,y ,m 坐标)23Pol yL i ne M 线类型(每个点包括x ,y ,m 坐标)25Polygon M 多边形类型(每个点包括x ,y ,m 坐标)28M ulti P o i nM t 多点对象(每个点包括x ,y ,m 坐标)

下载SHP矢量格式的等高线

如何下载SHP矢量格式的等高线 一、什么是等高线? 等高线指的是地形图上高程相等的相邻各点所连成的闭合曲线,把地面上海拔高度相同的点连成的闭合曲线,并垂直投影到一个水平面上,并按比例缩绘在图纸上,就得到等高线。等高线也可以看作是不同海拔高度的水平面与实际地面的交线,所以等高线是闭合曲线,在等高线上标注的数字为该等高线的海拔。 二、如何下载SHP矢量格式的等高线 首先,请确保水经注万能地图下载器软件版本为X3.0build1469以上,然后我们只需要以下几步即可下载到SHP矢量格式的等高线。 第一步:切换到在线高程数据地图 点击视图中的“高程”可以切换到高程数据视图,你可以在视图中看到即时渲染的半透明高程数据图,如下图所示。

第二步:按行政区下载高程 点击软件顶部的“下载”工具,会有多种确定下载范围的方式供你选择。 如果选择的“屏幕范围”,将会按当前屏幕显示的范围下载,另外也可以通过框选、绘制多边型或导入面状的DXF\SHP\KML\KMZ文件的方式来确定下载区域。 这里我们以下载“工布江达县”行政区域为例。 首先在软件的右上角点击“区划”并选择“西藏自治区”,然后选择“林芝地区”下的“工布江达县”,最后会在地图中显示行政区域并同时显示“下载”按钮,如下图所示。

点击“下载”按钮,在“新建任务”对话框中选择第15级(该级别对应的高程采样间距为10米左右),并确保存储格式为TIF、勾选裁剪功能和背景透明功能,如下图所示。 点击对话框中的“确认”按钮之后将会自动生成并导出TIF格式的高程数据。 第三步:提取SHP矢量等高线 TIF高程数据必须用 Global Mapper 或ArcGIS等专业软件中才能看到地形起伏的渲染

FMECAD转GISshp格式文档操作方法

MFE使用文档:CAD格式专程GIS的shp文件 一、CAD文件的查看和预览 目的:确定CAD文件每个图层包含的数据集,点point,线line,面polygon 数据,以及CAD文件的扩展属性。 1、用FME Universal Viewer 打开要转换的CAD文件 1,File——opendataset 打开CAD文件 2,选择输入数据的格式DWG和数据的路径 如下图: 3,如图 图中viewspace 中各个数据集是CAD的各图层名称

以axes图层为例关闭其他图层,只打开axes图层 可以发现axes图层只有Line 数据 注:所以在以后的转化中axes图层只有线line数据其他数据为空不需要转换 4,点击:按钮,可以选侧对象的要素 点击view中的一条线段要素,可以查看这条线段要素的扩展属性 其中extended_data_list{0-6}为选中要素的扩展属性,可以看到我们需要的扩展属性如:中路,10025,这些重要的扩展属性 其他图层的查看方法相同,有的图层没有扩展属性。 例如:JMD图层 可以查看,有三个要素集area line text 有数据 所以在以后的转换中药有三个要素的转换面,线,点的要素的转换。

二,应用FME Workbench自定义转换CAD数据 目的:按照要求把CAD的数据转换到GIS shp文件中,扩展属性读取在shp文件的表中1,打开FME Workbench 选择 2,选择读入数据的类型DWG和数据的路径,和目标文件的格式ESRI Shape 3,选择要读入的数据的图层 本文以读入axes图层为例,选择读入axes图层

shp文件详细格式

2.2.2Shape files数据说明 Shape files是ESRI提供的一种矢量数据格式,它没有拓扑信息,一个Shape files由一组文件组成,其中必要的基本文件包括坐标文件(.shp)、索引文件(.shx)和属性文件(.dbf)三个文件。 1.坐标文件的结构说明 坐标文件(.shp)用于记录空间坐标信息。它由头文件和实体信息两部分构成(如图2.1所示)。 1)坐标文件的文件头 坐标文件的文件头是一个长度固定(100 bytes)的记录段,一共有9个int型和7个double型数据,主要记录内容见表2.2。 …… …… 图2.1 坐标文件的结构

表2.2 shapefiles 头文件表 注:最后4个加星号特别标示的四个数据只有当这个Shapefile文件包含Z方向坐标或者具有Measure值时才有值,否则为0.0。所谓Measure值,是用于存储需要的附加数据,可以用来记录各种数据,例如权值、道路长度等信息。 (1)位序 细心的读者会注意到表2.2中的数值的位序有Little和big的区别,对于位序是big 的数据我们在读取时要小心。通常,数据的位序都是Little,但在有些情况下可能会是big,二者的区别在于它们位序的顺序相反。一个位序为big的数据,如果我们想得到它的真实数值,需要将它的位序转换成Little即可。转换原理非常简单,就是交换字节顺序,下面是作者实现的在两者间进行转换的程序,代码如下: //位序转换程序 unsigned long OnChange ByteOrder (int indata) { char ss[8]; char ee[8]; unsigned long val = unsigned long(indata); _ultoa( val, ss, 16 );//将十六进制的数(val)转到一个字符串(ss)中 int i; int length=strlen(ss); if(length!=8) { for(i=0;i<8-length;i++) ee[i]='0';

CASS输出SHP文件说明

CASS输出SHP文件说明 CASS输出SHP文件的定义主要在其安装目录下的AttriBute.def文件中。 文件作用:SHP文件格式定义文件。 例: *T_ReferPoint,1,A01,测量控制点 FeatureID,100,6,0,要素代码 ReferPointID,12,20,0,内部编号 PntName,0,24,0,点名 PntNo,0,16,0,点号 说明:AttriBute.def文件中有所有的表及字段名。 1、我们先看第一行,“*”用来标示新的表的开始,“T_ReferPoint”为表名。 2、第二位为数据类型,即几何类型,用一位数字来表示,数据类型对应表如下: 数据类型对应表: 12345 点线面注记复合 3、第三位对应于数据组织表中的层号。可以和数据分层表进行联系。 4、“测量控制点”,即为这个表的说明文字,用来描述此表。 5、我们再来看看第二行,第一位是本表的主键,一般用要素代码来标示,用该主键名来描述,上例中即为“FeatureID ”。 6、第二位为判断码,程序实现时用来判断要读取的编码类型,10:南方CASS代码,100:用户代码。我们做数据接口时,要采用用户标准,所以用100来填充此位。 7、第三位为字长,用户提供的标准中有采用的数据库的数据类型表,根据此表,我们可以确定每个字段对应的类型和字长。比如:“Numeric(10,3)”,我们这里要特别注意,根据程序角度来处理,字长应该为10,而不是10+3=13。 8、第四位为小数点位,即为要保留的小数点后位数,同理,我们可以根据数据类型表来确定。 9、最后一位是文字说明,也就是字段说明。 10、这里要注意时间类型,还有Blob类型,即影象数据,字长应该为2,小数点位应该为0。 11、从第三行开始,到下个表开始之前,每行的结构都相同。 12、第一位是除主键的其他字段名, 13、第二位是数据类型,具体对应表见: 14、后面几位就对应到第二行的后面几位,用同样的方式来处理。 数据类型表: 标示符具体类型注释标示符具体类型注释 0Varchar Char 字符串 30文本注记字体Char 1短整33文字符号大小2Numeric长整43X坐标 3Decimal Date 浮点 53Y坐标

shp文件格式

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表。主文件是一个直接存取,变量记录长度文件,其中每个记录描述一个有它自己的vertices列表的shape。在索引文件中,每个记录包含对应主文件记录离主文件头开始的偏移,dBASE表包含一feature一个记录的feature的特征。几何和属性间的一一对应关系是基于记录数目的。在dBASE文件中的属性记录必须和主文件中的记录是相同顺序的。 命名习惯所有文件名都符合8.3命名习惯。主文件,索引文件和dBASE文件有相同的前缀。前缀必须是由字符或数字(a-Z,0-9)开始,后跟0到7个字符(a-Z,0-9,_,)主文件的后缀是.shp,索引文件的后缀是.shx,dBASE表的后缀是.dbf。文件名中的所有字母在对文件名敏感的操作系统中都是小写的。 例子 主文件:counties.shp 索引文件:counties.shx dBASE表:ounties.dbf数字类型一个shape文件存储整数和双精度数,本文档的余数指以下类型: 整数:有符号32位整数(4字节) 双精度:有符号64位IEEE双精度浮点数(8字节)浮点数必须是数字的值。负无穷,正无穷和非数字(NaN)值在shape文件不被允许。然而shape文件支持'没有数据'的值这样的概念,但是目前只用于衡量。某些小于-1038被shape文件读取程序用来代表'没有数据'的值。 下面的第一节描述shape文件的总体结构和组织。第二节描述shape文件支持的每种shape 类型的记录内容。 主文件的组织 主文件(.shp)由固定长度的文件头和接着的变长度记录组成。每个变长度记录是由固定长度的记录头和接着的变长度记录内容组成。图1图解了主文件的结构。 图1 主文件的结构 文件头 记录头记录内容 记录头记录内容 记录头记录内容 记录头记录内容 ……

导入SHP文件时如何标注指定属性字段

导入SHP文件时如何标注指定属性字段 Shape文件格式由ESRI设计,一个ESRI(Environmental Systems Research Institute)的shape文件包括一个SHP主文件,一个SHX索引文件和一个DBF属性文件(dBASE表)组成,这三文件必须时在同一目录,缺一不可,名称也必须完全相同。 常用的KML和DXF文件可以点线面对象混合存储,但一个SHP文件中只能存储一种类型的数据,如点数据、线数据或面数据,不能混合存储。 SHP文件可以在ArcGIS中打开,打开点对象文件时,默认只显示点,但也可以通过相关配置进行标注。

SHP文件也可以在 Global Mapper 中直接打开,但不会将字段标注出来。 在万能地图下载器的“我的标注”中点击“导入”按钮,打开SHP文件之后会自动列出属性字段,可以选择导入后需要标注的字段。

数据成能导入之后,会按选择字段的值作为每个点对象的标注文本。 在所属目录中单击鼠标右键,可以批量修改所有对象的相关显示参数。

在属性对话框中,可以修改字体的大小和颜色等标注文本的显示参数,点击“图标”按钮,可以为点对象更换图标。 图标对话框中列出了丰富的图标可供选择,后续的版本将提供更多的行业图标和导入自定义图标等相关实用功能。

选择了新图标之后,所有图标都将会全部修改,如果只需要修改个别点对象的图标,则只需要在该对象上单击鼠标右键修改即可。

由于点对象太多,点与点之间会自动聚合并显示聚合的数目,点击“设置”可以关闭该功能。 关闭自动聚合功能之后,点对点之间会相互叠加,显示速度也有一定影响,因此一般情况下建议开启自动聚合功能。

ArcGIS常用文件格式

ArcGIS常用文件格式 遥感影像数据 如果是原始的卫星影像,有可能是磁带存储的二进制格式,即*.bin。 如果是从地面站买到的数据,多半是Geo-Tiff的格式,即带有坐标的Tiff图。 如果是已经格式调整完成,等待分类、分析的影像,一般为*.img格式 Shapefile数据 1. shp存储几何要素的空间信息,即XY坐标Shapefile文件用于描述几何体对象:点, 折线与多边形。 2.shx存储了有关.shp存储的索引信息,即shp中空间数据的存储方式,XY坐标的输入 点在哪里,有多少XY坐标对等信息 3.dbf存储地理数据的属性信息的dBase表 4.prj存储了文件的空间参考信息,如坐标系统等 5.shp.xml对元数据浏览后生成的xml元数据文件 6.sbn和sbx存储对shapefile的空间索引,加速空间数据的读取 7.Shapefile无法存储拓扑信息。在ESRI的文件格式中,ArcInfo 的Coverage、以及 Personal/File/Enterprise地理数据库,能够保存地理要素的拓扑信息。 8.shp文件或.dbf文件最大的体积不能够超过2 GB(或231位)。也就是说,一个 shapefile最多只能够存储七千万个点坐标。 Coverage数据

1.aat弧段属性表,记录弧段的起点和终点坐标信息 2.adf为coverage格式,包括lab.adf、arc.adf、sec.adf、pal.adf、cnt.adf、tic.adf、lnk.adf、 bnd.adf都记录了坐标信息,arx.adf、pax.adf为索引文件和pat.adf、aat.adf为属性文件 3.pat点属性表,记录lable点的坐标信息 4.tic控制点,用于配准地图的点 5.aux保存栅格文件自身不能保存的辅助信息,包括彩色地图信息,直方图或表格,坐 标系统,变换信息,投影信息 6.rrd保存影像金字塔信息索引,加速显示和漫游 7.dat属性信息 8.nit属性表定义文件 9.dir属性表路径管理文件,用于关联dat和nit Geodatabase数据

shp文件格式

shp文件格式 发信人: liuwenjin (bull), 信区: GIS 标题: shp文件格式 发信站: 两全其美BBS (Mon Aug 29 23:36:04 2005), 本站(https://www.sodocs.net/doc/768965310.html,) SHAPE 文件格式 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表。主文件是一个直接存取,变量记录长度文件,其中每个记录描述一个有它自己的vertices列表的shape。在索引文件中,每个记录包含对应主文件记录离主文件头开始的偏移,dBASE表包含一feature一个记录的feature的特征。几何和属性间的一一对应关系是基于记录数目的。在dBASE文件中的属性记录必须和主文件中的记录是相同顺 序的。

命名习惯所有文件名都符合8.3命名习惯。主文件,索引文件和dBASE文件有相同的前缀。前缀必须是由字符或数字(a-Z,0-9)开始,后跟0到7个字符(a-Z,0-9,_,)主文件的后缀是.shp,索引文件的后缀是.shx,dBASE表的后缀是.dbf。文件名中的所有字母在对文件名敏感的操作系统中都是小写的。 例子 主文件:counties.shp 索引文件:counties.shx dBASE表:ounties.dbf数字类型一个shape文件存储整数和双精度数,本文档的余数指以下类型: 整数:有符号32位整数(4字节) 双精度:有符号64位IEEE双精度浮点数(8字节)浮点数必须是数字的值。负无穷,正无穷和非数字(NaN)值在shape 文件不被允许。然而shape文件支持‘没有数据‘的值这样的概念,但是目前只用于衡量。某些小于-1038被shape文件读取程序用来代表‘没有数据‘的值。 下面的第一节描述shape文件的总体结构和组织。第二节描述shape文件支持的每种shape类型的记录内容。主文件的组织 主文件(.shp)由固定长度的文件头和接着的变长度记录组成。每个变长度记录是由固定长度的记录头和接着的变长度记录内容组成。图1图解了主文件的结构。

shp文件讲解

shp文件格式内部结构 ESRI shp文件格式内部结构(2008-09-01 15:18:24)标签:杂谈 Shape文件是ArcGIS的基础文件类型,存储了非拓扑几何和属性信息。Shape文件支持点、线、区域的几何特征,由于不需要处理拓扑数据结构文件头,在编辑等方面具有更快的处理速度。本文通过对ESR I公司发布的 原版资料ESRI Shapefile Technical Descrip tion的翻译解读,剖析Shape文件的结构,利用VB写出直接 生成Shape文件的代码。 2 Shape文件结构 2. 1 Shape文件的文件构成Shape文件由3 个文件构成: 主文件、索引文件、数据文件。 其中主文件的后缀必须是. shp;索引文件的后缀必须是. shx;数据文件的后缀必须是. dbf,这3个 文件共同组成Shape文件。各文件中存储的数据相互联系又各有区别。主文件中是Shape的位置信 息;索引文件是对主文件的索引,指出主文件中记录在文件中的位置信息;数据文件中包括Shape的具 体位置和属性信息。 2. 2 . shp文件的结构 . shp文件由文件头和文件记录构成(图1) ,其中文件大部分结构见表1。 文件头 记录头记录内容 记录头记录内容 记录头记录内容 记录头记录内容 ··· ··· 记录头记录内容 图1 . shp文件的结构 其中Shape类型是ArcGIS定义的图形类型,具体可以参考Shapefile Technical Descrip tion。 每个记录由记录头、记录内容两部分组成。记录头部分由两部分组成: 0~3字节是长整型的记录 数, 4~7字节是记录内容的长度。文件头中的文件长度与记录头中的记录长度均以字( 2 字节)为单 位。记录内容对不同的Shape类型定义不一样,但原理是相同的。因篇幅所限,这里以记录点(point) 类型为例进行说明。点( point)类型的每个记录的记录内容为: 0~3字节长整型的Shape类型、4~11 字节双精度的X坐标、12~19字节双精度的Y坐标。所以记录头中的记录长度就是2 + 4 + 4 = 10个 字长,文件头中文件长度就是50 (文件头长) +总记录数3 14。

shp文件格式说明

shp文件格式说明 SHAPE文件格式 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 表。主文件是一个直接存取,变量记录长度文 件,其中每个记录描述一个有它自己的vertices列表的shape。在索引文件中,每个记录包含对应主文件记录离主 文件头开始的偏移,dBASE表包含一feature一个记录的feature的特征。几何和属性间的一一对应关系是基于记录 数目的。在dBASE文件中的属性记录必须和主文件中的记录是相同顺序的。 命名习惯所有文件名都符合 8.3命名习惯。主文件,索引文件和dBASE文件有相同的前缀。前缀必须是由字符或数字 (a-Z,0-9)开始,后跟0到7个字符(a-Z,0-9,_,)主文件的后缀是.shp,索引文件的后缀是.shx,dBASE表的后 缀是.dbf。文件名中的所有字母在对文件名敏感的操作系统中都是小写的。

例子 主文件: counties.shpxx文件: counties.shx dBASE表: ounties.dbf数字类型一个shape文件存储整数和 双精度数,本文档的余数指以下类型: 整数: 有符号32位整数(4字节) 双精度: 有符号64位IEEE双精度浮点数(8字节)浮点数必须是数字的值。负无穷,正无穷和非数字(NaN)值在 shape文件不被允许。然而shape文件支持'没有数据'的值这样的概念,但是目前只用于衡量。某些小于-1038被 shape文件读取程序用来代表'没有数据'的值。 下面的第一节描述shape文件的总体结构和组织。第二节描述shape文件支持的每种shape类型的记录内容。 主文件的组织 主文件(.shp)由固定长度的文件头和接着的变长度记录组成。每个变长度记录是由固定长度的记录头和接着的变 长度记录内容组成。图1图解了主文件的结构。 图1主文件的结构 文件头

shp文件格式说明

shp文件格式说明 SHAPE 文件格式 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表。主文件是一个直接存取,变量记录长度文 件,其中每个记录描述一个有它自己的vertices列表的shape。在索引文件中,每个记录包含对应主文件记录离主 文件头开始的偏移,dBASE表包含一feature一个记录的feature的特征。几何和属性间的一一对应关系是基于记录 数目的。在dBASE文件中的属性记录必须和主文件中的记录是相同顺序的。 命名习惯所有文件名都符合8.3命名习惯。主文件,索引文件和dBASE文件有相同的前缀。前缀必须是由字符或数字 (a-Z,0-9)开始,后跟0到7个字符(a-Z,0-9,_,)主文件的后缀是.shp,索引文件的后缀是.shx,dBASE表的后 缀是.dbf。文件名中的所有字母在对文件名敏感的操作系统中都是小写的。 例子 主文件:counties.shp 索引文件:counties.shx dBASE表: ounties.dbf数字类型一个shape文件存储整数和 双精度数,本文档的余数指以下类型: 整数:有符号32位整数(4字节) 双精度:有符号64位IEEE双精度浮点数(8字节)浮点数必须是数字的值。负无穷,正无穷和非数字(NaN)值在 shape文件不被允许。然而shape文件支持'没有数据'的值这样的概念,但是目前只用于衡量。某些小于-1038被

ArcGIS中几种数据格式的意义

ArcGIS中几种数据格式的意义 ArcInfo常用以下格式的数据:shp、Coverage、、Raster CAD和Geodatabase。各种数据的组织形式不一样,其中shp、Coverage、Raster、CAD为文件类型,Geodatabase为空间数据库。Workstaion 常用Coverage数据格式。现在ESRI公司推荐使用Geodatabase,一个真正实现对象存储的空间数据库,Geodatabase分为PersonalGeodatabase和企业Geodatabase,前者使用Access数据库,后者支持MSSQLServer、DB2、InforMix、Oracle等企业数据库系统,企业Geodatabase必须使用ESRI公司的SDE访问。 Shapefile:一种基于文件方式存储GIS数据的文件格式。至少由shp、dbf、shx三个文件作成,分别存储空间,属性和前两者的关系,是GIS中比较通用的一种数据格式。此外,还有prj、shp.xml、sbn 和sbx四种文件: prj存储了坐标系统, shp.xml是对shapefile进行元数据浏览后生成的xml元数据文件,sbn和sbx存储的是shapefile的空间索引,它能加速空间数据的读取,这两个文件是在对数据进行操作、浏览或连接后才产生的,也可以通ArcToolbox>DataManagementTools>Indexes>AddspatialIndex工具生成。注意:每个文件的大小有2GB的限制。 Coverage:一种拓扑数据结构,一般的GIS原理书中都有它的原理论述。数据结构复杂,属性缺省存储在Info表中。目前ArcGIS中仍然有一些分析操作只能基于这种数据格式进行操作。

shp文件组织结构

shp文件格式(转载)05.08.31 from joey来源以文找文

。主文件头的数据描述域(Shape 类型,边界盒等) 与文件管理相关的: 。文件和记录长度 。记录偏移等 整数和双精度整数在文件头中组成数据描述域,在主文件的记录内容是小ndian(PC或Intel)字节顺序。组成文件的其余部分和文件管理的整数和双精度浮点数是大endian(Sun或Motorola)字节顺序。 主文件头 主文件头100字节长。表1显示带有字节位置,值,类型和字节顺序的文件头中的域。 在此表中,位置是相对于文件的开始。 表 1 主文件头的描述 位置域值类型字节顺序 0字节文件代码 9994 整数大 4字节未被使用 0 整数大 8字节未被使用 0 整数大 12字节未被使用 0 整数大 16字节未被使用 0 整数大 20字节未被使用 0 整数大 24字节文件长度文件长度整数大 28字节版本 1000 整数小 32字节 Shape类型 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 21 点M 23 多线M 25 多边形M 28 多点M 31 多斑块

shp文件结构

* Unused, with value 0.0, if not Measured or Z type Big表示大尾(big endian)型字节顺序,即是高低位字节是反序的,主要适用于Sun? or Motorola?平台,而Little表示小尾(little endian)型字节顺序,高低位字节顺序不变,主要使用在PC or Intel?平台。在读取的字节为Big时,需要进行字节顺序交换,才能得出正确的值。一个把Big顺序转换为Little顺序的函数可以如下: int Big2LittleEndian(int num) { int reverse; //返回结果 char bit0, bit1, bit2, bit3; bit0 = (num & 0x000000ff);

bit1 = (num & 0x0000ff00) >> 8; bit2 = (num & 0x00ff0000) >> 16; bit3 = (num & 0xff000000) >> 24; reverse = (bit0 << 24) | (bit1 << 16) | (bit2 << 8) | (bit3); return reverse; } 文件头中第32-35位字节为一个整型,其值反映了shapefile的图形对象类型,具体值对应含义如下: 第36-67个字节包含了图幅的范围大小。 每条记录由记录头和实体内容组成,记录头格式固定,具体组成如下所示:

记录头包含8个字节,0-3表示记录的顺序号,4-7表示记录实体自身的大小。 实体的内容根据对象类型不同而变化,需根据具体情况处理。 .shx文件由文件头和记录组成,文件头与前述.shp文件一致,但需注意File Length字段的值不一样。而每条记录由2个整型组成,具体内容如下: 其中,offset表示该条记录在.shp文件中的字节位置,而Content Length 说明了记录的大小。 标准的DBF文件,是由头文件和实体信息两部分构成(如图1所示)。 …… …… 图1 DBF文件的结构 文件头部分的长度是不定长的,它主要对DBF文件作了一些总体说明(表),其中最主要的是对这个DBF文件的记录项的信息进行了详细地描述,比如对每个记录项的名称、数据类型、长度等信息都有具体的说明。

ShapeFile格式说明

ShapeFile格式说明 1、Shape技术描述 一个完整的ESRI的shape文件包括一个主文件,一个索引文件,和一个dBASE表文件。主文件是一个直接存取,变记录长度文件,其中每个记录描述一个由其顶点列表组成的shape。在索引文件中,每条记录是在主文件中对应记录距离主文件头部的偏移量。dBASE中记录的是对应主文件中记录的属性记录,每条主文件记录对应dBASE中的一条属性记录。几何对象和属性间的一一对应关系是基于记录编号的。在dBASE文件中的属性记录必须和主文件中的记录保持相同的顺序。 1.1命名习惯 所有文件名都遵循8.3命名习惯。主文件,索引文件和dBASE文件有相同的前缀。前缀必须是由字符或数字(a-Z,0-9)开始,后跟0到7个字符(a-Z,0-9,_,)主文件的后缀是.shp,索引文件的后缀是.shx,dBASE表的后缀是.dbf。在对文件名敏感的操作系统中,文件名中的所有字母都是小写的。 例子: 主文件:counties.shp 索引文件:counties.shx dBASE表:ounties.dbf 1.2数字类型 Shape格式文件存储整数型和双精度型数据,本文档的余下部分将涉及到以下类型: 整数:有符号32位整数(4字节) 双精度:有符号64位IEEE双精度浮点数(8字节) 浮点数必须是数字值。负无穷,正无穷和无效数字(NaN)在shape文件中是不合法的。然而,shape文件支持“没有数据”这样的概念,但是目前只用于带有measure值的情况。所谓Measure值,是用于存储需要的附加数据,可以用来记录各种数据,例如权值、道路长度等信息。某些小于-1038被shape文件读取程序用来表示为“没有数据”的值。 下面的第一节描述shape文件的总体结构和组织。第二节描述shape文件支持的每种shape 类型的记录内容。 2、主文件的组织 主文件(.shp)由固定长度的文件头和后面变长的记录组成。每个变长记录是由固定长度的记录头和紧接着的变长记录内容组成。图1是主文件的结构。 图1 主文件的结构 文件头

Shape文件及其编辑

第五章Shape文件及其编辑 Shapefile是ArcView存贮空间数据的内部缺省文件格式。利用这一简单的、非拓仆型的格式,ArcView实现了地理要素属性信息与几何位置的统一贮存,这正是目前大多数GIS 专业软件流行的设计方法。 第一节 Shape格式及其优点 ArcView的Shape文件格式可以通过其自身的实用工具创建,也可以经由ARC/INFO coverage或其它的桌面地图格式转换得到。转换既可以在其它程序中进行(比如:在ARC/INFO中,使用ARCshpe及shpeARC命令便可以实现coverage与shpe文件之间的双向转换),也可以在ArcView界面下来做(先将数据源调入,然后再转换模块将其转换成Shape格式,参见“空间分析”部分)。以上特点充分反映了ArcView对数据格式的灵活性和高度兼容性。 Shape文件实际上只是ArcView进行GIS数据管理(定义感兴趣的地理要素的几何关系及要素属性)的5种核心文件类型之一。这5种文件作为项目工作组的内容被贮存于同一个工作目录中,相互以不同的扩展名相区别: .shp——贮存地理要素的几何关系的文件。. .shx——贮存图形要素的几何索引的文件。 .dbf——贮存要素属性信息的dBASE文件。当Shape文件作为一个主题被加入到视图之后,该.dbf文件将会作为一个要素表格来显示。 .sbn和sbx——贮存地理要素的空间位置索引的文件。除非您执行过类似于选择“主题之主题”、空间连接等操作,或者您对一个主题(属性表)的Shape字段创建过一个索引,否则这两种格式的文件将不会存在。另外得注意:如果您在进行各种操作过程中,中途没有对源数据目录进行过类似于“保存项目”之类的“写操作”,那么当您最终关闭ArcView 或当前Project时,程序将会自动剔除这两种邻时文件而使其不能在磁盘中得以永久保存,如果出现这样情况,那么您就无法在当前工作目录下找到它们。 .ain和aih文件——贮存地理要素主题属性表或其它表格的活动字段的属性索引信息的文件。除非您执行过“表格链接”(Link)操作,否则这两个文件是不会存在的。如果您中途没有对源数据目录进行过写操作(保存项目),那么这两个文件最终也不会自动在当前工作目录中得以保存。 一、ArcView用.Shp作为默认文件扩展名的优点 1、基于其非拓仆性,可以使文件迅速在视图中显示出来。

SHP格式文档(中文翻译)

ESRI公司shapefile技术说明 这份文档定义了shapefile (.shp)的空间数据格式,并且说明了为什么shapefiles 很重要。它列出了在环境系统研究所股份有限公司可用的工具(ESRI),该软件可以直接生成shapefiles或者将资料从其他格式转换成shapefiles。这份文档还为那些想编写自己独有的数据翻译器的组织提供了所有必需的技术资料,使他们可以编写电脑程序来生成shapefiles而不必使用软件ESRI。 什么是Shapefiles? Shapefile文件用来存储一个数据集中有关空间要素的无拓扑的几何和属性信息。一个特征的几何布局是以一套矢量坐集的形式来存储的。 正因为Shapefile没有处理拓扑数据结构的开销,因此Shapefile比其他的数据结构具有更快的绘图速度和更强的编辑能力,Shapefiles能处理特征重叠或非连续的情况。它们通常需要更少的磁盘空间,也更容易阅读和书写。 Shapefiles支持点状、线状和面状要素。面状要素是封闭的环路,即双重数字化多边形。属性数据被存在一个dBASE格式的文件中。每一个属性记录都与相关的几何形状有一个一对一的关系。 如何生成Shapefiles Shapefiles可以通过以下四种常用的方法来生成: 导出成Shapefile格式—用ARC/INFO,PC ARC/INFO,SDE,ArcView GIS或者BusinessMAP软件从其他数据源导出成为Shapefile数据。 数字化—shapefiles可以通过使用ArcView GIS特征生成工具,把形状数字化而直接得到。 编程设计—利用Avenue (ArcView GIS)、MapObjects、ARC宏语言(AML )(ARC/INFO)或者简易宏语言(SML )(PC ARC/INFO)等软件,你就可以在你的程序中生成shapefiles。 通过创建程序直接写入Shapefile定义中。SDE、ARC/INFO、PC ARC/INFO、Data Automation Kit (DAK )和ArcCAD软件提供从形状到内容的数据翻译器。ARC/INFO 还可以提供一种从内容到形状的翻译器。为了能与其他数据格式相互转化,shapefiles的规范也被刊载于本文档中。其它的数据流,例如那些来自全球定位系统(GPS )接收器的数据流,也可以储存成shapefiles或者X、Y事件表。

shp文件格式

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 表。主文件是一个直接存取,变量记录长度文件,其中每个记录描述一个有它自己的vertices 列表的shape 。在索引文件中,每个记录包含对应主文件记录离主文件头开始的偏移,dBASE 表包含一feature 一个记录的feature 的特征。几何和属性间的一一对应关系是基于记录数目的。在dBASE 文件中的属性记录必须和主文件中的记录是相同顺序的。 命名习惯所有文件名都符合8.3 命名习惯。主文件,索引文件和dBASE 文件有相同的前缀。前缀必须是由字符或数字(a-Z,0-9 )开始,后跟0到7个字符(a-Z,0-9 , _,)主文件的后缀是.shp,索引文件的后缀是.shx,dBASE表的后缀是.dbf。文件名中的所有字母在对文件名敏感的操作系统中都是小写的。 例子 主文件:counties.shp 索引文件:counties.shx dBASE 表:ounties.dbf 数字类型一个 shape 文件存储整数和双精度数,本文档的余数指以下类型: 整数:有符号32 位整数( 4 字节) 双精度:有符号64 位IEEE 双精度浮点数(8 字节)浮点数必须是数字的值。负无穷,正无穷和非数字(NaN )值在shape 文件不被允许。然而shape 文件支持'没有数据'的值这样的概念,但是目前只用于衡量。某些小于-1038 被shape 文件读取程序用来代表'没有数据'的值。 下面的第一节描述shape 文件的总体结构和组织。第二节描述shape 文件支持的每种shape 类型的记录内容。 主文件的组织 主文件(.shp )由固定长度的文件头和接着的变长度记录组成。每个变长度记录是由固定长 度的记录头和接着的变长度记录内容组成。图1图解了主文件的结构。 图 1 主文件的结构 文件头 记录头记录内容 记录头记录内容 记录头记录内容 记录头记录内容 记录头记录内容 Shape 文件中所有的内容可以被分为二类:

相关主题