GIS中拓扑检查和错误修改
1 拓扑概念
1.1 拓扑Topology含义
拓扑英文Topology,是空间数据的位置关系,如一条线的走向、面节点顺序、面不能重叠、线不能交叉,线是面的边界等等位置关系,都是拓扑。在GIS中,拓扑是非常重要的概念。GIS的第一大问题是坐标系问题,第二大问题是拓扑问题。
1.2 拓扑主要作用
拓扑主要做空间检查,很多项目,过质量检查软件,最主要的检查就是拓扑检查,检查的目的是保证数据质量 ,但拓扑会处理数据。
总结:由于拓扑会修改,所以拓扑检查前一定要备份数据。
正确观念:做数据,尽可能保证数据没有拓扑错误;而不是先做数据,反正有拓扑检查,检查出错误,后修改,这种指导思想就是错误的。
面积计算,长度计算,出各种成果前一定要保证数据没有拓扑错误。
拓扑错误也是常见错误之一,初学者几个常见错误如下:
1.坐标系问题:数据要有正确的坐标系,地图框(场景)的坐标系和数据的坐标系最好一致,最好使用投影坐标系。坐标系问题是GIS的第一大问题,很多问题都是坐标系错误和使用不当造成的。
2.拓扑问题:有拓扑错误,计算面积、长度有错误,各种空间分析无法进行,或者分析结果是错误的。拓扑问题是GIS的第二大问题,因为拓扑直接影响数据质量,很多问题都是因为数据有拓扑错误造成的。
3.版本问题:软件有版本,地理数据库有版本,工程有版本,工具箱TBX文件有版本,TIN数据有版本。
1.3 拓扑的几个基本概念
1.拓扑容差(Tolerance):拓扑容差是要素折点之间的最小距离,落在拓扑容差范围内的所有折点被定义为重合点,并被捕捉在一起,大于拓扑容差检查出来是错误,小于等于拓扑容差,数据会自动修改修正。由于XY 容差也是 XY 坐标之间所允许的最小距离,如果两个坐标之间的距离在此范围内,它们会被视为同一坐标,所以一般拓扑容差就是XY容差,不做任何修改,一旦修改拓扑容差,数据实际的XY容差也会被修改,数据质量降低。
2.脏区(Dirty Area):在初始拓扑创建后,如果数据进行了修改,或者拓扑规则进行了修改,会产生新的变化,这种变化叫脏区。所以拓扑规则修改了,或数据修改了,修改后需要保存数据,同时一定要验证拓扑。当修改完所有拓扑错误后,建议马上删除拓扑,因为拓扑会锁定数据;有拓扑时,造成数据无法重命名、移动位置和删除,同时会产生其他问题,有拓扑时,很多都不正常使用。
3.拓扑规则(Topology Rule):定义地理数据库中一个给定要素内或两个不同要素类之间所许可的要素关系指令,一个拓扑最少一个拓扑规则。
4.要素等级:等级越高,移动要素越少。最高等级为1,最低级别为50;当多个要素拓扑检查时,等级低向等级高的靠拢,此时修改等级低的数据。当有多个数据,由要素等级确定修改哪个数据。
1.4 建拓扑的要求
ArcGIS拓扑需要基于Geodatabase如文件地理数据库GDB、多用户的SDE数据,SHP文件不能直接进行拓扑检查的,只有导入到地理数据库中要素数据集下,才能进行拓扑检查。要进行拓扑检查,首先要建立要素数据集(Feature Dataset),把需要检查的数据放在同一要素数据集下。如果检查数据和要素数据集坐标信息(坐标系统、XY容差,坐标范围)一致时,可以直接把要素类拖到数据集下面就可以;如需要拖出数据集,有拓扑时要先删除拓扑。
注意:一个拓扑中可以有多个要素类数据,但一个要素类数据只能参加一个拓扑,不能参加多个拓扑。一个拓扑只能用于同一个要素数据集内检查,不能用于多个数据集中进行。拓扑经常会锁定数据,当有拓扑时,数据重命名和删除,移动位置都无法操作。我们进行拓扑检查时,修改完所有错误后,请把拓扑删除。
2 常见拓扑规则介绍
拓扑规则介绍,根据要素的数量,分为两大类:
1、一个要素拓扑检查:可能是点、线、面一种,数据内部检查;
2、两个要素之间的拓扑检查:数据类型可能不同,有点和点、点和线、点和面、线和面、线和线、面和面六种类型。两个面层:检查前“面”,或是检查后“面”,又分共12种。拓扑检查前提必须在同一个要素数据集下,放在同一个要素数据集下,数据基础(坐标系统、XY容差,坐标范围)一致 。
注意:如果需要做两个要素之间的拓扑检查,必须保证一个要素本身没有拓扑错误,如要检查线是面的边界,先要检查线本身是否悬挂,面本身是否有重叠。
2.1 一个要素的拓扑规则
1.点要素的重复检查,如界址点不能重复,规则为不能相交,重复是特殊的相交。
2.线要素的拓扑错误,最主要两个拓扑规则:
1) 不能有悬挂点:要求线要素的两个端点必须都接触到同一图层的线。没有连接到另一条线的端点称为悬挂点。线要素生成面要素时,就是多个线要素之间闭合,没有悬挂点错误,如行政区界线要构成行政区时,必须先检查线“不能有悬挂点”,不然有些地方将会少构造面或无法构造面。
2)不能相交:同一图层中的线要素不能彼此相交或重叠。线可以共享端点。此规则适用于决不应彼此交叉的等值线,或只能在端点相交的线(如街道和交叉路口)。
3.面层拓扑错误也主要有两个规则
1) 不能重叠:要求面的内部不重叠。面可以共享边线或折点。当某区域不能属于两个或多个面时,使用此规则。面重叠时,计算面积,重叠地方计算两次,面积就多算了。
2) 不能有空隙:此规则要求单一面之中或两个相邻面之间没有空白。所有面必须组成一个连续表面。所有面合并后最外面始终存在这个缝隙错误,可以忽略这个错误或将其标记为异常。此规则用于必须完全覆盖某个区域的数据。例如:地类数据不能包含空隙,这些面必须覆盖整个区域;建筑物可以存在缝隙。
2.2 两个要素类之间的拓扑检查规则
注意:在检查两个要素之间的拓扑错误前,先检查一个要素的拓扑错误,如表所示。
*两个要素类的拓扑规则
要素类1 | 要素类2 | 规则 | 含义 |
点 | 线 | 必须被其他要素的端点覆盖 | 要求一个要素类中的点必须被另一要素类中线的端点覆盖,如界址点(JZD)必须是界址线(JZX)的端点 |
线 | 点 | 端点必须被其他要素覆盖 | 要求线要素的端点必须被另一要素类中的点要素覆盖,如界址线(JZX)的端点必须是界址点(JZD) |
线 | 面 | 必须被其他要素的边界覆盖: | 要求线被面要素的边界覆盖。如界址线(JZX)必须与地块(DK)面要素边界线重合。 |
面 | 线 | 边界必须被其他要素覆盖 | 要求面要素的边界必须被另一要素类中的线覆盖。此规则在区域要素需要具有标记区域边界的线要素时使用。例如,宗地或者地块(DK)必须是界址线(JZX)覆盖 |
面 | 面 | 必须被其他要素覆盖 | 要求一个要素类的面必须包含于另一个要素类的面中。如地块(DK)不能跨行政区(XZQ),类似很多:村级行政区不能跨乡镇,乡级行政区不能跨县,县级行政区不能跨省。 |
文章授权转载:gisoracle
- END -
李德仁院士:关于推进实景三维中国建设的若干思考
全球矢量任意下载!路网、建筑、水系...
自动化和半自动矢量化提取地物矢量轮廓
7.72GB ARCGIS ERDAS ENVI干货教程网盘下载