第三章空间数据结构数据结构即指数据组织的形式,是适合于计算机存储、管理和处理的数据逻辑结构。对空间数据则是地理实体的空间排列方式和相互关系的抽象描述。在地理系统中描述地理要素和地理现象的空间数据,主要包括空间位置、拓朴关系和属性三个方面的内容。空间数据结构网格数据结构(显式表示)矢量数据结构(隐式表示)显式描述显式表示:就是栅格中的一系列像元(点),为使计算机认识这些像元描述的是某一物体而不是其它物体。注:“c”不一定用c的形式,而可以用颜色、符号、数字、灰度值来显示。则得到椅子的简单数据结构为:椅子的属性——符号/颜色——像元x隐式表示隐式表示:由一系列定义了始点和终点的线及某种连接关系来描述,线的始点和终点坐标定义为一条表示椅子形式的矢量,线之间的指示字,告诉计算机怎样把这些矢量连接在一起形成椅子,隐式表示的数据为:椅子的属性——一系列矢量——连接关系栅格数据结构栅格数据:栅格数据结构实际就是像元阵列,每个像元由行列确定它的位置。由于栅格结构是按一定的规则排列的,所表示的实体位置很容易隐含在网络文件的存储结构中,且行列坐标可以很容易地转为其它坐标系下的坐标。在网络文件中每个代码本身明确地代表了实体的属性或属性的编码。栅格数据结构就是像元阵列,每个像元的行列号确定位置,用像元值表示空间对象的类型、等级等特征。每个栅格单元只能存在一个值。(a)三角形(b)菱形(c)六边形点线面对于栅格数据结构•点:为一个像元•线:在一定方向上连接成串的相邻像元集合。•面:聚集在一起的相邻像元集合。栅格数据结构:坐标系与描述参数Y:列X:行西南角格网坐标(XWS,YWS)格网分辨率栅格数据单元值确定CAB面积占优重要性A连续分布地理要素C具有特殊意义的较小地物A分类较细、地物斑块较小AB为了逼近原始数据精度,除了采用这几种取值方法外,还可以采用缩小单个栅格单元的面积,增加栅格单元总数的方法栅格数据压缩存储的编码方法AAAAARAAARAAARAARAAAAAAAAAGGAAGGGGGGGAGGGAGGAAAAAARAAAARAAARRAAA143258761234567801234567起点行列号,单位矢量R:(1,5),3,2,2,3,3,2,3链式编码游程长度编码逐行编码数据结构:行号,属性,重复次数1,A,4,R,1,A,4块状编码正方形区域为记录单元数据结构:初始位置,半径,属性(1,1,3,A),(1,5,1,R),(1,6,2,A),…NESWNWSEGGGGAGGAAGAAA四叉树编码栅格矩阵(RasterMatrix)Raster数据是二维表面上地理数据的离散量化值,每一层的pixel值组成像元阵列(即二维数组),其中行、列号表示它的位置。例如影像:AAAAABBBAABBAAAB在计算机内是一个4*4阶的矩阵。但在外部设备上,通常是以左上角开始逐行逐列存贮。如上例存贮顺序为:AAAAABBBAABBAAAB当每个像元都有唯一一个属性值时,一层内的编码就需要m行×n列×3(x,y和属性编码值)个存储单元。数字地面模型就属此种情况。链式编码(ChainCodes)又称为弗里曼链码(Freeman)或边界链码。基本方向可定义为:东=0,东南=l,南二2,西南=3,西=4,西北=5,北=6,东北=7等八个基本方向。如果再确定原点为像元(10,1),则该多边形边界按顺时针方向的链式编码为:10,l,7,0,1,0,7,1,7,0,0,2,3,2,2,1,0,7,0,0,0,0,2,4,3,4,4,3,4,4,5,4,5,4,5,4,5,4,6,6。游程长度编码(Run—LengthCodes)游程长度编码是按行帧序存储多边形内的各个像元的列号,即在某行上从左至右存储属该多边形的始末像元的列号。问:对左图的进行游程长度编码。块式编码(BlockCodes)块式编码是将游程长度编码扩大到二维的情况,把多边形范围划分成由像元组成的正方形,然后对各个正方形进行编码。如图:块式编码的数据结构由初始位置(行号,列号)和半径,再加上记录单元的代码组成。根据这一编码原则,上述多边形只需17个单位正方形。9个4单位的正方形和1个16单位的正方形就能完整表示,总共要57个数据,其中27对坐标,3个块的半径。四叉树编码(QuadtreeEncoding)四叉树编码又称为四分树、四元树编码。它是一种更有效地压编数据的方法。它将2n×2n像元阵列连续进行4等分,一直分到正方形的大小正好与象元的大小相等为止(如下图),而块状结构则用四叉树描述,习惯上称为四叉树编码。999900009909000090097700000077000000777700007777000077770000777799990000000999990070700000077777700000007777777700007700707000000700709999009009000NWNESWSE八叉树编码八叉树结构就是将空间区域不断地分解为八个同样大小的子区域(即将一个六面的立方体再分解为八个相同大小的小立方体),同—区域的属性相同。八叉树主要用来解决地理信息系统中的三维问题。0000010100111001011101110020030120131021031121130200210300311201211301310220230320331221231321332002012102113003013103112022032122133023033123132202212302313203213303312222232322333223233323334444545545555414055055154004155005100440540400410500511401411501510040050140151041050040050123745012345671234567I(X)K(Z)J(Y)栅格数据组织栅格数据组织栅格数据文件像元1X坐标Y坐标层2属性值层1属性值…层n属性值…像元2像元n栅格数据文件层1像元1层2…X,Y,属性值像元2X,Y,属性值……像元nX,Y,属性值层n栅格数据文件层1多边形1层2…属性值像元1坐标…多边形N像元n坐标层n栅格数据结构特点离散的量化栅格值表示空间对象位置隐含,属性明显数据结构简单,易于遥感数据结合,但数据量大几何和属性偏差面向位置的数据结构,难以建立空间对象之间的关系abc345abcac距离:7/4(5)面积:7(6)几何偏差属性偏差如以像元边线计算则为7,以像元为单金大会则为4。三角形的面积为6个平方单位,而右图中则为7个平方单位,这种误差随像元的增大而增加。矢量数据结构矢量数据结构是通过记录坐标的方式,尽可能地将点、线、面地理实体表现得精确无误。其坐标空间假定为连续空间,不必象栅格数据结构那样进行量化处理。因此矢量数据能更精确地定义位置、长度和大小。除数学上的精确坐标假设外,矢量数据存储是以隐式关系以最小的存储空间存储复杂的数据。矢量数据结构编码的基本内容矢量数据结构通过记录空间对象的坐标及空间关系来表达空间对象的位置。点:空间的一个坐标点;线:多个点组成的弧段;面:多个弧段组成的封闭多边形;矢量数据结构编码的基本内容标识码属性码空间对象编码唯一连接空间和属性数据数据库独立编码点:(x,y)线:(x1,y1),(x2,y2),…,(xn,yn)面:(x1,y1),(x2,y2),…,(x1,y1)点位字典点:点号文件线:点号串面:点号串点号XY1112223344………n5566存储方法点实体方向字体排列指针与线相交的角度如果是简单点符号符号字符大小简单点文字说明结点唯一识别符比例尺方向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)索引式BCDEabcfghefibcij12345678910111213141516171819202122232425262728293031线与多边形之间的树状索引点与多边形之间的树状索引双重独立式DIME(DuallndependentMapEncoding)ABCDOabcdefghijklmn123456789101112线号左多边形右多边形起点终点aOA18bOA21cOB32dOB43eOB54fOC65gOC76hOC87iCA89jCB95kCD1210lCD1112mCD1011nBA92这种数据结构除了通过线文件生成面文件外,还需要点文件链状双重独立式链状双重独立式数据结构是DIME数据结构的一种改进。在DIME中,一条边只能用直线两端点的序号及相邻的面域来表示,而在链状数据结构中,将若干直线段合为一个弧段(或链段),每个弧段可以有许多中间点。在链状双重独立数据结构中,主要有四个文件:多边形文件、弧段文件、弧段坐标文件、结点文件。弧段文件弧段号起始点终结点左多边形右多边形a51OAb85EAc168EBd195OEe1519ODf1516DBg115OBh81ABi1619DEj3131BC弧段坐标文件弧段号点号a5,4,3,2,1b8,7,6,5c16,17,8d19,18,5e15,23,22,21,20,19f15,16,g1,10,11,12,13,14,15h8,9,1i16,19j31,30,29,28,27,26,25,24,31链状双重独立式12345678910111213141516171819202122232425262728293031多边形文件多边形号弧段号周长面积中心点坐标Ah,b,aBg,f,c,h,-jCjDe,i,fEe,i,d,b矢量数据结构的属性数据表达属性特征类型–类别特征:是什么–说明信息:同类目标的不同特征属性特征表达–类别特征:类型编码–说明信息:属性数据结构和表格属性表的内容取决于用户图形数据和属性数据的连接通过目标识别符或内部记录号实现。矢量数据结构的属性数据表达点状对象目标标识目标标识地物编码坐标关联的线目标精