下图是弧段一结点结构的直观表示,表达了“面-弧”、“结点-弧”等一系列空间拓扑关系。
在数字化输入完成以后建立矢量拓扑结构的过程可以分为五个阶段来完成。
1) 首先,在所涉及的范围内对所有边界线进行分类,通过自相交或两
两相交使各边界线都分割成两结点之间的具有单一拓扑性质的弧段,建立连接指针,构成图形外边界;
2) 然后,检查该外边界构成的多边形是否闭合,即应保证连接指针的
正确,只有在单弧段组成的“孤岛”情况下,弧段指针才可能指向该弧本身;
3) 第三步从外边界连接各弧段构成各个内多边形,并给以顺序编导; 4) 第四步按梯形规则计算各多边形面积,井将其作为附加属性记录, 5) 最后,向建立的多边形连接其同性数据,建正与属性库的联系。 自动建立拓扑结构编码可以简化数据录入流程,减少工作量,生成的拓扑关系的可靠性和一致性较好,此外,该法还具有如下优点:
(1)可将多边形生成完好的网络,减少数据冗余和公共边界不重合的矛盾, (2)因为生成的多边形、边界及其属性都存在着互相联系,从而可以实现邻域分析,
(3)多边形与生成“岛”的层次关系不受限制;
(4)其精度仅受数字化仪本身精度和计算机字长的限制。
多边形编码与拓扑关系自动生成的具体算法原理可参见《地理信息系统使用教程》一书。
总之,矢量结构自身的待点决定于矢量编码具有信息的完整性和运算的灵活性。但是从目前来说,尚无统一的最佳矢量结构编码方法。所以在具体工作中应根据任务的性质、要求和数据特点灵活地应用与设计。
C 矢量与栅格数据结构的比较
在计算机辅助制图和地理信息系统发展早期,最初引用的是矢量处理技术,栅格数据处理始于70年代中期。几年以前,这两种数据结构势不两立,很难兼容,因此给数据利用带来许多不便。近年来,人们越来越清楚地认识到:原先把栅格和矢量数据结构的差别当成重要的概念差别,事实上都是技术问题。计算机技术的发展使运算速度、存储能力、地理数据的空间分辨率等大大
提高。为了更有效地利用GIS,人们面临的问题之一是栅格和矢量数据结构的选择。
一、矢量与栅格数据结构的比较
地理信息系统的数据范围十分广泛,数据保存方式多种多样,数据结构类型复杂。空间数据的矢量结构和栅格结构是模拟地理信息系统的截然不同的两种方法,它们各有千秋,相互补充、相互促进。矢量数据与栅格数据结构详细比较见下表。
表:矢量与栅格数据的比较
二、矢量数据和栅格数据的选择
根据上述比较,在GIS建立过程中,应根据应用目的要求、实际应用特点、可能获得的数据精度以及地理信息系统软件和硬件配制情况,在矢量和栅格数据结构中选择合适的数据结构。
矢量数据结构是人们最熟悉的图形表达形式,对于线划地图来说,用矢量数据来记录往往比用栅格数据节省存贮空间。相互连接的线网络或多边形网络则只有矢量数据结构模式才能做到,因此矢量结构更有利于网络分析(交通网,供、排水网,煤气管道,电缆等)和制图应用。矢量数据表示的数据精度高,并易于附加上对制图物体的属性所作的分门别类的描述。目前解析几何被频繁地应用于矢量数据的处理中,对于一些直接与点位有关的处理以及有现成数学公式可循的针对个别符号的操作计算,用矢量数据有其独到的便利之处。矢量数据便于产生各个独立的制图物体,并便于存贮备图形元素间的关系信息。
栅格数据结构是一种影像数据结构,适用于遥感图像的处理。它与制图物体的空间分布特征有着简单、直观而严格的对应关系,对于制图物体空间位臵的可探性强,并为应用机器视觉提供了可能性,对于探测物体之间的位臵关系,栅格数据最为便捷。多边形数据结构的计算方法中常常采用栅格选择方案,而且在许多情况下,栅格方案还更有效。例如,多边形周长、面积、总和、平均值的计算、从一点出发的半径等在栅格数据结构中都减化为简单的计数操作。又因为栅格坐标是规则的,删除和提取数据都可按位臵确定窗口来实
现,比矢量数据结构方便得多。最近以矢量数据结构为基础发展起来的栅格算法表明存在着一种比以前想象中更为有效的方法去解决某些栅格结构曾经存在的问题。例如,栅格结构的数据存储量过大的问题可用前面提出的压缩方法使其减少。
栅格结构和矢量结构都有一定的局限性。一般来说,大范围小比例的自然资源、环境、农业、林业、地质等区域问题的研究,城市总体规划阶段的战略性布局研究等,使用栅格模型比较合适。城市分区或详细规划、土地管理、公用事业管理等方面的应用,矢量模型比较合适。当然也可以把两种模型混合起来使用,在同一屏幕上同时显示两种方式的地图。目前GIS的开发者和使用者都积极研究这两类数据结构的相互转换技术,而且己开发出栅格数据结构和矢量数据结构相互转换的软件。
D 两种数据结构的相互转换
对地图数字化主要是采用两种方式,即手扶跟踪数字化产生矢量结构数据和图像扫描产生栅格结构数据。在GIS中,这两种数据结构是最基本的。因此矢量数据与栅格数据的相互转换的方法也就必然要成为在不同GIS之间进行数据传输、信息共享所不可缺少的手段;即使在同一GIS系统中,在实现其空间分析和数据操作的过程中,为使系统运行的总体效率和功能得以圆满完成,这种数据格式的相互转换也是不可避免的,并且也是GIS的重要功能之一。 一般地,GIS中的数据格式转换基本上可分为矢量数据向栅格数据转换和栅格数据向矢量数据转换两种方式。这种互相转换是通过各种算法编制的转换程序得以实现的。近年来已发展了许多高效的转换算法以适应不同的环境需要。
一、矢量数据向栅格数据的转换
对于以矢量结构表述的点状实体而言,每个实体仅由一个坐标对表示其空间位臵,而在概格结构中的点实体(像元)的位臵,则是由该点所处的行列位臵所确定。因此对于点实体的两种结构转换基本上只是一个坐标精度变换的问题,在技术上并不难解决。
用矢量结构表示的线实体是由一系列点的坐标对来表述其位臵的,在变换为栅格结构时,按解析几何中的两点式直线方程,根据栅格精度要求,在每两坐标点之间插入一系列栅格像元,每个坐标点变换为栅格结构的行列坐标,可见在线实体上实现这种结构转换也是不难实现的。因此,通常对转换算法的研究主要放在对面实体或称多边形的数据结构转换上。为便于叙述,这里对所谓多边形及其矢量格式和栅格格式给予具体定义。
多边形:指由折线段组成的封闭曲线围成的多边形区域,具有可唯一标识的多边形编号。该编号可作为多边形属性代码也可是指向属性数据记录地址的指针。
所谓矢量格式向栅格格式的数据转换,就是在矢量格式的多边形内部给所有栅格像元上赋以相应的多边形编号,故又可称为多边形填充。现将几种主要的转换算法描述如下: (l)内部点扩散算法
该算法由每个多边形的一个内部点(种子点)开始,向周围8个方向的邻点扩散,然后判断各个新加入点是否在多边形边界上。若新点在边界上,则该
点不作为种子点,停止扩散;如果该点不在多边形边界上,则该点作为新的种子点与原有的种子点一起继续向外扩散,并将新的种子点赋以该多边形编号。重复上述过程直到所有的种子点填满该多边形并遇到多边形边界停止为止。 扩散算法程序设计比较复杂,需要在栅格阵列中进行搜索,占用内存较大。当计算机内存容量受限制时,由于搜索过程中读写磁盘文件需花费大量的时间,故该法难于采用。另外,由于栅格精度的限制,在一定的栅格精度下,如果复杂图形中某个多边形两侧的边界落入同一个或相邻的两个栅格像元之内,就会造成该多边形不连通,如图3-22(e)所示,此时,仅用一个种子点就不能完成整个多边形的填充。 (2)射线算法
射线算法是逐点判断各栅格点是位于多边形内或在多边形之外。通过从待判点向外引射线,然后判断该射线与多边形的边界相交的次数。如果相交偶数次,则该点在多边形外部;若为奇数次,则该点为多边形内部点。如图3-23所示,当n一奇数时,可给该点赋值该多边形编号。
射线算法要计算射线与多边形边界的交点,计算量较大。此外,判断射线与多边形边界相交时,有一些特殊情况会影响判断的正确性,如图3-22所示的几种特例情况,必须予以排除。而这又会造成算法的不完善并增加编程的复杂性。
(3)扫描算法
扫描算法是射线算法的改进。通常情况下,沿栅格阵列的行(或列)方向进行逐行(列)扫描,对扫描线每两次遇到多边形边界的交点之间的栅格,判别为属于多边形内部点给予赋值该多边形编号。扫描算法较射线算法大大提高了计算效率。但是,射线算法中的一些特殊情况,如图3-22所示,在扫描算法中仍然存在,仍需给予特殊处理。 (4)边界代数算法
边界代数法是一种基于积分思想的矢量格式向栅格格式转换的方法。在平面直角坐标系下,沿多边形边界对坐标轴积分,可以得到闭合多边形的面积。模仿积分求多边形面积的过程,首先以单个多边形的简单情况为例,说明边界代数法的转换原理,然后再推广到由多个多边形组成的区域转换方法。