4 shapefile数据结构
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
double XMax; //文件中所有X坐标的最大值
double YMax; //文件中所有Y坐标的最大值
有什么意义?
double ZMin; //文件中所有Z坐标(如果有的话)的最小值 double ZMax; //文件中所有Z坐标(如果有的话)的最大值 double MMin; //文件中所有M坐标(如果有的话)的最小值 double MMax; //文件中所有M坐标(如果有的话)的最大值
wenku.baidu.com
NumPoints是一个多义线中所有折点的数量,并不是某一个分段 对应的折点数量;
多义线记录格式的注意事项(2)
由于分段数和折点数不固定,所以Parts[NumParts]和
Points[NumPoints]都相当于动态数组;
Parts[NumParts]是多义线类型中比较特殊的一部分,它对应存储 了每一个分段折线中第一个折点在Points数组中的索引号(索引号 从0开始),从这个索引号开始,在Points数组中依次读取该折线段 的每一个折点,并依次相连就可以得到这个折线段的空间形态;
Shapefile数据结构
武汉理工大学 资源与环境工程学院 张晓盼 zxp.whut@163.com
Shapefile文件概述
Shapefile是ESRI提供的一种矢量数据格式,它没有拓扑信息,只
存储矢量要素的空间信息和属性信息,shapefile可以作为图层数 据导入ArcGIS,但一个shapefile图层实际上由一组文件组成,典
每个折线段的最后一个折点的索引号是什么?
多边形坐标记录的存储格式
根据前述课程分析,多边形记录格式与多义线相同;
但是必须满足如下条件才是一个正确的多边形:
在多边形的数据记录中,每一个分段折线的起点(第一个折 点)和终点(最后一个折点)是重合的,称为“尾到尾存 储”,例如一个三角形的边界存储4个点;
记录头信息由记录号(>0的整数)和记录长度(整数,
记录16位字为单位的该段记录总长度,不包含记录头信 息)组成
几何体空间信息记录的存储格式
是文件中真正的空间信息部
分;
每一个几何体信息分为两部 分:
开始的部分为int ShapeType 之后是空间坐标记录 Shapefile中记录的几何体包
小,读取速度快;采用文件组的方式有利于数据分类管理,且进
一步提高了数据存储管理的效率。
缺点:没有存储拓扑信息,从GIS空间分析的角度来看是一种不完 整的数据存储结构,文件式的数据管理模式难以对大数据量进行 有效管理,而GIS应用往往是由海量数据作为支撑的,因此使用大 型数据库进行地理信息存储是目前的主流方式,而shapefile文件 主要用来作为演示产品存储小规模GIS数据。
空间信息记录的基本结构
.shp文件的空间信息记录这部分内容没有固定的长度,其长度由存 储的几何体数量和几何体具体特征决定;
总体上是由同类型的几何体空间定位坐标记录依次排列连接而成;
虽然长度不固定,但是空间信息记录仍然遵循统一的格式,每一个
单独的几何体记录都由记录头信息和记录信息两部分组成。
几何体坐标信息的记录头格式
多边形中的边界是有方向的,从起点依次走到终点,其中右手
边的区域属于多边形内部区域;
边界折线不能在线段内部产生交叉。
Shapefile数据结构分析
特点:基于二进制文件格式的数据存储机制,多文件存储 优点:文件存储方式与具体操作系统平台无关,有利于发布和跨 平台应用;文件格式属于一种轻量级数据存储方式,文件容量
“文件的存储结构”指的是文件中存储的字节信息应如何划分, 以及各个部分的数据类型和意义。
.shp文件的总体结构
文件头
存储与文件基本特征相对应的数据(元数据)
信息记录
几何体空间坐标记录,相当于文件的正文
.shp文件的文件头结构
.shp文件的文件头可以进一步分解为更细致的结构
任何.shp文件的文件头都具有相同的长度和结构 总体上看,文件头包含基本识别信息和空间信息概况两部分
.shp文件头中的基本识别信息
int FileCode; // 文件代码= 9994 int Unused; // 预留 int Unused; // 预留
有什么作用?
int Unused; // 预留
int Unused; // 预留 int Unused; // 预留 int FileLength; // 整个文件的长度(包括文件头,以16字节为单位) int FileVersion; // 文件版本= 1000 上述内容在文件从按照上述顺序依次排列
型的文件组结构如下所示:
索引文件 坐标文件 属性文件 投影文件
本课程主要 讨论对象
文件的基本特征
文件可以看做是一段连续的存储空间,只不过个空间是存储在磁
盘之类的外部介质中,而不是在内存中;
文件也是一种线性存储结构,其中的内容由低位地址空间向高位 地址空间依次排列,可以看做是长长的一串字节;
不同的文件依照其特有的格式规范将其存储的一长串字节分割为 有序的不同部分使得文件能够保存特定的信息;
括:点、多义线、多边形
点的空间坐标记录存储格式
点是最简单的几何体,其存储结构相当于按照
成员变量的定义顺序存储了下列结构体: struct ShpPoint { double X; double Y; };
一个点坐标记录固定占 用20个字节的存储空间 (包括ShapeType)
多义线的坐标记录存储格式
多义线(polyline)与前述课程中的概念相同,但在具体存储结构上 与前述课程中提出的格式有所区别,相对于下述结构体: struct ShpPolyline { double XMin; //整个Polyline的最小X坐标 double YMin; //整个Polyline的最小Y坐标 double XMax; //整个Polyline的最大X坐标 double YMax; //整个Polyline的最大Y坐标 int NumParts; // 分段数 int NumPoints; // 所有的折点数 int Parts[NumParts]; // 每个分段的起始折点在Points数组 中的索引号 ShpPoint Points[NumPoints]; // 所有折点的坐标 };
.shp文件头中的空间信息概况
int ShapeType; //几何体类型,.shp文件只能存储单一类型几何体 double XMin; //文件中所有X坐标的最小值 double YMin; //文件中所有Y坐标的最小值 最小外接矩形 (minimum enclosing rectangle, MER)
多义线记录格式的注意事项(1)
由于多义线中的分段数和折点数是不固定的,因此该类型不像点
类型具有固定的记录长度,而是与分段数与折点数相关;
Xmin~YMax定义了该多义线的坐标范围(MER),在前次课中我 们自己设计的数据结构中没有这一成员,而实际上要表示线的空 间形态也并不需要这一数据,这一数据的意义是什么?