ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:23.27KB ,
资源ID:12598086      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12598086.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(教你读取shapefile格式文件.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

教你读取shapefile格式文件.docx

1、教你读取shapefile格式文件教你读取shapefile格式文件现在网上还没有在手机上用java读取shapefile的源代码,在无可奈何的情况下,我决定自己馔写代码.先将shapefile个格式公布如下:SHAPE 文件格式 SDE,ARC/INFO,PC ARC/INFO,DataAutomation Kit(DAK)和ArcCAD软件提供了shape 到coverage的数据转换器,ARC/INFO同样提供了coverage到shape的转换器。为了和其他数据格式交换,shape文件的格式在本报告中被出版。其他数据流,比如来自全球定位系统(GPS)接收机的数据能同样被存为shape文

2、件或X,Y事件表。 Shape文件技术描述计算机程序能通过使用本节的技术描述来产生,读,写shape文件。 一个ESRI的shape文件包括一个主文件,一个索引文件,和一个dBASE表。主文件是一个直接存取,变量记录长度文件,其中每个记录描述一个有它自己的vertices列表的shape。在索引文件中,每个记录包含对应主文件记录离主文件头开始的偏移,dBASE表包含一feature一个记录的feature的特征。几何和属性间的一一对应关系是基于记录数目的。在dBASE文件中的属性记录必须和主文件中的记录是相同顺序的。 命名习惯所有文件名都符合8.3命名习惯。主文件,索引文件和dBASE文件有相

3、同的前缀。前缀必须是由字符或数字(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文

4、件支持没有数据的值这样的概念,但是目前只用于衡量。某些小于1038被shape文件读取程序用来代表没有数据的值。 下面的第一节描述shape文件的总体结构和组织。第二节描述shape文件支持的每种shape类型的记录内容。 主文件的组织 主文件(.shp)由固定长度的文件头和接着的变长度记录组成。每个变长度记录是由固定长度的记录头和接着的变长度记录内容组成。图1图解了主文件的结构。 图 1 主文件的结构 文件头 记录头记录内容 记录头记录内容 记录头记录内容 记录头记录内容 记录头记录内容 Shape文件中所有的内容可以被分为二类: 与数据相关的: 。主文件记录内容 。主文件头的数据描述域(S

5、hape 类型,边界盒等) 与文件管理相关的: 。文件和记录长度 。记录偏移等 整数和双精度整数在文件头中组成数据描述域,在主文件的记录内容是小ndian(PC或Intel)字节顺序。组成文件的其余部分和文件管理的整数和双精度浮点数是大endian(Sun或Motorola)字节顺序。 主文件头 主文件头100字节长。表1显示带有字节位置,值,类型和字节顺序的文件头中的域。 在此表中,位置是相对于文件的开始。 表 1 主文件头的描述 位置域值 类型 字节顺序 0字节文件代码9994整数大 4字节未被使用 0整数大 8字节未被使用 0整数大 12字节 未被使用 0整数大 16字节 未被使用 0整

6、数大 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文件中的所有非空s

7、hape被需要是同种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,

8、Z)长方形包含了所有的shape。若shape文件是空的(没有记录),min,Ymin,Xmax,Ymax的值是未被定义的。Mmin和Mmax能包含shape文件用来衡量不包含衡量的shape类型的没有数据的值(参见2页的数字类型),记录头 每个记录的头存储了记录的数目和记录内容的长度。记录头有一个固定长度8字节。表 2显示文件记录头中域的字节位置,值,类型和字节顺序。在表中,位置是相对于记录的开始的。 表 2 主文件记录头文件的描述 位置域值 类型 字节顺序 0字节记录数目记录数目整数大 4字节内容长度内容长度整数大 记录数目从1开始。 一个记录的内容长度是按16位字衡量的记录内容长度。每个

9、记录因此为文件的总长度贡献(4内容长度)个16位字,正如文件头是24字节一样。 主文件记录内容 Shape文件记录内容包含一个shape类型和接着的该shape的几何数据。记录内容的长度依赖于在一个shape中部分和vertices的数目。对每种shape类型,我们首先描述该shape然后是它在磁盘上的存储镜像。在表3到16,位置是相对于记录内容的开始。 空shape shape类型为0指代一种不带几何数据的空shape,每种要素类型(点,线,多边形等)都支持空,在同一个shape文件中有点和空的点是有效的。常常空shape是放东西的地方;在shape文件产生时被使用和在产生后更被广泛地使用。

10、 表 3 空shape记录内容 位置域 值类型数目 字节顺序 0字节 shape类型0 整数1小 在X,Y位置的Shape类型 点 一个点包括一对以X,Y顺序排列的双精度的坐标 Point DoubleX/X坐标 DoubleY/Y坐标 表4 点记录内容 位置域 值类型数目 字节顺序 0字节 shape类型1 整数1小 4字节XX双精度 1小 12字节 YY双精度 1小 多点一个多点代表一个点的集合: MultiPoint Double4 Box/边界盒 IntegerNumPoints/点的数目 PointNumPoints Points/在集合中的点 边界盒以Xmin,Ymin,Xmax,

11、Ymax存储。 表5多点记录内容 位置域 值 类型数目 字节顺序 0字节 shape类型8 整数1小 4字节 Box Box 双精度 4小 36字节NumPointsNumPoints 整数1 小 40字节 PointsPoints 点NumPoints小 PolyLine一条PolyLine是指一条包含一个或多个部分的有序的vertices的集合。一个部分是指二个或多个点彼此连接的顺序。部分间彼此相连或不连。部分间彼此可能相交或不相交。 因为该定义没有禁止有确定坐标的连续点,shape文件的读程序必须掌握这样的情况。在另外,退化(degenerate)和可能导致零长度的结果是不被允许的。 P

12、olyLine Double4 Box /边界盒 IntegerNumParts/部分的数目 IntegerNumPoints /点的总数目 IntegerNumParts Parts/在部分中第一个点的索引 PointNumPoints Points /所有部分的点 PolyLine的域在以下为更详细的描述: Box 被存储的PolyLine的边界盒,以Xmin,Ymin,Xmax,Ymax的顺序存储。 NumParts在PolyLine中部分的数目。 NumPoints 所有部分的点的总数目。 PartsNumParts长度的数列。为每条PolyLine存储它在点数列中的第一个点的索引。数

13、列索引是从0开始的。 Points NumPoints长度的数列。在PolyLine中的每一部分的点被尾到尾存储。部分2的点跟在部分1的点之后,如此下去。部分数列对每一部分保持开始点的数列索引。 在部分间点之间没有界限。 表6PolyLine记录内容 位置域 值 类型数目 字节顺序 0字节 shape类型3 整数1小 4字节 Box Box 双精度 4小 36字节NumParts NumParts整数1 小 40字节NumPointsNumPoints 整数1 小 44字节PartsParts 整数NumParts小 X字节 PointsPoints 点 NumPoints小 注意:X=44+

14、4* NumParts多边形一个多边形包含一个或多个环。一个环是四或多个点彼此相连组成的一个闭合的彼此不相交的环。一个多边形可能包括多个外环,一个环的vertices的顺序和方向指示环的哪一边是多边形的内部。在多边形中的洞的环的vertices是逆时针方向的。一个环组成的多边形总是顺时针方向的。一个多边形的环是被做为它的一部分的。因为该定义没有禁止有确定坐标的连续的点,shape文件读程序必须解决这种情况。在另外,退化(degenerate)和可能导致零长度的结果是不被允许的。多边形的结构被定义为PolyLine结构,正如下文: Polygon Double4Box/边界盒 IntegerNu

15、mParts/部分的数目 IntegerNumPoints /点的总数目 IntegerNumParts Parts/在部分中第一个点的索引 PointNumPoints Points /所有部分的点 多边形的域在以下为更详细的描述: Box 被存储的多边形的边界盒,以Xmin,Ymin,Xmax,Ymax的顺序存储。 NumParts在多边形中环的数目。 NumPoints 所有环的点的总数目。 PartsNumParts长度的数列。为每条环存储它在点数列中的第一个点的索引。数列索引是从0开始的。 Points NumPoints长度的数列。在多边形中的每一个环的点被尾到尾存储。环2的点跟在

16、环1的点之后,如此下去。部分数列对每一环保持开始点的数列索引。在环间点之间没有界限。 图 2中的例子图演示了多边形的表现。该图中的多边形有一个洞,总共是8个vertices。 关于多边形shape有以下重要注意事项: 环是闭合的(第一个和最后一个vetex必须是一样的)在点数列中环的顺序是不重要的。 存储在shape文件中的多边形必须是clean,一个clean的多边形是指这样的一个多边形: 1 没有自交。这意味着属于一个环的一段可能不与另一个环的一段相交。一个多边形 的环可能在vetices处彼此相交,但不是在沿段处。重合的段被认为是相交的。 2 在定义多边形的线的正确一边有多边形的内部。一

17、个观察者以vertex顺序沿环走时,右边的邻居是多边形的内部。一个独环的多边形的vertices因此都是顺时针的。在这些多边形中的洞有一个逆时针的方向。当定义在多边形中的洞同样是顺时针时,发生Dirty多边形错误。这会导致内部的重叠。 图 2 一个多边形的实例 在此例中,NumParts等于2,NumPoints等于10。注意洞多边形的点的顺序是逆序的。 05 部 分 : 05 0 1 2 3 4 5 6 7 8 9 点 : v1v2v3v4v1v5v8v7v6v5 表 7 多边形记录内容 位置域 值 类型数目 字节顺序 0字节 shape类型5 整数1小 4字节 Box Box 双精度 4小

18、 36字节NumParts NumParts整数1 小 40字节NumPointsNumPoints 整数1 小 44字节PartsParts 整数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记录内容 位置域 值

19、类型数目 字节顺序 0字节 shape类型 21整数1小 4字节XX双精度 1小 12字节 YY双精度 1小 20字节 MM 双精度 1小 多PointM 一个多PointM代表一个PointM的集合: MultiPoint Double4 Box/边界盒 IntegerNumPoints/点的数目 PointNumPoints Points/在集合中的点 Double2 M Range/衡量M的上下界 DoubleNumPoints M Array /衡量 多PointM的域在以下为更详细的描述: Box 被存储的多PointM的边界盒,以Xmin,Ymin,Xmax,Ymax的顺序存储。

20、NumPoints 点的总数目。 Points NumPoints长的点的数列。 M Range 以Mmin,Mmax顺序存储的多PointM的最小,最大值。 M Array NumPoints长的衡量的数组。 表9多PointM记录内容 位置域 值 类型数目 字节顺序 0字节 shape类型28 整数 1 小 4字节 Box Box 双精度4 小 36字节NumPointsNumPoints 整数1 小 40字节 PointsPoints 点NumPoints小 X*字节 MminMmin 双精度1 小 X+8*字节 Mmax Mmax 双精度1 小 X+16*字节Marry Marry双精度 NumPoints小 注意:X 40(16* NumPoints)*可选的 多LineM 一条shape文件的多LineM包含一个或多个部分。指一条包含一个或多个部分的有序的vertices的集合。一个部分是指二个或多个点彼此连接的顺序。部分间彼此相连或不连。部分间彼此可能相交或不相交。 PolyLineM Double4 Box /边界盒 IntegerNumParts/部分的数目 IntegerNumPoints /点的总数

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

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