第七章空间数据管理1空间数据库2栅格数据结构及其编码3矢量数据结构及其编码4矢栅结构的比较及转换算法5空间索引机制6空间信息查询1空间数据库1.1地理信息系统与一般管理信息系统比较1.2空间数据库1.3数据与文件组织1.4GIS内部数据结构—矢量结构和栅格结构1.1地理信息系统与一般管理信息系统比较两者的区别1)在硬件上专用的图形输入输出设备模数转换设备硬件性能要求2)在软件上图形图像数据的分析和处理软件3)在信息处理的内容和采用目的方面两者共同之处•都是人—机系统•数据规模大、数据关系复杂•都是为管理和决策提供支持和手段1.2空间数据库1.2.1数据库的概念1.2.2空间数据库特点1.2.3数据库管理系统1.2.1数据库的概念概念空间数据库是一种应用于地理空间数据处理与信息分析领域的具有工程性质的数据库,它所管理的对象主要是地理空间数据(包括空间数据和属性数据),是某一区域内关于一定地理要素及其特征的数据集合。空间数据库能做什么空间数据库典型实例卫星影像存储要求(时间序列,大存储量)(NASA,QuickBird,GoogleEarth,GoogleMap)车辆GPS监管土地部门规划管理传统数据库列出长沙市销售额最高的十家蔬果店空间数据库列出中南林附近1000m范围内的所有超市找出长沙市内附近500m内有小学的所有售房1.2.2空间数据库特点1)数据量特别大2)空间数据和属性数据结合紧密3)数据应用广泛1.2.3数据库管理系统采用标准DBMS存储空间数据的主要问题:•空间数据记录是变长的•关联、连通、包含、叠加等基本操作难以实现•不能支持复杂的图形功能•地理实体表达复杂,需要跨表、跨文件•数据的安全性、一致性、完整性要求高GIS数据管理方法•开发独立的基于文件的数据管理服务•开发一个附加软件用于存储和管理空间数据和空间分析,使用DBMS管理属性数据。(混合模型)•对系统的功能进行必要扩充,空间数据和属性数据在同一个DBMS管理之下。(扩展模型)•重新设计一个具有空间数据和属性数据管理和分析功能的数据库系统目前大多数商品化的GIS软件都不采取传统的某种单一的数据模型,也不是抛弃传统的数据模型,而是采用建立在关系数据库管理系统(RDBMS)基础上的综合的数据模型。1.3数据与文件组织1.3.1数据组织的分级1.3.2数据间的逻辑联系1.3.3常用数据文件1.3.1数据组织的分级1)数据项2)记录3)文件4)数据库1.3.2数据间的逻辑联系•数据间逻辑联系主要是指记录与记录之间的联系•逻辑联系主要有三种:一对一的联系;一对多的联系;多对多的联系。1.3.3常用数据文件1)顺序文件2)索引文件3)直接文件(随机文件)4)倒排文件1.4矢量结构和栅格结构•描述地理实体的数据本身的组织方法,称为内部数据结构。•空间数据结构是指适合于计算机系统存储、管理和处理的地学图形的逻辑结构,是地理实体的空间排列方式和相互关系的抽象描述。•内部数据结构基本上可分为两大类:矢量结构和栅格结构(也可以称为矢量模型和栅格模型)。两类结构都可用来描述地理实体的点、线、面三种基本类型。•空间数据编码是空间数据结构的实现。栅格和矢量数据的主要编码方法•在地理信息系统的空间数据结构中,栅格结构的编码方式主要有直接栅格编码、链码、游程长度编码、块码、四叉树码等;•矢量结构主要有坐标序列编码、树状索引编码和二元拓扑编码(如,DIME)等编码方法。1.4.1矢量模型矢量模型将现实世界的要素位置和范围用点、线或面表达,每一个实体的位置是用它们在坐标参考系统中的空间位置(坐标)定义。地图空间中的每一位置都有唯一的坐标值。优点:矢量模型中的空间实体与要表达的现实世界中的空间实体具有一定的对应关系。1.4.2栅格模型栅格模型将空间规则地划分为栅格(通常为正方形)。地理实体的位置和状态是用它们占据的栅格的行、列来定义的。每个栅格的大小代表了定义的空间分辨率。由于位置是由栅格行列号定义的,所以特定的位置由距它最近的栅格记录决定。栅格模型最小单元与它表达的真实世界空间实体没有直接的对应关系。栅格数据结构的特点栅格数据结构结构容易实现,算法简单,且易于扩充、修改,也很直观,特别是易于同遥感影像的结合处理,给地理空间数据处理带来了极大的方便。特别适合于FORTRAN、BASIC、C等高级语言作文件或矩阵处理,这也是栅格结构易于为多数地理信息系统设计者接受的原因之一。2栅格数据结构及其编码2.1栅格数据结构2.2决定栅格单元代码的方式2.3编码方法2.1栅格数据结构•定义以规则的阵列来表示空间地物或现象分布的数据组织,组织中的每个数据表示地物或现象的非几何属性特征。•特点栅格结构的显著特点是:属性明显,定位隐含,即数据直接记录属性的指针或属性本身,而所在位置则根据行列号转换为相应的坐标。栅格数据的形状、尺寸及相关问题栅格结构表示的地表是不连续的,是量化和近似离散的数据。栅格尺寸越小,其分辨率越高,数据量也越大栅格数据的形状、尺寸及相关问题栅格数据单元格经常是矩形(主要是正方形)的,但并不是必须如此。其单元格形状可以随应用的需要进行具体设定,比如设置为三角形。(a)三角形(b)菱形(c)六边形栅格数据的形状、尺寸及相关问题栅格尺寸较大,则会造成较大的误差,同时由于在一个栅格的地表范围内,可能存在多于一种的地物,而表示在相应的栅格结构中常常只能是一个代码。这类似于遥感影像的混合像元问题例如landsatMSS卫星影像单个像元对应地表79×79m2的矩形区域,影像上记录的光谱数据是每个象元所对应的地表区域内所有地物类型的光谱辐射的总和效果栅格数据的形状、尺寸及相关问题栅格数据在转换和重新采样时,应尽可能保持原图的数据精度,通常的方法:在保持栅格单元大小不变的情况下,采用不同的方法提取栅格单元代码缩小单个栅格单元的面积,即增加单元的总数,行列数也相应增加2.2栅格单元代码的取值方式•中心点法•面积占优法•重要性法•百分比法2.3编码方法•直接栅格编码压缩编码方法1)链码(ChainCodes)2)游程长度编码(Run-LengthCodes)3)块码4)四叉树常见栅格数据压缩编码总结链码的压缩效率较高,已经近矢量结构,对边界的运算比较方便,但不具有区域的性质,区域运算困难。游程长度编码既可以在很大程度上压缩数据,又最大限度地保留了原始栅格结构,编码解码十分容易。但对破碎数据处理效果不好。块码和四叉树编码具有区域性质,又具有可变的分辨率,有较高的压缩效率,但运算效率是其瓶颈。其中四叉树编码可以直接进行大量图形图像运算,效率较高,是很有前途的方法。压缩编码的相关问题同所有的数据结构问题一样,压缩编码过程的主要矛盾也是数据量压缩和运算时间之间的矛盾:为了更有效地利用空间资源,减少数据冗余,不得不花费更多的运算时间进行编码。好的压缩编码方法就是要在尽可能减少运算时间的基础上达到最大的数据压缩效率,并且是算法适应性强,易于实现3矢量数据结构及其编码3.1矢量数据结构3.2编码方法3.1矢量数据结构定义:通过记录坐标的方式尽可能精确地表示点、线、多边形等地理实体。特点:定位明显、属性隐含,其定位是根据坐标直接存储的,而属性则一般存于文件头或数据结构中某些特定的位置上。矢量数据结构的基本概念前导概念:矢量(起点-终点)矢量数据结构:通过记录坐标的方式尽可能精确地表示点、线、多边形等地理实体,坐标空间设为连续,允许任意位置、长度和面积的精确定义。在一般情况下,其精度比栅格数据结构高得多。其精度仅受数字化设备的精度和数值记录字长的限制。矢量数据结构的基本概念几何体的类型矢量数据结构的基本概念矢量数据的类型Buildings.PolygonStreams,LineWells,PointRoads,LineZoning,PolygonMAPSHEETS矢量数据结构的特点矢量数据结构图形运算的算法总体上比栅格数据结构复杂的多,在叠加运算、邻域搜索等操作时比较困难,有些甚至难以实现。但其也有便利和独到之处,在计算长度、面积、形状和图形编辑、几何变换操作中,矢量结构有很高的效率和精度。3.2编码方法•点实体•线实体•多边形1)坐标序列法(Spaghetti方式)2)树状索引编码法3)拓扑结构编码法点实体点是空间上不能再分的地理实体,可以是具体的或抽象的,如地物点、文本位置点或线段网络的结点等,由一对x、y坐标表示。对于点实体,矢量结构中只记录其在特定坐标系中的坐标和属性代码。点实体数据编码-组织方式线实体对于线实体,在数字化时即进行量化,就是用一系列足够短的直线首尾相接表示一条曲线,当曲线被分割成多而短的线段后,这些小线段可以近似地看成直线段,而这条曲线也可以足够精确地由这些小直线段序列表示,矢量结构中只记录这些小线段的端点坐标,将曲线表示为一个坐标序列,坐标之间认为是以直线段相连,在一定精度范围内可以逼真地表示各种形状的线状地物。线实体数据编码-组织方式唯一标识码是系统排列序号;线标识码可以标识线的类型;起始点和终止点号可直接用坐标表示;显示信息是显示时的文本或符号等;与线相联系的非几何属性可以直接存储于线文件中,也可单独存储,而由标识码联接查找多边形实体“多边形”在地理信息系统中是指一个任意形状、边界完全闭合的空间区域。其边界将整个空间划分为外部和内部。多边形数据是描述地理信息的最重要的一类数据。在区域实体中,具有名称属性和分类属性的,多用多边形表示,如行政区、土地类型、植被分布等。多边形实体编码多边形矢量编码不但要表示位置和属性,更为重要的是要能表达区域的拓扑性质,如形状、邻域和层次等,以便使这些基本的空间单元可以作为专题图资料进行显示和操作,由于要表达的信息十分丰富,基于多边形的运算多而复杂,因此多边形矢量编码比点和线实体的矢量编码要复杂得多,也更为重要。矢量数据结构编码方法坐标序列法(Spaghetti方式)(实体式)索引式双重独立式链状双重独立式坐标序列法(Spaghetti方式)(实体式)由多边形边界的x、y坐标对集合及说明信息组成,是最简单的一种多边形矢量编码。实体式编码方法示例12345678910111213141516171819202122232425262728293031实体式编码方法多边形数据项A(x1,y1),(x2,y2),(x3,y3),(x4,y4),(x5,y5),(x6,y6),(x7,y7),(x8,y8),(x9,y9),(x1,y1)B(x1,y1),(x9,y9),(x8,y8),(x17,y17),(x16,y16),(x15,y15),(x14,y14),(x13,y13),(x12,y12),(x11,y11),(x10,y10),(x1,y1)C(x24,y24),(x25,y25),(x26,y26),(x27,y27),(x28,y28),(x29,y29),(x30,y30),(x31,y31),(x24,y24)D(x19,y19),(x20,y20),(x21,y21),(x22,y22),(x23,y23),(x15,y15),(x16,y16),(x19,y19)E(x5,y5),(x18,y18),(x19,y19),(x16,y16),(x17,y17),(x8,y8),(x7,y7),(x6,y6),(x5,y5)实体式编码优缺点优点–文件结构简单,易于实现以多边形为单位的运算和显示缺点–多边形之间的公共边界被数字化和存储两次,由此产生冗余和碎屑多边形;–每个多边形自成体系而缺少邻域信息,难以进行邻域处理,如消除某两个多边形之间的共同边界;–岛只作为一个单个的图形建造,没有与外包多边形的联系;–不易检查拓扑错误。这种方法可用于简单的粗精度制图系统中。索引式编码方法索引式数据结构采用树状索引以减少数据冗余并间接增加邻域信息,具体方法是对所有边界点进行数字化,将坐标对以顺序方式存储,由点索引与边界线号相联系,以线索引与各多边形相联系,形成树状索引结构。索引式编码方法