拓扑关系是地理对象在空间位置上的相互关系,如节点与线、线与面之间的连接关系,空间实体之间的拓扑关系是GIS进行空间分析和决策的基础之一,是否具有高效、可靠的拓扑处理功能已成为衡量GIS软件的重要标准。本专题将简要介绍如何使用SuperMapGIS 5 桌面产品中的拓扑处理功能。
1. 什么情况下需要拓扑处理
空间数据在采集和编辑过程中,常会不可避免地出现一些数据错误。例如,同一个节点或同一条线被数字化了两次;相邻的面状几何对象在采集过程中出现了裂缝或者相交;多边形不封闭;多边形的边为悬线等等,导致假节点、冗余节点、悬线、重复线等错误数据的产生(如下图),这些数据错误往往量大,而且比较隐蔽,肉眼不容易识别出来,通过手工方法也不易去除,导致采集的空间数据之间的拓扑关系和实际地物之间的拓扑关系不符合,以致影响后续的数据处理和分析工作,影响数据的质量和可用性。因此,需要进行拓扑处理消除这些冗余和错误的数据。
2. SuperMap GIS 5 桌面产品具有的拓扑处理功能
SuperMap GIS 5 桌面产品中的拓扑处理包括如下功能:
(1)弧段求交
建立拓扑关系,首先要进行弧段求交计算,并根据交点按顺序把线对象分解成多个线对象,如下图所示。一般而言,在二维坐标系统中凡是与其他线有交点的线对象都需要从交点处打断,实际应用中情况可能有所不同。比如一条铁路横跨一条公路,从二维坐标上来看是相交的两个线对象,但是事实上不能在交点处被分解。这时候需要做一些处理,将两个线对象分别赋予一个可以代表二者在Z轴方向上相对位置的属性,可以是海拔高度值,也可以是一个代表相对位置的数值。如果两个线对象的高度属性值不等,则不予计算交点。
(2)去除冗余点
如果在折线上某点附近存在两个点号不同的顶点,且两个顶点之间的距离小于或等于Fuzzy容限,则这两个顶点之一就构成为冗余顶点。识别并去掉冗余顶点的操作被称为去冗余点。注意去冗余点与合并假节点的相似处与不同点。
(3)邻近节点合并
两两之间距离小于指定容限(FuzzyTolerance)的两个或者多个节点被称为临近点。识别并合并临近点为一个点的操作被称为合并临近点。合并临近点操作有时会得到一个假节点,有时会得到一个真节点。
(4)去除重复线
如果两个线对象包括节点在内的全部顶点两两重叠(坐标相同),则称为重合线对象。重合线对象的判断不考虑方向。重合线对象往往由部分重合的两个线对象相交后产生。为避免建立拓扑多边形时产生面积为零的多边形对象,重合的线对象只保留其中一个,多余的应删除。
(5)合并假节点
合并两个假节点为一个真正节点的操作称为合并假节点,该操作得到的结果可能是一个顶点(如果假节点处的两条线段明显不在一条直线上),也可能是一个普通点(如果假节点处的两条线段是在一条直线上)。假节点在没有实际意义的时候可以去掉,并把与该假节点相连的两个线对象合并为一个。系统假节点合并功能可以合并当前数据集中所有的假节点。
(6)去除悬线
悬线按照悬节点个数可以分为两种:单悬节点悬线和双悬节点悬线;按照长度则可以分为:短悬线和长悬线。短悬线有时也称为过头线,短悬线指长度小于指定Dangle容限的悬线;在一定容许范围内(这个长度上的范围就是Dangle容限),过头线可以被去掉,这种操作被称为去短悬线;长悬线是指长度大于指定Dangle容限,且沿悬节点方向延伸指定NodeSnap容限长度后可与其他线对象相交的悬线。长悬线可以被延长到另一条线上去(到线的中间或节点处),这种操作被称为长悬线延伸。
注意:长悬线延伸到一个临近节点上时会被认为是要做合并临近点操作。系统可以批量删除短悬线或延伸长悬线。
3. SuperMap GIS 5 桌面产品中如何进行拓扑处理
(1)在SuperMap GIS 5 桌面产品中使用拓扑处理的步骤如下:
1)选择菜单"数据集->线数据集拓扑处理…",弹出"线数据集拓扑处理"对话框;
2)在对话框中选择源数据源和要进行拓扑处理的线数据集;
3)在"拓扑错误处理选项"框中选择要进行的拓扑处理选项;
4)点击"高级"按钮,弹出"拓扑处理高级参数设置"对话框,设置拓扑容限值;
这里一共有6种容限设置:
如果点击"默认"按钮,那么系统会自动算出各种容限值,也可以根据自己的需要填写容限值;点击"确定"按钮,保存设置,回到"数据集"对话框。
5)点击"确定"按钮,即可进行拓扑处理。
(2)拓扑处理检查
系统对线数据集进行拓扑处理后,可以生成一个SMTOPOERROR字段来记录生成的拓扑错误信息。字段中的值只有四种,决定了拓扑错误信息:"0"代表没有错误;"1"代表线段的起点是悬节点;"2"代表线段的终点是悬节点;"3"代表线段的起点和终点都是悬节点。
如果想更直观的从地图上看到拓扑错误,可以对SMTOPOERROR字段作单值专题图来实现(如下图)。
在实际应用中,通过拓扑错误专题图的制作,可以突出显示不同拓扑错误关系的数据,以便根据实际情况进行手工调整。
(3)拓扑处理注意事项:
1)可以根据实际数据的情况和使用目的,选择不同的拓扑处理选项组合;
2)如果需要进行拓扑错误检查,必须选择弧段求交,弧段求交是进行后续拓扑处理的基础。
3)线数据集经过拓扑处理后,原来数据集的线对象将会在各线对象交点处被打断,而生成新的线对象,如用户还需继续使用原来的线数据集,可以在拓扑处理前对线数据集先进行备份,以保护原数据集;
4)弧段求交操作得到的是一个真正的节点,而合并临近点操作有时却得到一个假节点,因此合并临近点操作后可能还要继续做合并假节点操作;
5)线数据集必须关闭才能进行拓扑处理;
6)拓扑处理的结果与拓扑容限大小的设置有关。
4 .拓扑构建
(1)构建网络数据模型
城市交通、地下管网(含给排水),以及电力、通讯、有线电视等部门在采用GIS进行相应的系统分析和维护过程中,经常要涉及到网状数据,这些网状数据是由点和线组成的,相互之间有复杂的空间拓扑关系。比如,城市交通中,相交的街道和其组成的十字路口之间具有连通的关系;给排水管道中,阀门和管道之间的关系;电力管网中,高压线和电杆之间的关系。
这些网络数据在GIS中需要通过构建网络模型来进行分析。这种网络模型需要构建节点和简单线之间的空间拓扑关系,包括节点与节点之间的关系、节点与线之间的关系,线与线之间的关系等。
系统提供了将线数据集拓扑生成网络数据集,通过网络数据集生成和维护网络拓扑关系。
具体实现步骤:
1)打开线数据集,显示在地图窗口中;
2)选择菜单"数据集->线数据集拓扑处理…",弹出"线数据集拓扑处理"对话框;
3)选择待处理的线数据集;在创建拓扑参数项里选择创建网络数据集,并为其命名;在错误处理选项中选择要进行哪些拓扑错误处理;
4)点击"高级"按钮,在弹出的"拓扑处理高级参数设置"对话框中设置各种拓扑容限;
5)点击"确定"按钮,即可生成网络数据集。
上图为生成的网络数据集,具有以下特点:
1)网络数据集由简单线和节点所组成,相互之间具有复杂的空间拓扑关系;
2)网络数据通过新增的简单线起始节点字段FNODE和终止节点字段TNODE的数值来描述资源流动的方向性;
3)网络数据通过新增的正向阻抗系数字段ResistanceA和反向阻抗系数字段ResistanceB来描述资源流动的通畅性
4)在构建网络数据后,原线数据集的所有字段将被复制到新生成的网络数据集中;
5)进行拓扑处理时的错误类型被记录在新增的SMTOPOERROR字段中。
注意:
1)弧段求交是进行其他拓扑处理的基础,为必选项;
2)生成的网络数据集会将原始的线数据集中相交的地方打断生成节点,而原始的线数据集也将被破坏,因此建议在构建网络数据集之前,将原始的线数据集备份;
3)在进行构建网络数据时,用户应该首先进行弧段求交,因为弧段求交是其他拓扑关系处理的基础和前提,只有这一步完成后,其他步骤才能进行。除了弧段求交必须首先完成外,其他拓扑处理运算的顺序则可以根据需要任意颠倒,但必须是在弧段求交的基础上进行。
(2)构建拓扑多边形
将线数据进行拓扑处理构建面数据集,这是常用的数据处理功能。
具体实现步骤:
1)选择菜单"数据集->线数据集拓扑处理…",弹出"线数据集拓扑处理"对话框;
2)选择待处理的线数据集;在创建拓扑参数项里选择创建面数据集,并为其命名;在"错误处理选项"中选择要进行的拓扑处理选项框。
4)点击"高级"按钮,在弹出的"拓扑处理高级参数设置"对话框中设置各种拓扑容限;
5)点击"确定"按钮,即可生成拓扑多边形。
下图为拓扑处理的结果。
5.拓扑关系的维护
SuperMap中线拓扑(网络数据集)与面拓扑(拓扑构面)的拓扑关系都是实时维护的,也就是说:构建拓扑后,进行拓扑编辑,拓扑关系会随着更新。