




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二十一章 拓扑规则1 拓扑规则简介实际应用时,往往需要在空间数据各要素之间保持某种特定的关系。比如:行政区是多边形,不能有相互重叠区域,线状道路之间不能有重叠线段、公共汽车站必须在公共交通线路上,等等。在 ArcGIS 的 Geodatabase 中可以增加一系列的拓扑规则,在要素之间建立起空间关系,还可以对这些规则进行维护。为了便 于理解拓扑规则,先解释几个专用术语:相交(Intersect):线和线相交,并且只有一点重合(该点不是端点),称为相交。接触(Touch):某线段的端点和自身或其他线段有重合,称为接触。悬点(Dangle Node):线段的端点悬空,没有和其他任何线段连接,这个端点称为悬点。伪结点(Pseudo Node):二个端点相互接触,连接成一个端点,称为伪结点。拓扑规则的种类可以按点、线、面来分。以下介绍 ArcGIS 的主要拓扑规则, 每条规则用一幅图来说明,图的左半部分是符合规则的例子,右半部分则是违反规则的例子。11 点拓扑规则举例规则一:Must be covered by boundary of,点必须在多边形边界上。例如有一 个点要素类代表公共汽车站,另有一个多边形要素类代表地块,可制定如下规则: 公共汽车站必须位于地块的边界上。另一个例子是:行政界碑必须落在行政边界线上。不满足该规则的点要素将被标记为错误,修复的方法是删除或移动错误点(移动也可理解为删除后立即添加)。图 21-1 点拓扑规则一规则二:Must be covered by endpoint of,点要素必须处于线要素的端点上。 例如:阀门为点要素类,必须位于线要素类输水管的尽端。不满足该规则的点要素将被标记为错误,修复的方法是删除或移动错误点。图 21-2 点拓扑规则二规则三:Point must be covered by line,点要素必须在线要素之上。例如点要 素代表窨井用,线要素代表排水管,窨井的必须位于排水管上。另一个例子是: 公交汽车站(点要素类)必须在公交线路(线要素类)上。不满足该规则的点要 素将被标记为错误,修复的方法是删除或移动错误点。图 21-3 点拓扑规则三 规则四:Must be properly inside polygons,点要素必须落在多边形要素内(在边线上不算)。比如省界为多边形,省内的城市为点,城市一定要落在省界内。另 一个例子是:代表住宅地址的点要素必须被居住用地多边形包含。不满足该规则的点要素将被标记为错误,修复的方法是删除或移动错误点。图 21-4 点拓扑规则四 注意:点要素本身是不能建立拓扑规则的,它必须和线要素或多边形要素一起才能建立拓扑规则。12 多边形拓扑规则举例规则一:Must not overlap,同一多边形类的要素之间不能重叠(几个多边形 共享一个点或共享一条边界不算重叠)。例如规划地块之间不能有重叠,行政区不能有重叠。重叠的部分将产生多边形错误。修改错误的方法有三种,一是删除重叠部分,留出空白;二是将重叠部分合并到某一个多边形;三是在重叠部分新增 多边形,并删除原来的重叠部分。图 21-5 多边形拓扑规则一 规则二:Must not have gaps,多边形之间不能有间隙。比如规定表示连续分布的地形高程多边形之间不能有空隙。不满足规则的地方将产生线错误,表示空 隙多边形,修改的方法是调整原来的边界,或添加新的多边形。图 21-6 多边形拓扑规则二规则三:Contain point,多边形内必须包含点要素(边界上的点不算)。例如 规定居住用地内至少有一个地址点。不包含点的多边形将被视为错误,修改的方 法是:在错误多边形内增加一个点要素,或者将没有内部点的多边形删除。图 21-8 多边形拓扑规则三图 21-9 多边形拓扑规则四 规则四:Boundary must be covered by,多边形的边线必须与线要素中的线段重合。例如交通调查小区的边界必须和道路线要素类重合。违反规则的地方将产 生线错误,修改的方法可以是调整线段,也可调整多边形。规则五:Must be covered by feature class of,多边形要素中的每一个多边形都被另一个要素类中的多边形覆盖。例如城市规划区必须在若干行政区划内,工业建筑多边形必须在规划的工业用地内。违反规则的地方将产生多边形错误,修改的方法是在重叠部分增加新的多边形或调整错误的多边形。图 21-10 多边形拓扑规则五规则六:Must be covered by,每个多边形要素都要被另一个要素类中的单个多边形覆盖。例如建筑物多边形必须在地块多边形内,一个建筑多边形不能跨越 多个地块。不满足规则的地方将产生多边形错误,修改的方法是:调整第一类多 边形,使他们不要和第二类有交叉,或者扩大第二个要素类中的某些多边形,使 他们能覆盖第一类中的错误多边形。图 21-11 多边形拓扑规则六规则七:must not overlap with,一个要素类中的多边形不能与另一个要素类中的多边形重叠。虽然和规则一相似,都是说不能重叠,但是这里是指两个多边 形要素类(Feature Class)之间的关系。比如一个要素类表示湖泊,另一个要素类 表示陆地,他们是相互独立的类,显然它们应该满足该规则。重叠的部分将产生多边形错误,修改方法同规则一。图 21-12 多边形拓扑规则七规则八:Must cover each other,两个要素类中的多边形要相互满覆盖,外边界要一致。例如土壤层范围和地质层范围应一致。违反规则的地方将产生多边形 错误,修改错误的方法是在重叠不到的地方增加多边形,或者调整、删除不重叠 的部分。图 21-13 多边形拓扑规则八 规则九:Area boundary must be covered by boundary of,某个多边形要素类的边界线在另一个多边形要素类的边线上。例如县、市边界上必须有乡、镇边界,而且前者的边界必须被后者所重合。违反规则的地方将产生线错误,修改的方法是手工编辑边界。图 21-14 多边形拓扑规则九 多边形不仅可定义自身的规则,而且和点要素、线要素、其他多边形要素之间建立起拓扑关系。多边形要素和点要素的关系前节已经介绍,不同多边形要素 类之间的关系在本节介绍,多边形要素和线要素的关系在下节介绍。13 线拓扑规则举例规则一:Must not have dangles,不允许线要素有悬点,即每一条线的端点都 不能孤立,必须和本要素类中其他要素、或和自身相接触。例如,地块边界线段 不能有悬点。违反规则的地方将产生点错误,修改的方法是:将包含悬点的线段延伸到其它要素上,或者将过长的部分截断后删除。图 21-15 线拓扑规则一规则二:Must not have pseudo node,不能有伪结点,即线段的端点不能是二 个端点的接触点(自身首尾接触是允许的),例如河流。违反规则的地方将产生点错误,修改的方法是:将伪结点两边的线段合并为一个条线,使伪结点自然取消。图 21-16 线拓扑规则二规则三:Must not overlap,在同一要素类中,线与线不能相互重叠。例如平 面道路网。违反规则的地方将产生线错误,修改的办法是将不需要的线段截断, 再删除。图 21-17 线拓扑规则三规则四:Must not self overlap,线要素不能自己和自己重叠。例如街道。违反 规则的地方将产生线错误,修改的方法是截断、删除重叠部分。图 21-18 线拓扑规则四规则五:Must not intersect,同一要素类中,线与线不能相交。例如河流、地 块边界线。违反规则的地方将产生线错误,修改的方法是重合处合并,相交处打 断。图 21-19 线拓扑规则五规则六:Must not self intersect,同一要素类中,线要素不能自相交,例如枝 状的排水管。违反规则的地方将产生线错误和点错误,修改的方法是在自相交处 适当缩短或外移。图 21-20 线拓扑规则六图 21-21 线拓扑规则七规则七:Must not intersect or touch interior,线和线不能交叉,端点不能和非端点接触(非端相互重合是允许的)。例如铁路和铁路不能交叉。某铁路端点不能 和其他铁路的非端点部分接触。违反规则的地方将产生线错误和点错误,该错误 根据实际需要编辑、修改。规则八:Must be single part,线要素必须单独,不能相互接触、重叠。违反 规则的地方将产生线错误,修改的方法是将接触的地方合并,成为一个要素,或 移动后分离。图 21-22 线拓扑规则八规则九:Must not overlap with,两个线要素类中的线段不能重叠。违反规则 的地方将产生线错误,该错误根据实际需要编辑、修改。图 21-23 线拓扑规则九 规则十:Must be covered by feature class of,某个要素类中的线段必须被另一要素类中的线段所覆盖。例如公交线路必须行驶在道路上。违反规则的地方将产生线错误,修改的方法是将错误线段删除,再重新输入正确的。图 21-24 线拓扑规则十规则十一:End point must be covered by,线要素的端点被点要素覆盖。例如 每一条公交线路的尽端必须有终点站。违反规则的地方将产生点错误,修改的方 法是增补新的点要素。图 21-25 线拓扑规则十一 规则十二:Must be covered by boundary of,线要素必须被多边形要素的边界覆盖。例如城市的内部道路至少一侧有地块多边形边界。违反规则的地方将产生线错误,修改的方法是删除错误的线,或编辑多边形。图 21-26 线拓扑规则十二一个要素类允许设置多个拓扑规则,但是这些规则必须定义在一个拓扑类中。2 拓扑规则用于数据质量的检验和控制21 建立线要素拓扑规则 启动ArcCatalog,在窗口左侧将路径定位到gis_ex09ex22,其 中有Geodatabase geo22,双击鼠标展开其中的数据集,出现数据集 dataset1。在 dataset1 中有线要素类 lotlines,是地块边界线。本练习目的是通过建立线要素类 lotlines 的拓扑关系,检验输入的线要素是否全部封闭,为下一步构成地块多边形作准备。 选择 dataset1,单击鼠标的右键,在弹出的菜单中,选择 New / Topology,表示新建拓扑规则。出现 New Topology(新拓扑)对话框。如果 dataset1 的拓扑 规则已经存在,系统会提示无法建立拓扑规则。这时用选择 dataset1 下侧的拓扑关系图标,用鼠标右键选择 Delete,将曾经建立的拓扑规则删除后再重建。在New Topology(新拓扑)对话框中,点击按钮“下一步”,有两个设置:Enter a name for your topology:topology1 键盘输入新建拓扑规则的名称Enter a cluster Tolerance 要求输入限差值,本练习用默认值,不修改图 21-27 选择拓扑规则按“下一步”键继续,提示 Dataset1 中的各种要素类名称,勾选 lotlines,表 示为该要素建立拓扑规则。按“下一步”键,出现 Rank 设置对话框,保持默认 值,再选“下一步”按钮,提示:Specify the rules for the topology 要求定义拓扑 规则。点击左侧按钮 Add Rule,为要素类添加拓扑规则(见图 21-27)。Features of feature class 下拉选择要素类 lotlinesRule: 下拉选择规则 Must Not Have Dangles,不能出现悬 点 Show Errors 勾选图 21-28 拓扑错误按 OK 键,返回 Specify the rules for the topology 对话框,按“下一步”按钮, 再按“完成”键。经 ArcCatalog 处理,建立拓扑规则,系统提示:The new topology has been created. Would you like to validate it now? 意思是拓扑规则已建立,提问是否使它有效?选“是(Y)”,可以看到在 dataset1 下多了一个 topology1 类,它有 拓扑关系图标。鼠标单击 topology1,在 ArcCatalog 右侧窗口,选择标签 Preview,可以看到有三个红色的小方块表示悬点,他们就是有拓扑错误的地方(见图21-28)。2.2 修改拓扑错误启动 ArcMap ,打开地图文档gis_ex09ex22ex22.mxd ,有一个空的 data frame1,按图标添加图层,在路径gis_ex09ex22下展开 geo22(Geodatabase),选择 dataset1 中的 topology1,按 OK 键确定。系统出现提示:“Do you also want to add all feature classes that participate in “topology1” to the map?”,意思是是否将所有 与拓扑类 topology1 有关的要素类都加载进来?选择“是(Y)”。可以看到,添加两个图层:“lotsline”、“topology1”。其中,其中拓扑错误以红色方块显示。在 ArcMap 标准按钮一栏中点击按钮,调用出 Editor 工具条,也可在菜单 中选用 View / Toolbars / Editor。在 Editor 工具栏中选择 Editor / More editing tools / Topology,调出拓扑(Topology)工具栏(见图 21-29)。图 21-29 拓扑工具栏 虽然都是用红方块表示错误,但每个错误的类型都不一样,用工具放大左上角方块,可以发现这个错误是因为线的端点过长(称为 Overshoot,参见图21-30)。在 Topology 工具栏点,选中该红色方块(用框选方式可能比较方便)。 方块变成黑色表示被选中,点鼠标右键弹出菜单,选择 Trim。在弹出的 Maximum Distance 对话框中输入 2,按回车,长出的部分被截去了。输入 2 的意思是:如果 长出去的悬挂线(Dangle line)的长度小于 2 个坐标单位就截去。具体应用时如 何判断合适的长度,可以用 Tools 工具栏中的大致量一下出头部分的长度,从状态栏的 Segment 读数可知长度大致为 0.5,实际输入一个略大于 0.5 的值即可。图 21-30 线过长(Overshoot)点击(或者按),回到最开始的视图,用放大左下角的红色方块,可 以发现这个错误是端点离目标线差一段距离,过短(称 Undershoot,参见图 21-31)。在 Topology 工具栏点击图标,弹出 Error Inspector 窗口。勾选 Visible extent only, 表示只在可视的地图范围内找错误,按 Search now 按钮,在窗口下方出现了一行记录,表示找到了一个错误(见图 21-32)。图 21-31 线过短(Undershoot)图 21-32 错误检查窗口 点击该行记录,红色方块变成黑色(被选中),在该行上点鼠标右键,在弹出的菜单选择 Extend,输入 2 后按回车,错误被改正了。点击图标,回到开始的视图,用放大右下角的红色方块,这处的错误 是有一条多余的线(见图 21-33),用选中方块,在鼠标右键菜单中选择 Select Features,按键盘上的 Delete 键,多余的线被删除了。需注意,如果用 Extend 方 法(延长),该错误也会被“改正”,但是很显然不应该用 Extend 方法,放大并看 清错误的原因很重要的。图 21-33 另一种悬挂线,实际上是多余线图 21-34 Dirty Area下面还要验证一下,刚才编辑过的地方是否还有拓扑错误。在 TOC 中选择 Topology1,单击右键,在弹出的菜单选 Properties,选 Symbology 标签,勾选 Dirty Areas,按“确定”键。这时,地图上刚才编辑过的地方被 3 个蓝色矩形框 住了,这 3 个矩形就是 Dirty Areas(见图 21-34)。只要对 Dirty Areas 验证就可以了。在 Topology 工具栏上选(该工具是在Class)被打开,针对 parcel2,可以看到有一个 Res 字段,纪录取值为 0 或者 1,选定的区域内验证拓扑规则),框选 3 个矩形框,蓝色矩形消失了,说明该区域不 存在拓扑错误了。线要素类 lotsline 的数据质量检验完成。选择编辑工具条中的菜单 Editor / Stop Editing,结束编辑状态,根据提示,选择“是(Y)”,保存编辑。 选用菜单 File / Exit,退出 ArcMap。2.2 生成地块多边形启动 ArcCatalog,定位到 D:gis_exex22geo22 下的dataset1,点击dataset1, 单击右键,选择菜单 New / Polygon Feature Class From Lines(从线要素产生多边形),出现对话框:Enter name for the feature class: lotspolygon 输入生成的多边形名称 Enter a cluster Tolerance 要求输入限差值,本练习用默认值,不修改 在下方的对话框中勾选 lotlines,按 OK 按钮。在 dataset1 中,根据线要素lotlines,生成了一个新多边形要素类 lotspolygon,有关错误已经修改。3 拓扑规则用于空间分析3.1 建立多边形拓扑规则 本练习要求作一个分析:某公司准备在该地区开一个卡拉 OK 厅,位置要沿道路,但是不能开在居住用地沿线的道路上,避免干扰居民生活,要求将不符合条件的路段找出来。启动 ArcCatalog,在左侧路径栏中找到D:gis_ex09ex22geo22(Geodatabase),双击展开,双击 dataset2,可以看到该要素数据集里包含了两个多边形要素类: blocks 和 parcel2,在右侧的显示框内点击标签 Preview,下侧出现 Preview 下拉框, 选择 Geography,可以分别显示该要素类的大致图形(见图 21-35,图 21-36),在 Preview 下拉框中选择 Table,该要素类的属性表(Attribute Table of Feature Class)被打开,针对parcel2,可以看到有一个Res 字段,纪录取值为0 或者1,0 表示非居住用地,1 表示居住用地。图 21-35 以道路划分的街坊(blocks)图 21-36 进一步细化的地块(parcel2) 在 ArcCatalog 左侧目录框中双击要素类(Feature Class)parcel2,单击右键, 选择菜单 Properties,打开 Feature Class 属性窗口。在其中,点击 Subtypes 标签, 参考图 21-37 进行设置:Subtype Field: Res 下拉选择 Subtype 字段为 ResDefault Subtype: 非居住用地 下拉选择 Subtype 默认值为“非居住用地”图 21-37 建立 Subtype如果不出现“非居住”、“居住”下拉值,须事先输入:Code(属性值) Description0 非居住用地 键盘输入1 居住用地 键盘输入 按“确定”按钮,关闭 Feature Class Properties 对话框。 在目录框中展开 dataset2,如果该数据集中已经存在拓扑规则的定义(如 dataset2_Topology,一般原因是前次练习已经建立了拓扑规则,用鼠标右键点击 该拓扑规则名,选菜单 Delete,对 Confirm Delete 对话框,回答“是(Y)”,将已经存在的拓扑规则删除。)确认没有拓扑规则后,再用鼠标右键单击 dataset2,选择菜单 New / Topology,弹出 New Topology 对话框,点击“下一步”:Enter a name for your topology: dataset2_Topology 输入拓扑规则数据名称Enter a cluster 用默认值点击“下一步”,勾选 blocks 和 parcel2 两个要素类,再点击“下一步”,提示输入 Rank 值,接受系统默认值,再点击“下一步”,点击按钮 Add Rule,增 加拓扑规则,在弹出的输入对话框按进行设置:Features of feature class:block 下拉选择Rule:Area Boundary Must Be Covered By Boundary of 下拉选择Feature class:parcel2: 非居住 展开 parcel2,后再下拉选择 Show Errors 在对话框右侧勾选,要求显示拓扑错误 按 OK 键继续,可以看到拓扑规则的描述: blocks - Area Boundary Must Be Covered By Boundary Of - parcel2 : 非居住 意思是:blocks(街坊)边界必须和 parcel2(地块细分)中非居住用地的边界重合,不满足规则的边界线将被作为错误标出来。经过 Subtype 设置,parcel2(地块细分)中属性为非居住的已被定义(Res 等于 0),就满足了分析的要求。 点击“下一步”,点击“完成”,系统需要计算一段时间,产生拓扑规则数据,再出现提示:The new topology has been created. Would you like to validate it now? (新的拓扑规则已经建立,是否使它有效?)按“是(Y)”按钮,在 dataset2 下出现 拓扑规则数据名称 dataset2_Topology 和对应的图标。选用菜单 File / Exit 退出ArcCalalog。图 21-38 显示不能建设卡拉 OK 厅的区域(拓扑错误区)3.2 查看分析结果 启动 ArcMap,打开gis_ex09ex22ex22.mxd,激活 data frame2,按图标,添加 D:gis_ex09ex22geo22 dataset2 dataset2_Topology,出现提示:“Do you also want to add all feature classes that participate in dataset2_Topology to the map?”选择“否(N)”。拓扑类 dataset2_Topology 添加显示出来,有拓扑错误的 地方都用红色粗线(Line Errors)标出来。这些红线是不允许开设卡拉 OK 厅的 位置,他们是居住用地的边界(图 21-38)。结束练习,选用菜单 File / Exit 退出 ArcMap,系统提示是否保存对地图文档 的修改,为了不影响别人、后续的练习,应回答“否(N)”。4 建立拓扑规则的注意事项 建立拓扑规则比较简单,查错、改错时需要注意若干专门术语,包括 Cluster Tolerance,Rank,Dirty Area,Error and Exception。其中 Cluster Tolerance 和 Rank在建立拓扑规则时遇到的,Dirty Area 和 Error and Exception 是拓扑编辑时用到的。 Cluster Tolerance 的中文意思是线簇之间的限差,是一个长度值,在 ArcGIS建立拓扑规则的时候,如果两个拐点(Vertex)之间的距离小于 Cluster Tolerance,那么这两个拐点就被焊接(Snap)在一起,变成了一个拐点。这里所说的两个不 同的拐点被焊接在一起,是属于需要建立拓扑规则的不同的要素类(Feature Class),如果同一个线要素类(Line Feature Class)内部不建拓扑规则,许多根线,他们的相互距离很近,不同的拐点(Vertex)之间的距离小于 Cluster Tolerance 的 设定值,也不会被焊接在一起。只有分别属于需要建立拓扑规则的要素类之间的拐点相互距离小于指定值时,才会有焊接作用。Cluster Tolerance 可用默认值,也可键盘输入,值的大小根据要素类的精度和几何范围确定。 既然有焊接(Snap)过程,要素就会移动,Rank 表示等级,每个要素类在参与拓扑规则时都会有一个 Rank 值,如果需要焊接,Rank 值低的要素类的拐点向Rank 值高的要素类的拐点移动,实现焊接。前文建立拓扑规则时,参与的要素类 只有 lotlines 自身,这时,焊接过程就发生在同一个要素类的内部,所以它的 Rank值不起作用。Dirty Area 的中文意思是责任区,是指被编辑过的区域,该区域中可能有违反 拓扑规则的要素。Dirty Area 用一个矩形框把编辑过的地方围起来,验证拓扑规则的时候,只需要对这些矩形框进行验证,这就提高了计算机的处理效率(对练习用的小数据量而言,计算时间的长短是微不足道的)。Error 的中文意思是出错,值违反拓扑规则的地方,用红色方块表示。某些可 接受的 Error 被称之为 Exception(例外)。5 本章小结Geodatabase 可以建立多种点、线、多边形的拓扑规则,用于控制要素类之间 特定的空间关系。Geodatabase 的拓扑关系在 ArcCatalog 中建立。Geodatabase 中一个要素
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论