吴鹰与某太子高官:gis原理十九

来源:百度文库 编辑:中财网 时间:2024/04/29 10:03:39

§4.2 矢量数据的图形编辑

    图形编辑是纠正数据采集错误的重要手段,其基本的功能要求是:具有友好的人机界面,即操作灵活、易于理解、响应迅速等;具有对几何数据和属性编码的修改功能,如点、线、面的增加、删除、修改等;具有分层显示和窗口功能,便于用户的使用。图形编辑的关键是点、线、面的捕捉,即如何根据光标的位置找到需要编辑的要素,以及图形编辑的数据组织。下面分别作简要介绍。

一、点的捕捉

    图形编辑是纠正数据采集错误的重要手段。点的捕捉就是计算机屏幕上进行图形编辑时如何根据光标的位置找到需要编辑的要素点。

二、线的捕捉

    线的捕捉就是计算机屏幕上进行图形编辑时如何根据光标的位置找到需要编辑的线。方法是计算点到直线的距离。

三、面的捕捉

    面的捕捉实际上就是判断光标点S(x,y)是否在多边形内,若在多边形内则说明捕捉到。判断点是否在多边形内的算法主要有垂线法或转角法。

四、图形编辑的数据组织

    GIS中的空间数据通常是分层存取的,通常可分为控制点、独立地物、居民地、境界、水系、地貌、植被等。在进行图形编辑时,需确定在什么数据层(或哪几个数据层)进行操作,以便对选定数据层的数据进行编辑。

    图形编辑是纠正数据采集错误的重要手段,其基本的功能要求是:具有友好的人机界面,即操作灵活、易于理解、响应迅速等;具有对几何数据和属性编码的修改功能,如点、线、面的增加、删除、修改等;具有分层显示和窗口功能,便于用户的使用。图形编辑的关键是点、线、面的捕捉,即如何根据光标的位置找到需要编辑的要素,以及图形编辑的数据组织。下面分别作简要介绍。

一、点的捕捉

        

图4-2-1                           图4-2-2

    图形编辑是在计算机屏幕上进行的,因此首先应把图幅的坐标转换为当前屏幕状态的坐标系和比例尺。设光标点为S(x,y),图幅上(图4-2-1)某一点状要素的坐标为A(X,Y),则可设一捕捉半径D(通常为3~5个象素,这主要由屏幕的分辩率和屏幕的尺寸决定)。若S和A的距离d小于D则认为捕捉成功,即认为找到的点是A,否则失败,继续搜索其它点。d可由下式计算:

             

    但是由于在计算d时需进行乘方运算,所以影响了搜索的速度,因此,把距离d的计算改为:

 

    即把捕捉范围由圆改为矩形,这可大大加快搜索速度,如图4-2-2所示。

二、线的捕捉

    设光标点坐标为S(x,y),D为捕捉半径,线的坐标为(x1,y1),(x2,y2),…(xn,yn)。通过计算S到该线的每个直线段的距离di(如图4-2-3所示),若min(d1,d2,…dn-1)<D,则认为光标S捕捉到了该条线,否则为未捕捉到。在实际的捕捉中,可每计算一个距离di就进行一次比较,若di<D,则捕捉成功,不需再进行下面直线段到点S的距离计算了。

 

图4-2-3                            图4-2-4

    为了加快线捕捉的速度,可以把不可能被光标捕捉到的线以简单算法去除。如图4-2-4,对一条线可求出其最大最小坐标值Xmin,Ymin,Xmax,Ymax,对由此构成的矩形再向外扩D的距离,若光标点S落在该矩形内,才可能捕捉到该条线,因而通过简单的比较运算就可去除大量的不可能捕捉到的情况。

    对于线段与光标点也应该采用类似的方法处理。即在对一个线段进行捕捉时,应先检查光标点是否可能捕捉到该线段。即对由线段两端点组成的矩形再往外扩D的距离,构成新的矩形,若S落在该矩形内,才计算点到该直线段的距离,否则应放弃该直线段,而取下一直线段继续搜索。

       

图4-2-5

    如图4-2-5所示,点S(x,y)到直线段(x1,y1),(x2,y2)的距离d的计算公式为:

 

    可以看出计算量较大,速度较慢,因此可按如下方法计算。即从S(x,y)向线段(x1,y1)(x2,y2)作水平和垂直方向的射线,取dx,dy的最小值作为S点到该线段的近似距离。由此可大大减小运算量,提高搜索速度。计算方法为:

三、面的捕捉

    面的捕捉实际上就是判断光标点S(x,y)是否在多边形内,若在多边形内则说明捕捉到。判断点是否在多边形内的算法主要有垂线法或转角法,这里介绍垂线法。

          

                 图4-2-6                                  图4-2-7

    垂线法的基本思想是从光标点引垂线(实际上可以是任意方向的射线),计算与多边形的交点个数。若交点个数为奇数则说明该点在多边形内;若交点个数为偶数,则该点在多边形外(图4-2-6)。

            

           图4-2-8

    为了加速搜索速度,可先找出该多边形的外接矩形,即由该多边形的最大最小坐标值构成的矩形,如图4-2-7。若光标点落在该矩形中,才有可能捕捉到该面,否则放弃对该多边形的进一步计算和判断,即不需进行作垂线并求交点个数的复杂运算。通过这一步骤,可去除大量不可能捕捉的情况,大大减少了运算量,提高了系统的响应速度。

    在计算垂线与多边形的交点个数时,并不需要每次都对每一线段进行交点坐标的具体计算。对不可能有交点的线段应通过简单的坐标比较迅速去除。对图4-2-8所示的情况,多边形的边分别为1~8,而其中只有第3、7条边可能与S所引的垂直方向的射线相交。即若直线段为(x1,y1)(x2,y2)时,若x1≤x≤x2,或x2≤x≤x1时才有可能与垂线相交,这样就可不对1,2,4,5,6,8边进行继续的交点判断了。

图4-2-9  

                                
    对于3、7边的情况,若y>y1且y>y2时,必然与S点所作的垂线相交(如边7);若y<y1且y<y2时,必然不与S点所作的垂线相交。这样就可不必进行交点坐标的计算就能判断出是否有交点了。 

    对于y1≤y≤y2或y2≤y≤y1,且x1≤x≤x2或x2≤x≤x1时,如图4-2-9。这时可求出铅垂线与直线段的交点(x,y′),若y′<y则是交点;若y′>y,则不是交点;若y′=y则交点在线上,即光标在多边形的边上。

    以上都是一些提高面捕捉算法的常用技术。

四、图形编辑的数据组织

    GIS中的空间数据通常是分层存取的,通常可分为控制点、独立地物、居民地、境界、水系、地貌、植被等。在进行图形编辑时,需确定在什么数据层(或哪几个数据层)进行操作,以便对选定数据层的数据进行编辑。

    无论空间数据库是用数据库管理还是用文件管理,都必须要为图形编辑的实现提供空间数据的读取、存储等基本功能。

    由于GIS空间数据所涉及的地理区域较大,空间数据量是海量,因而每次编辑都针对全部空间数据进行是不现实的,因为这样的查询和编辑操作所需的时间是不能忍受的,所以,都需要采用建索引的方法,索引通常是分层建立的,主要方法有四叉树索引和格网索引。

建立了索引文件后的图形编辑,不仅要修改原始的空间数据,而且要修改相关的索引文件。

    在对空间数据进行删除操作时,通常不直接删除空间数据库中的相关数据,而只是在相应的索引文件中作一标志,只有在重新整理数据库时,才进行真正的删除。 

    在对建立了拓扑关系的矢量数据进行图形编辑时,往往会破坏原有的拓扑关系,这时需要拓扑重构。也可以先对图形编辑所涉及的局部区域进行拓扑重构,然后与原区域进行相关处理,以获取全图的拓扑关系数据。