6.2.1. 图形坐标变换 #
在地图录入完毕后,经常需要进行投影变换,得到经纬度参照系下的地图。 对各种投影进行坐标变换的原因主要是输入时地图是一种投影,而输出的地图产物是另外一种投影。 进行投影变换有两种方式,一种是利用多项式拟合,类似于图像几何纠正; 另一种是直接应用投影变换公式进行变换。 在投影变换过程中,有以下三种基本的操作:平移、旋转和缩放。 1)平移 平移是将图形的一部分或者整体移动到笛卡尔坐标系中另外的位置(图6-11-a),其变换公式如下: X’=X+T:sub:`x` Y’=Y+T:sub:`y` 2)缩放 缩放操作可以用于输出大小不同的图形(图6-11-b),其公式为: X’=XS:sub:`x` Y’=YS:sub:`y` 3)旋转 在地图投影变换中,经常要应用旋转操作(图6-11-c),实现旋转操作要用到三角函数, 假定顺时针旋转角度为θ,其公式为: X’=Xcosθ+Ysinθ Y’=-Xsinθ+Ycosθ 平移 缩放 图形旋转 图形坐标变换 如果综合考虑图形的平移、旋转和缩放,则其坐标变换式如下: 上式是一个正交变换,其更为一般的形式是: 后者被称为二维的仿射变换(AffineTransformation), 仿射变换在不同的方向可以有不同的压缩和扩张,可以将球变为椭球,将正方形变为平行四边形(图6-12)。 图 6.8 仿射变换 # 基本坐标变换 #



仿射变换(Affine Tranformation) #

6.2.2. 图形拼接 #
在对底图进行数字化以后,由于图幅比较大或者使用小型数字化仪时,难以将研究区域的底图以整幅的形式来完成, 这是需要将整个图幅划分成几部分分别输入。 在所有部分都输入完毕并进行拼接时,常常会有边界不一致的情况,需要进行边缘匹配处理(图6-13)。 边缘匹配处理,类似于下面提及的悬挂节点处理,可以由计算机自动完成,或者辅助以手工半自动完成。
除了图幅尺寸的原因,在GIS实际应用中,由于经常要输入标准分幅的地形图,也需要在输入后进行拼接处理, 这时,一般需要先进行投影变换,通常的做法是从地形图使用的高斯——克吕格投影转换到经纬度坐标系中, 然后再进行拼接。 图 6.9 图幅拼接。拼接前;拼接中的边缘不匹配;调整后的拼接结果 # 
6.2.3. 拓扑生成 #
在图形数字化——无论是手扶跟踪数字化还是扫描矢量化——完成后,对于大多数地图需要建立拓扑, 以正确判别地物之间的拓扑关系。 在GIS数据管理中,拓扑关系可以定义以下内容:
1)区域 ,如果多边形数据DIME数据模型,每个多边形可以用一组封闭的线来表示,而不需要记录封闭线上的所有点,避免两次记录相邻多边形的公共边界,这样减少了数据冗余 。
2)邻接性 ,另一种可以用拓扑描述的属性是多边形之间的相互邻接性。
3)连通性 ,连通性是指对弧段连接的判别,连通性的建立和表现是 网络分析 的基础。 在建立拓扑关系的过程中,一些在数字化输入过程中的错误需要被改正,否则, 建立的拓扑关系将不能正确地反映地物之间的关系。 ESRI定义了以下判断录入图形是否正确的六个准则,可以帮助发现拓扑错误。 所有录入的实体都能够表现出来; 没有输入额外的实体; 所有的实体都在正确的位置上,并且其形状和大小正确; 所有具有连接关系的实体都已经连上; 所有的多边形都有且只有一个标志点以识别它们; 所有的实体都在边界之内 上述的准则,特别是第五和第六条,只是针对ESRI的ARC/INFO软件而言, 其它的GIS软件由于具体实现的不同,可能会有差异。 由于地图数字化,特别是手扶跟踪数字化,是一件耗时、烦杂的人力劳动,在数字化过程中的错误几乎是不可避免的, 造成数字化错误的具体原因包括: 遗漏某些实体; 某些实体重复录入,由于地图信息是二维分布的,并且信息量一般很大,所以要准确记录哪些实体已经录入,哪些实体尚未录入是困难的,这就容易造成重复录入和遗漏; 定位的不准确,数字化仪分辨率可以造成定位误差,但是人的因素是位置不准确的主要原因,如手扶跟踪数字化过程中手的抖动,两次录入之间图纸的移动都可以使位置不准确;更重要的,在手扶跟踪数字化过程中,难以实现完全精确的定位,例如在水系的录入中(图6-14),将支流的终点恰好录入在干流上基本上是不可能的(图6-14-a),更常见的是图(b)和(c)所示的两种情况。 图 6.10 数字化错误——不及和过头 # 在数字化后的地图上,错误的具体表现形式有: 1)伪节点(PseudoNode) ,伪节点使一条完整的线变成两段(图15),造成伪节点的原因常常是没有一次录入完毕一条线。 图 6.11 伪节点 # 2)悬挂节点(DanglingNode) ,如果一个节点只与一条线相连接,那么该节点称为悬挂节点,悬挂节点有多边形不封闭(图6-16-a)、不及和过头(图6-14-b,图6-14-c),节点不重合(图6-16-b)等几种情形。 多边形不封闭;节点不重合 图 6.12 悬挂节点的两种情形 # 3)“碎屑”多边形或“条带”多边形(Sliver Polygon) 条带多边形(图6-17)一般由于重复录入引起,由于前后两次录入同一条线的位置不可能完全一致, 造成了“碎屑”多边形。 另外,由于用不同比例尺的地图进行数据更新,也可能产生“碎屑”多边形。 图 6.13 碎屑多边形 # 4)不正规的多边形(Weird Polygon) 不正规的多边形(图6-18)是由于输入线时,点的次序倒置或者位置不准确引起的。 在进行拓扑生成时,同样会产生“碎屑”多边形。 图 6.14 不正规的多边形 # 上述的错误,一般会在建立拓扑的过程中发现,需要进行编辑修改。 一些错误,如悬挂节点,可以在编辑的同时,由软件自动修改,通常的实现办法是设置一个“捕获距离”, 当节点之间、或者节点与线之间的距离小于此数值后,即自动连接; 而另外的错误需要进行手工编辑修改。 在图形修改完毕之后,就意味着可以建立正确的拓扑关系,拓扑关系可以由计算机自动生成, 目前大多数GIS软件也都提供了完善的拓扑功能; 但是在某些情况下,需要对计算机创建的拓扑关系进行手工修改,典型的例子是网络连通性。 正如拓扑的定义所描述的,建立拓扑关系时只需要关注实体之间的连接、相邻关系, 而节点的位置、弧段的具体形状等非拓扑属性则不影响拓扑的建立过程。 1)多边形拓扑关系的建立 如果使用DIME或者类似的编码模型,多边形拓扑关系的表达需要描述以下实体之间的关系: 多边形的组成弧段; 弧段左右两侧的多边形,弧段两端的节点; 节点相连的弧段。 多边形拓扑的建立过程实际上就是确定上述的关系。 具体的拓扑建立过程与数据结构有关,但是其基本原理是一致的,下面简述多边形拓扑建立过程(图6-19)。 图6-19中共有4个节点,以A、B、C、D表示; 6条弧段,用数字表示; 以及I、II、III三个多边形(图6-19-a)。 首先定义以下概念: 由于弧段是有方向的,算法中将弧段 A 的起始节点称为首节点 N:sub:`s`(A) ,而终止节点为尾节点 N:sub:`E`(A) ; 考虑到弧段的方向性,沿弧段前进方向,将其相邻的多边形分别定义为左多边形和右多边形 P:sub:`L`(A) 和 P:sub:`R`(A) 。 在建立拓扑之前,首先将所有弧段的左右多边形(在实现中,可以用多边形的编码表示)都设置为空; 然后对每个节点计算与其相连弧段的在连接处的角度,并进行排序(图6-19-b)(注意, 这个排序是循环的)。 建立拓扑的算法如下: 得到第一条弧段A,并设置为当前弧段; 判断 P:sub:`L`(A) 和 P:sub:`R`(A) 是否为空。如果都非空,转到第一步,当所有弧段处理完毕后,算法结束; 如果左多边形为空,则创建一个新的多边形 P ,多边形的第一条弧段为当前弧段,并设置 P:sub:`L`(A)=P ,设置搜寻起始节点为 N:sub:`s`(A) ,搜寻当前节点为 N:sub:`E`(A) 。如果右多边形为空,则创建一个新的多边形 P ,多边形的第一条弧段为当前弧段,并设置 P:sub:`R`(A)=P ,设置搜寻起始节点 N:sub:`0`=N:sub:`E`(A) ,搜寻当前节点 N:sub:`C`=N:sub:`S`(A) 。 判断 N:sub:`0` 和 N:sub:`C` 是否相等,如果是,则多边形所有弧段都已经找到,转到第一步。 检查与当前节点相连接的、已经排列好的弧段序列,将当前弧段的下一条弧段 A' 作为多边形的第二条弧段。 如果 N:sub:`C`=N:sub:`S`(A') ,设置 P:sub:`L`(A')=P , N:sub:`C`=N:sub:`E`(A) ;如果 N:sub:`C`=N:sub:`E`(A') ,设置 P:sub:`R`(A')=P , N:sub:`C`=N:sub:`S`(A) ,转到第四步。 如图6-19-c所示,如果从弧段4开始搜寻,找到节点C后,根据弧段的排序,下一条弧段是2; 然后找到节点A,弧段1,整个搜寻结束,建立多边形I,其组成弧段为4、2、1。 按照这种算法,生成多边形的弧段从多边形内部看,是逆时针排列的。 如果节点弧段排序为顺时针, 则算法中用 P:sub:`L`(A) 代替 P:sub:`R`(A) , 用 P:sub:`R`(A) 代替 P:sub:`L`(A) , 生成的多边形弧段是顺时针排列的。 图 6.15 多边形拓扑的建立过程 # 多边形拓扑的建立,要注意多边形带“岛”的情况,按照上述算法,对于带“岛”的多边形,或者称为环, 其包含的弧段构成了多个闭合曲线,并且“岛”的弧段排序是顺时针的(图6-20)(实际上, 从环状多边形内部看,它仍然是逆时针的)。 图 6.16 带“岛”的多边形建立拓扑的结果。 # 2)网络拓扑关系的建立 在输入道路、水系、管网、通信线路等信息时,为了进行流量以及连通性分析,需要确定线实体之间的连接关系。 网络拓扑关系的建立包括确定节点与连接线之间的关系,这个工作可以由计算机自动完成,但是在一些情况中, 如道路交通应用中,一些道路虽然在平面上相交,但是实际上并不连通,如立交桥,这是需要手工修改, 将连通的节点删除(图6-21)。 图 6.17 节点的编辑,将实际不连通的线路形成的节点删除 # 图形修改 #





建立拓扑关系 #


