矢量数据结构矢量数据结构编码的基本内容
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.3矢量数据结构
地理信息系统中另一种最常见的图形数据结构为矢量结构,即通过记录坐标的方式尽可能精确地表示点、线、多边形等地理实体,坐标空间设为连续,允许任意位置、长度和面积的精确定义,事实上,因为如下原因,也不可能得到绝对精确的值:1、表示坐标的计算机字长有限;2、所有矢量输出设备包括绘图仪在内,尽管分辨率比栅格设备高,但也有一定的步长;3、矢量法输入时曲线选取的点不可能太多;4、人工输图中不可避免的定位误差。
在前面第二章中已知道,矢量数据存储是以隐式关系以最小的存储空间存储复杂的数据。当然这只是相对而言,在地理信息系统中没有绝对“最好”的方法。
2.3.1矢量数据结构编码的基本内容
1、点实体
点实体包括由单独一对x,y坐标定位的一切地理或制图实体。在矢量数据结构中,除点实体的x,y坐标外还应存储其它一些与点实体有关的数据来描述点实体的类型、制图符号和显示要求等。点是空间上不可再分的地理实体,可以是具体的也可以是抽象的,如地物点、文本位置点或线段网络的结点等,如果点是一个与其它信息无关的符号,则记录时应包括符号类型、大小、方向等有关信息;如果点是文本实体,记录的数据应包括字符大小、字体、排列方式、比例、方向以及与其它非图形属性的联系方式等信息。对其它类型的点实体也应做相应的处理。图3—10说明了点实体的矢量数据结构的一种组织方式。
2、线实体
线实体可以定义为直线元素组成的各种线性要素,直线元素由两对以上的x,y坐标定义。最简单的线实体只存储它的起止点坐标、属性、显示符等有关数据。例如,线实体输出时可能用实线或虚线描绘,这类信息属符号信息,它说明线实体的输出方式。虽然线实体并不是以虚线存储,仍可用虚线输出。
弧、链是n个坐标对的集合,这些坐标可以描述任何连续而又复杂的曲线。组成曲线的线元素越短,x,y坐标数量越多,就越逼近于一条复杂曲线,既要节省存储空间,又要求较为精确地描绘曲线,唯一的办法是增加数据处理工作量。亦即在线实体的纪录中加入一个指示字,当起动显示程序时,这个指示字告诉程序:需要数学内插函数(例如样条函数)加密数据点且与原来的点匹配。于是能在输出设备上得到较精确的曲线。不过,数据内插工作却增加了。弧和链的存储记录中也要加入线的符号类型等信息。
线的网络结构。简单的线或链携带彼此互相连接的空间信息,而这种连接信息又是供排水网和道路网分析中必不可少的信息。因此要在数据结构中建立指针系统才能让计算机在复杂的线网结构中逐线跟踪每一条线。指针的建立要以结点为基础。如建立水网中每条支流之间连接关系时必须使用这种指针系统。指针系统包括结点指向线的指针。每条从结点出发的线汇于结点处的角度等,从而完整地定义线网络的拓扑关系。
如上所述,线实体主要用来表示线状地物(公路、水系、山脊线)、符号线和多边形边界,有时也称为“弧”、“链”、“串”等,其矢量编码包括以下内容:
其中唯一标识是系统排列序号:线标识码可以标识线的类型;起始点和终止点可以用
点号或直接用坐标表示;显示信息是显示线的文本或符号等;与线相联的非几何属性可以直接存储于线文件中,也可单独存储,而由标识码联接查找。
3、面实体
多边形(有时称为区域)数据是描述地理空间信息的最重要的一类数据。在区域实体中,具有名称属性和分类属性的,多用多边形表示,如行政区、土地类型、植被分布等;具有标量属性的有时也用等值线描述(如地形、降雨量等)。
多边形矢量编码,不但要表示位置和属性,更重要的是能表达区域的拓扑特征,如形状、邻域和层次结构等,以便使这些基本的空间单元可以作为专题图的资料进行显示和操作,由于要表达的信息十分丰富,基于多边形的运算多而复杂,因此多边形矢量编码比点和线实体的矢量编码要复杂得多,也更为重要。
在讨论多边形数据结构编码的时候,首先对多边形网提出如下的要求:
(1)组成地图的每个多边形应有唯一的形状、周长和面积。它们不象栅格结构那样具有简单而标准的基本单元。即使大多数美国的规划街区也不能设想它们具有完全一样的形状和大小。对土壤或地质图上的多边形来说更不可能有相同的形状和大小。
(2)地理分析要求的数据结构应能够记录每个多边形的邻域关系,其方法与水系网中记录连接关系一样。
(3)专题地图上的多边形并不都是同一等级的多边形,而可能是多边形内嵌套小的多边形(次一级)。例如,湖泊的水涯线在土地利用图上可算是个岛状多边形,而湖中的岛屿为“岛中之岛”。这种所谓“岛”或“洞”的结构是多边形关系中较难处理的问题。
2.3.2矢量数据结构编码的方法
矢量数据结构的编码形式,按照其功能和方法可分为:实体式、索引式、双重独立式和链状双重独立式。
1、实体式
实体式数据结构是指构成多边形边界的各个线段,以多边形为单元进行组织。按照这种数据结构,边界坐标数据和多边形单元实体一一对应,各个多边形边界都单独编码和数字
化。例如对图3-12所示的多边形A、B、C、D、E,可以用表3-1的数据来表示。
这种数据结构具有编码容易、数字化操作简单和数据编排直观等优点。但这种方法也有以下明显缺点:
(1)相邻多边形的公共边界要数字化两遍,造成数据冗余存储,可能导致输出的公共边界出现间隙或重叠;
(2)缺少多边形的邻域信息和图形的拓扑关系;
(3)岛只作为一个单个图形,没有建立与外界多边形的联系。
因此,实体式编码只用在简单的系统中。
2、索引式
索引式数据结构采用树状索引以减少数据冗余并间接增加邻域信息,具体方法是对所有边界点进行数字化,将坐标对以顺序方式存储,由点索引与边界线号相联系,以线索引与各多边形相联系,形成树状索引结构。
树状索引结构消除了相邻多边形边界的数据冗余和不一致的问题,在简化过于复杂的边界线或合并多边形时可不必改造索引表,邻域信息和岛状信息可以通过对多边形文件的线索
引处理得到,但是比较繁琐,因而给邻域函数运算、消除无用边、处理岛状信息以及检查拓扑关系等带来一定的困难,而且两个编码表都要以人工方式建立,工作量大且容易出错。