您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 空间数据结构与数据库数据模型
三、空间数据结构与GIS数据模型地理信息系统所处理的数据与一般事务性信息系统如银行管理系统、图书检索系统不同。GIS的数据处理不仅包括所研究对象的属性关系,还包括研究对象的空间位置以及空间拓扑关系等信息,数据量大,结构复杂。因此,人们对GIS中的数据结构和数据模型进行了大量的研究,并发展了一整套空间数据处理的算法。一、空间数据结构的概念数据结构是指数据的组织形式,可以分为抽象数据结构(或称逻辑结构)和数据存贮结构(或称物理结构)来进行研究。所谓抽象数据结构是指人们仅从概念上描绘数据之间的排列和联系,而并不涉及数据和具体程序管理细节。数据存贮结构则是为实现某一抽象数据结构而具体设计的数据存贮管理方式.是依照任务的不同,软件系统和设计者的不同而改变的,具有一定的特殊性,是前者的一个具体实现。地理空间数据在GIS中的流向可以认为经历了四个阶段。用户认知的数据结构输入GIS系统后转换成为GIS空间数据结构,然后,为有效地进行数据管理,将其转化为数据库结构,最后按某种特定程式以硬件结构写入存贮介质。上述流程即为数据的输入过程。地理空间实体可以抽象为点、线、面三种基本地形要素来表示它的位置、形状、大小、高低等。---点(零维):又称为元素或像元,是一个数据点,具有一对(x,y)坐标相至少—个属性,逻辑上不能再分。这里所谓逻辑上不能再分是指抽象的点而不是几何点,因为事实上抽象的点可以是实体线段或面块,对某个比例尺或图像分辨率而言,它们可以被抽象为以一对坐标表示的数据点。---线:是由一个(x,y)坐标对序列表示的具有相同属性的点的轨迹。线的形状决定坐标对序列的排列顺序,线上每个点有不多于二个邻点。地理实体,如河流、道路、地形线、公共设施走廊、区域边界、地质界线等均属线状地物,其特点是线上各点有相同的公共属性并至少存在一个属性。---面:是以(x,y)坐标对的集合表示的具有相同属性的点的轨迹。面的形状不受各点坐标对排列顺序的影响。凡是面的内部点可以有多于三个的邻点,面内每个点应至少具有一个相同属性。土壤、植被、行政区划、岩石分类等地理实体属面状地物。如果顾及平面位置与高程位置结合起来所构成的空间数据模型则还应考虑三维的体元素,作为点、线、面三个基本地形要素的—个外延。总之,从几何上讲,人们正是通过上述这些基本要素构成了对各种地理实体的认识结构。地理信息系统空间数据结构就是指空间数据的编排方式和组织关系。空间数据编码是空间数据结构的实现。目的是将图形数据、影像数据、统计数据等资料,按一定的数据结构转换为适用于计算机存储和处理的过程,不同的数据源,其数据结构相差很大,同一数据源,也可以用许多方式来组织数据,按不同的数据结构去处理,得到的截然不同的内容。如下图所示为用这两种数据结构来表示同一块由不同土壤结构构成的土地。图中(a)的土壤结构是由一组具有起终点坐标的线段和必要的连接指针构成。因为表示物件的线段有方向性,所以称之为矢量结构。线段端点的指针表明了这些线段应如何连接在一起才能形成相应地块。这种结构可以表述为:地块矢量组连通性图中(b)的土壤结构是由格网中某一部分的像元或称栅格集合所构成,所以称之为栅格结构。在同一集合中的像元都具有同样的编码“a”或“b”或“c”等。实际上这些值本身并不一定显示出来,通常它们可能只代表某一符弓或是某种颜色或是影像灰度,这种结构可以表述为:地块符号/颜色像元图:用矢量结构或栅格结构表示同一地块的例子从上所述,空间数据的结构有矢量数据结构和栅格数据结构两种形式。目前大多数GIS软件均结合了这两种数据结构,或采用混合数据结构或采用矢栅一体化结构。GIS的空间数据结构在计算机系统中的实现通常是通过空间数据编码的方法进行的。由于GIS数据量极大,一般需要采用压缩数据的编码方式以减少数据冗余。一些常用的编码方式有:矢量数据结构编码方式:坐标系列编码、层次索引编码、拓扑结构编码等栅格数据结构编码方式:链码、直接栅格编码、游程长度编码、块码、四叉树码等计算机存储和处理数据的效率,在很大程度上取决于数据组织方式的优劣。数据结构在GIS中对于数据采集、存储、查询、检索和应用分析等操作方式有着重要的影响。一种高效率的数据结构,应具备几方面的要求:①组织的数据能够表示要素之间的层次关系,便于不同数据联接和覆盖。②正确反映地理实体的空间排列方式和各实体间相互关系。③便于存取和检索。④节省存贮空间,减少数据冗余。⑤存取速度快,在运算速度较慢的微机上要达到快速响应。⑥足够灵活性,数据组织应具有插入新的数据、删除或修改部分数据的基本功能。空间数据结构选择对于GIS设计和建立起着十分关键的作用,只有充分理解了GIS的特定的数据结构,才能正确有效地使用系统。A栅格数据结构一、栅格数据的基本概念栅格数据是最简单、最直观的一种空间数据结构,它是将地面按一定分辨率划分为均匀的网格,每个网格作为一个像元,像元的位置由所在行、列号确定,像元所含有的代码表示其属性类型或仅是与其属性记录相联系的指针。在地理信息系统中,扫描数字化数据、遥感数据、数字地面高程数据(DTM)网格化后的物化探数据以及矢量-栅格转换数据等都属于栅格数据。在栅格结构中:点用一个像元来表示;线状地物用沿线走向的一组相邻像元来表示。由线的定义可知,每个线上的像元最多只有两个相邻像元在线上。面状地物或区域则用具有相同属性的相邻像元集合表示。由面的定义可知,每个像元可以有两个以上的相邻像元属于同一区域。来自遥感、数字摄影测量的数据屑于典型的栅格结构。如遥感影像像元的数值表示该影像的灰度等级。因为在栅格结构中,是将地面分划成相互邻接的大小均匀格网方块,然后使每—地块与一个栅格像元相对应。因此,由栅格结构所表示的地表数据是不连续的,是经过量化的离散值,而每一个像元大小与它所代表的实地地块大小之比就是栅格数据的比例尺。这样,在使用栅格数据计算面积、长度、距离、形状等空间指标时,若像元所代表的实地地块尺寸较大,则会造成较大的计算误差,误差随像元的增大而增加。二、栅格数据层的概念地理信息系统对现实世界的描述可以以地理空间位置为基础,按道路、行政区域、土地使用、土壤、房屋、地下管线、自然地形等不同专题属性来组织地理信息。地理数据在栅格数据结构中必须分层组织存储:在栅格数据结构中,物体的空间位置就用其在笛卡尔平面网格中的行号和列号坐标表示,物体的属性用像元的取值表示,每个象元在一个网格中只能取值一次,同一像元要表示多重属性的事物就要用多个笛卡尔平面网格,每个笛卡尔平面网格表示一种属性或同一属性的不同特征,这种平面称为层。每一层构成单一的属性数据层或专题信息层:例如同样以线性特征表示的地理要素,河流可以组织为一个层,道路可以作为另一层,同样以多边形特征表示的地理要素,湖泊可以作为一个层,房屋可以作为另一层,根据使用目的不同,可以确定需要建立哪些层及需要建立哪些描述性属性。在下图中,左边是现实世界按专题内容的分层表示,第三层为植被,第二层为土壤,第一层为地形,中间是现实世界各专题层所对应的栅格数据层。右图是对不同栅格数据层进行叠加分析,并得出分析结论。图:栅格数据的分层与叠合分析三、栅格数据取值栅格数据通常有下述几种途径的得到1)格网法取值2)矢量结构转化为栅格数据3)扫描法4)遥感影象数据格网法是是在专题地图上均匀地划分网格,每一网格覆盖部分的属性数据,即为该网格栅格数据的取值。但是常常会遇到一些特殊的情况,同一网格可能对应地图上多种专题属性,而每一个单元只允许取一个值,目前对于这种多重属性的网格,有不同的取值方法:图:栅格数据取值方法中心归属法:每个栅格单元的值以网格中心点对应的面域属性值来确定,如图中(a)所示。长度占优法:每个栅格单元的值以网格中线(水平或垂直)的大部分长度所对应的面域的属性值来确定,如图中(b)所示。面积占优法:每个栅格单元的值以在该网格单元中占据最大面积的属性值来确定,如图中(c)所示.重要性法:根据栅格内不同地物的重要性程度,选取特别重要的空间实体决定对应的栅格单元值,如稀有金属矿产区,其所在区域尽管面积很小或不位于中心,也应采取保留的原则,如图中(d)所示。四、栅格数据文件的组织方法假定基于笛卡尔坐标系上的一系列叠置层的栅格地图文件已建立起来,那么如何在计算机内组织这些数据才能达到最优数据存取、最少的存储空间、最短处理过程呢?如果每一层中每一个象元在数据库中都是独立单元即数据值、象元和位置之间存在着一对一的关系,按上述要求组织数据的可能方式有三种:l)以象元为记录的序列。不同层上同一象元位置上的各属性值表示为一个列数组(图a)。2)以层为基础。每一层又以象元为序记录它的坐标和属性值,一层记录完后再记录第二层(图b)。这种方法较为简单,但需要的存储空间最大。3)以层为基础,但每一层内则以多边形(也称制图单元)为序记录多边形的属性值和充满多边形的各象元的坐标(图C)。三种方式的优缺点:方法(1)节省了许多存储空间,因为N层中实际只存储了一层的象元坐标:方法(3)则节省了许多用于存储属性的空间,同一属性的制图单元的n个像元只记录一次属性值。它实际上是地图分析软件包中所使用的分级结构。这种多像元对应一种属性值的多对一的关系,相当于把相同属性的像元排列在一起,使地图分析和制图处理较为方便;这种方法很适合应用压缩编码的方法来存贮数据,通常多采用链码、行程编码、块码和四叉树码等方法。方法(2)则是每层每个像元一一记录,它的形式最为简单。图:栅格数据文件的组织方式五、栅格数据存储的压缩编码1.直接栅格编码直接栅格编码是最简单最直观而又非常重要的一种栅格结构编码方法,通常称这种编码的图像文件或栅格文件。直接编码就是将栅格数据看作一个数据矩阵,逐行(或逐列)逐个记录代码,可以每行都从左到右逐象元记录,也可奇数据行从左到右,而偶数行由右向左记录,为了特定目的还可采用其它特殊的顺序。如右图所示的栅格结构就可以记录成:7,7,7,6,6,6,6,6,7,7,7,7,7,6,6,6,7,7,7,7,7,7,6,6,4,4,4,7.6,6,6,6,4,4,4,4,4,6,6,6,4,4,4,6,5,5,6,6,0,O,4,4,6,6,6,6,0,0,1,0,6,6,0,0。2.链式编码链式编码又称为弗里曼链码(Freeman,1961)或边界链码。它用一个起点和一系列在基本方向上的单位矢量描述出线状地物或区域边界。所采用的基本方向可以事先定义。例如.我们可以定义基本方向为:东=0,北=1,西=2,南=3,则如右图所示的属性代码为6的线状地物,其位置可以表示为:1,4,3,2,3,2,32,02,3,0,3,03。其中前二个数字1和4表示起点为第1行第4列,从第3个数字起每个数字表示单位矢量的方向。数字的上标表示单位矢量的前进量。这里将单位矢量的长度默认为一个栅格像元。当然,我们也可以采用8个基本方向码进行编码.链码可以有效地压缩栅格数据,尤其是对于计算面积或长度或转折方向的凸凹度等运算较为方便,比较适合存贮图形数据。缺点是在进行叠加操作时,对边界的合并和插入等修改编辑工作比较困难。对局部的修改要涉及改变整体结构。因此效率较低。另外,由于链码是以每个区域为单位存贮边界,所以相邻边界将被存贮两次而产生数据冗余,这些问题使链码的应用受到一定限制。3.行程编码我们知道,在同一面元区域内,相邻像元的属性代码值是相同的,这样就非常适合于用压缩的编码方式.将相邻等值的像元合并,记录下行程长度和代码值,这种方法称为行程编码。通常有两种行程编码方案可实现对数据的压缩:一种编码方案是行程长度编码,即在进行行列扫描过程中只在各行(或列)数据的代码发生变化时依次记录该代码以相同代码出现的个数(长度),从而实现数据的压缩。例如对右图所示的栅格数据,可进行如下行程编码:(7,3),(6,5),(7,5),(6,3),(7,6),(6,2),(4,3),(7,1),(6,4),(4,5),(6,3),(4,3),(6,5),(0,2),(4,2),(6,4),(0,4),(6,2),(0,2)。
本文标题:空间数据结构与数据库数据模型
链接地址:https://www.777doc.com/doc-3231469 .html