5.1. 数据编辑

数据编辑又叫数字化编辑,它是指对地图资料数字化后的数据进行编辑加工,其主要目的是在改正数据差错的同时,相应地改正数字化资料的图形。大多数数据编辑都是消耗时间的交互处理过程,编辑时间与输入时间几乎一样多,有时甚至更多。全部编辑工作都是把数据显示在屏幕上并由键盘和鼠标控制数据编辑的各种操作。因此,GIS的图形编辑系统除具有图形编辑和属性编辑的功能外,还应具有窗口显示及操作功能,以达到数据编辑过程中的交互操作目的。

5.1.1. 窗口操作

窗口操作是交互式图形编辑系统的重要工具,利用窗口我们既可以观察图形的全景,又可移动窗口观察图形的不同部分,还可以将图形局部放大,观察其细部,使图形的编辑、修改、设计更加方便、精确。

开窗显示是窗口操作中主要而基本的功能,所谓开窗显示就是按用户指定的空间范围, 进行图形子集合的选取,这个指定范围称之为“窗口”。当人们希望利用指定的有效空间或存贮介质, 对某个局部范围进行图形数据的显示或转贮时,往往都要使用开窗技术。 开窗的方式有两种:正开窗和负开窗。正开窗就是选取整个图形数据在窗口内的子集合;负开窗就是选取整个图形数据在窗口外的子集合。在通常情况下,正开窗用途更大一些。窗口的形状通常为矩形,也可以是任意多边形,这根据用户的需要确定。窗口轮廓点坐标可由键盘输入,也可将全图显示在荧光屏上用光标确定。如果窗口为矩形,只要输入或标定窗口的两个对角坐标即可。

在窗口确定以后,还要考虑如何切掉窗口以外(对正开窗)或以内(对负开窗)的线条,从而只显示窗口以内或以外的内容,这一过程称为裁剪。

窗口规定了产生显示图形的范围,而视口(视见区)规定了显示图形在荧光屏上的位置和大小。要想按用户的需求实现开窗显示,就须用视见变换将窗口内的图形变换到显示器的视口中产生显示。

下面就对开窗技术中所用到的裁剪技术和二维视见变换技术予以介绍。

1.裁剪技术

不同的图形需要采取不同的裁剪技术,相同元素对不同的窗口形状有不同的方法。现以正开窗且窗口为矩形来讨论图形元素的裁剪方法。

  1. 点的选取

只要窗口左下角和右上角坐标已知,判断点是否在窗口内是非常容易的。设窗口左下角和右上角坐标为:(xl, yl)和(xr, yr),点p的坐标为(xp, yp),显示时只要xl< xp< xr且yl< yp< yr成立,p点在窗内就被选取,否则舍去。

  1. 线状要素的选取

线状要素是由有序线段组成的折线来逼近的。因此对线状要素的选取只要讨论线段的选取就可以了。下面介绍Cohen-Sutherland直线裁剪算法,首先对直线段的两个端点按所在区域进行分区编码,根据编码可以迅速地判明全部在内的线和全部在某边界外侧的线。只有不属于这两种情况的线,才需要求出交点,舍去交点外侧部分。对剩余部分把它作为新的线段看待,又从头开始考虑。两遍循环之后,就能确定该线段是部分裁留下来,还是全部舍弃。

整个算法的思路和步骤如下:

  1. 分区编码

image7

延长裁剪边框将二维平面分为九个区域,每个区域各用一个四位二进制代码标识。各区代码的具体值如图5-1所示。

设线段的两个端点为:             1001            1000             1010

根据上述的规则,可以求出

image14
  1. 判别                          0001            0000             0010

    根据C1和C2的具体值,

可以有三种情况:两个端点

码都是零,则两端点都在窗             0101            0100 0110

内,线段完全可见,接受此

线段;两端点码对应位之间                        图 5-1 各区代码值

的逻辑与不是全为零,则它们处于窗某一边线的同一外侧,线段完全不可见,摒弃此线段;当两端点码不都是零,但各位的逻辑与都为零时,则线段可能部分可见,亦可能完全不可见,这时需要进行线段与窗边界交点位置计算。

  1. 求交点

image16

image18

直线与组成窗边的四条直线交点是:

    d. 对剩下的线段,可重复a~d的步骤,至多重复到第三遍则为止。这时,剩下的线段或者全在窗内,或者全在窗外,从而完成了对线段的裁剪。

  1. 面状要素(多边形)的选取

多边形的边界也是一条有序线段组成的折线,只不过它是一条封闭的折线罢了。裁剪方法基本上同线状要素的处理,但在显示时要进行校正,即把窗口边界上有关线段加入显示部分的多边形的边并形成一个封闭的值。

2.二维观察变换

地理信息系统中的地图数据库涉及多种数据源,它们往往参考于不同的坐标系,这为空间数据处理带来很多不便。而各种图形输出设备,如图形屏幕显示器,绘图仪等,又各有其独特的坐标系。为了增强地图数据库的空间数据处理功能和更方便地使用各种图形输入、输出设备,需引入三种坐标系。

  1. 世界坐标系(WC-World Coordinate System)

世界坐标系是指用户坐标系。世界坐标系通常为直角坐标系,一般由用户自己选定,与机器设备无关。图形输入到数据库时所依据的就是这种坐标系,图形输出时应当仍然用用户所使用的坐标系,因为图形输出是面向用户的。用户坐标空间一般为实数域,理论上是连续的、无限的。作业区的左下角的坐标值通常为非零值。

  1. 规格化数据库坐标系(NDC-Normalized Database Coordinate System)

在图形输入时,其数据来源可能是不一样的,表现在它们的椭球参数、投影方式、比例尺以及单位等的不同。而图形输出时,又可能会由于用户的需求不一样,要求输出结果用不同的椭球参数、不同的投影方式、不同的比例尺、不同的单位等。为了在库中能统一管理,通常在地图数据库中使用规格化数据库坐标系,即在库中将使用统一的椭球参数、投影方式、比例尺和单位等。

  1. 设备坐标系(DC-Device Coordinate System)

设备坐标系是物理设备的I/O空间。每一种图形设备都有其独有的坐标系,在数字化仪上对地图或其它图形数字化时,由于数字化仪的游标器给出的是设备台面坐标(也叫相对坐标),而不是该图所依据的投影坐标,因此,在一般情况下要进行从DC到WC的变换,使得一幅图的数据,特别是多幅有关联的图幅的数据位于一个统一的理论参考系中。在屏幕上显示图形或在绘图机上绘图时,则要作另一种坐标变换。

  1. 坐标系之间的变换

在地图数据库中,三种坐标系之间均是双向变换关系,如图5-2所示。

../_images/image026.gif

图 5-2 三种坐标系的关系

  1. 二维观察变换

从图5-2可见,在进行图形数据交互编辑时,为了能实现开窗口,使得它在用户指定屏幕视口上显示图形,就必须进行NDC到DC的变换和DC到NDC的变换。因此,在图形数据编辑之前,用户先选定窗口范围(wxl,wyl)和(wxr,wyr)和视口范围(vxl,vyl)和(vxr,vyr)。然后进行二维观察变换,以实现在屏幕上适当位置正确显示窗口内数据,后可通过键盘或鼠标对屏幕图形进行交互式编辑。

观察变换将两种不同坐标系中的图形联系起来,将窗口转为视口。转换过程是: 先平移窗口使其左下角与坐标系原点重合,再比例变换使其大小与视口相等,最后再通过平移使其移到视口位置,窗口中的全部图形经过与此相同的变换后便成视口中的图形了。因此观察变换矩阵为公式5-1。

(公式5-1)

image29

5.1.2. 图形数据编辑

空间和非空间数据输入时会产生一些误差,主要有: 空间数据不完整或重复、空间数据位置不正确、空间数据变形、空间与非空间数据连接有误以及非空间数据不完整等。所以,在大多数情况下,当空间和非空间数据输入以后,必须经过检核,然后进行交互式编辑。

1.图形数据交互式编辑步骤

一般来说,交互式进行图形数据编辑须按如下步骤进行:

  1. 利用系统的文件管理功能,将存在地图数据库中的图形数据(文件)装入内存;
  2. 开窗显示图形数据,检查错误之处;
  3. 数字化定位和编辑修改;
  4. 若在编辑工作中出现误操作,可用系统提供的多级Undo(后悔)功能,改正误操作;
  5. 当所有编辑工作完成后,再利用系统的文件管理功能,将编辑好的图形数据存贮到地图数据库中。

步骤(3)所提到的数字化定位是指一旦发现图形上的错误,数据库中相应的数字化数据就可找到,原则上数字检测的方法就是依据坐标、特征码和序列号。检测的方法取决于数字化数据的结构和资料本身。数据结构将在第六章中讨论,须指出的是,在地图数据库中地图数据可能被处理的程度是衡量一个数据结构价值的重要标志。

对图形数据编辑是通过向系统发布编辑命令(多数是窗口菜单)用光标激活来完成的,编辑命令主要有: 增加数据、删除数据、修改数据三类。编辑的对象是点元、线元以及面元,而每种图元又包含空间数据和非空间数据两类。

常用的编辑命令有:

  1. 增加数据:输入点元、线元、面元;复制点元、线元、面元;
  2. 删除数据:删除点元、线元、面元;
  3. 修改空间位置数据:移动点元、线元、面元;旋转点元、线元、面元;镜像点元、线元、面元;
  4. 修改空间形状数据:修改线上点;修改面元的弧段上的点;线元和孤段的端点匹配;延长或缩短线元以及面元的孤段;
  5. 修改非空间数据:修改点元色、线元色、面元色;修改点元高度、宽度、角度;修改线宽;修改点元符号;修改线型符号;修改面元填充符号。

2.图形数据处理方法

(1)图元捕捉

点的捕捉:在GIS中,点的捕捉是为了捕捉点的实体。假设图幅上有一点A(x,y),为捕捉该点,常设置一定捕捉半径D(通常为几个像素),当选择点S(x,y)离A点距离小于D,认为捕捉A点成功。实际中为避免做平方运算,常把捕捉区域设定成矩形,如图5-3所示。因此,点捕捉的实质是判断选择点S(x,y)是否在圆或设定的矩形之内。捕捉点的逻辑表达式为

image31

(X:sub:min≤Sx≤Xmax)AND(Ymin≤Sy≤Ymax)

图5-3 捕捉点的过程

线元的捕捉:假设图幅上有一个线元,其坐标点分别为(x:sub:1,y1)(xx,y2)…(xn,yn),为捕捉该线元,设置的捕捉半径为D。从理论上说,选择点的光标点坐标S(x,y)到线元的各直线段之间的距离d1,d2,d3…中,如有一个距离di满足di<D,认为该线元被捕捉。图5-4(a)中,当(d:sub:1OR d2OR d3) < D,则表示选择点S(x,y)捕捉到了该线元。实际上,由于一个线元有很多直线段组成,为此需要分别求光标点S(x,y)到各直线段的垂直距离,这样计算量很大。借助线元外接矩形信息,可减少计算工作量,提高捕捉线元的速度,具体过程是:

首先查光标所选点坐标S(x,y)是否在某线元的外接矩形内,如不在该矩形内,该光标点S(x,y)不可能捕捉到该线元,反之如在该矩形内,光标点S(x,y)有可能捕捉到该线元。显然,这里通过外接矩形可大大缩小寻找目标的范围。当光标点S(x,y)有可能捕捉到该线元时,再进行进一步的计算判断,即从光标点S(x,y)依次对每条直线段计算该点到各直线段的距离,并从中判断是否存在某个距离di<D,若存在,则认为该线元被捕捉;否则该线元未被捕捉。

image33

(a)捕捉实例                        (b)初步捕捉

图5-4 线的捕捉

面元(多边形)的捕捉:假设图幅上有一多边形,其边界坐标点分别是(x:sub:1,y1)(xx,y2)…(xn,yn)。多边形的捕捉实际上是判断选择点S(x,y)是否在多边形内。为提高捕捉多边形的速度,通常的步骤是:

首先查所选点S(x,y)是否在某多边形的外接矩形内,如图5-5(b)所示,如不在该矩形内,选择点S(x,y)不可能捕捉到该多边形;如在该矩形内,所选点S(x,y)有可能捕捉到该多边形。当该多边形有可能被选中时,就可进一步判断所选点S(x,y)是否在该多边形之内。

image35

判断点是否在多边形内的方法很多,其中一个方法是射线法,见图5-5(a),从选择点坐标S(x,y)做一垂直线或水平线,计算该线与多边形的交点个数,若交点个数为奇数时,则点S(x,y)在多边形内;当交点数为偶数时,则点S(x,y)在多边形外。

(a)点在多边形内的判断                      (b)多边形的外接矩形

图5-5 面元(多边形)的捕捉

(2)线元(弧段)交点计算

在GIS中线元(弧段)求交是一种基本操作,在拓扑关系建立、图形叠置分析、缓冲区分析、图形显示等很多地方均需要用到线元或弧段的求交算法。一般情况下,线元或弧段的求交工作量是很大的。例如对两条弧段求交点,假定两条弧段分别有m和n个坐标点,则求两条弧段的交点就要进行(m-1)×(n-1)次直线求交和判断直线是否相交的运算。由于一幅图中存在大量弧段,求交计算量很大。为此可用外接矩形的方法首先判断两弧段相交的可能性,即先判断两弧段的外接矩形是否相交,如不相交,则说明量弧段没有交点;否则,两弧段有可能存在交点,再进一步对两弧段中各直线段求交运算。

(3)线元端点匹配

image37

结点匹配:是指线元或弧段端点间的匹配。如图5-6所示,三个线目标或多边形的边界弧段中的结点A、B、C,本来应是同一点,坐标一致,但是由于数字化的误差,三点坐标不完全一致,造成它们之间不能建立关联关系。为此需要经过人工或自动编辑,将这三点坐标匹配成一致,或者说三点吻合成一个点。

图5-6 没有吻合在一起的三个点

结点匹配可由多种方法完成。第一种是结点移动,分别用鼠标将B点和C点移到A点;第二种方法是用鼠标拉一个矩形或圆,将落入该矩形或圆内的结点坐标吻合在一起,吻合时可以是将三点坐标的平均值作为吻合的坐标,也可以是将矩形或圆的中心点作为吻合坐标;第三种是通过求交点的方法,求两条线的交点或延长线的交点,即是吻合的结点;第四种方法是自动匹配,给定一个容差,在图形数字化时或图形数字化之后,将在容差范围之内的结点自动吻合在一起。一般来说,如果结点容差设置合适的话,大部分结点都能够相互吻合在一起,但有些情况下还需要前三种方法进行人工编辑。

结点与线匹配:是指线元或弧段端点和另一线元或弧段中间某点匹配。在数字化过程中,经常遇到一个结点与另一条线状目标或弧段的中间相交,这时由于测量误差或数字化时的误差,它也可能不完全交于该线目标或弧段上,而需要进行编辑,称为结点与线匹配或结点与线吻合,如图5-7所示。编辑的方法也有多种,一是结点移动,将结点移动到线目标上;二是使用线段求交,求出AB与CD的交点;第三种方法是使用自动编辑的方法,在给定容差内,将它们自动求交并吻合在一起。

结点与结点的吻合以及结点与线的吻合可能用两种情况需要考虑,一是仅要求它们的坐标一致,而不建立关联关系;另一种情况是不仅坐标一致,而且要建立它们之间的空间关联关系。在后一种情况下,图5-7中CD所在的线目标要分裂成两段,即增加一个结点,再与结点B进行吻合,并建立它们之间的关联关系。但对于前一种情况,线目标CD不变,仅B点坐标作一定的修改,使它位于直线CD上即可。

image39

图5-7 结点与线的吻合

5.1.3. 属性数据编辑

我们知道,地理信息系统所要获取、管理以及分析加工的地理信息有三种形态: 即空间信息、属性信息和关系信息。前面我已经叙述有关空间信息——图形数据的编辑,关系信息的建立及编辑将在后面予以说明,这里介绍属性信息的编辑功能的实现。

属性数据就是描述空间实体特征的数据集,这些数据主要是用来描述实体要素类别、级别等分类特征和其它质量特征。

对属性数据的输入与编辑,一般是在属性数据处理模块中进行,但为了建立属性描述数据与几何图形的联系,通常需要在图形编辑系统中设计属性数据的编辑功能,主要是将一个实体的属性数据连接到相应的几何目标上,亦可在数字化及建立图形拓扑关系的同时或之后,对照一个几何目标直接输入属性数据。一个功能强的图形编辑系统可能提供删除、修改、拷贝属性等功能。