解决建筑物冲突的工作原理
解决建筑物冲突工具通过移动或隐藏建筑物以使建筑物的图形不发生叠加或者使建筑物不违反制图规范定义的间距要求,来解决建筑物间的符号冲突以及与线性障碍要素有关的符号冲突。
数据准备注意事项
解决建筑物冲突工具可以通过调整建筑物的位置、方向、大小和可见性来改善一组建筑物的显示效果。但是,典型的建筑物模式和分布状态将会得到保留。而建筑物间的图形冲突以及建筑物与障碍要素(如道路)间的图形冲突将得到解决。小型的面建筑物也将被放大到最小尺寸以符合规范要求。
该工具评估符号化要素的图形冲突。符号系统范围和参考比例会被结合起来考虑。仅在以下操作结束后再运行此工具:确定了符号的外观,并且确保参考比例与所需的最终输出比例相对应。
注意下列输入数据要求和建议:
输入类型: 输入的建筑物必须是点或面。不接受线状输入要素。可通过将多个图层输入到该工具中来同时评估和解决点建筑物和面建筑物。
面建筑物大小:最小容许建筑物大小参数用于将面建筑物放大到在输出比例下可分辨的最小大小,或者用于和制图规范相匹配。对于该参数,将忽略输入的点建筑物。在处理的过程中,为解决冲突可能会略微减小某些面建筑物的大小。面建筑物不会减小到小于最小建筑物大小。
点建筑物大小: 即使用于显示点建筑物的符号小于某个比例下的最小容许建筑物大小,也不会放大这些符号。原因就是我们假设已经特意将点建筑物符号化以符合地图规范或达到期望的外观。通常,所关联的输入点建筑物要素会使用与该最小面建筑物大小相匹配的标记符号来进行符号化。必要时将旋转或移动点建筑物以解决冲突。如果输入图层是通过制图表达绘制的,则点旋转将存储为几何覆盖。
聚合的建筑物和简化的建筑物: 为得到最佳结果,使用该工具前,不应对建筑物过分聚合。大型聚合建筑物几乎无法通过移动来解决冲突,所以,对于建筑物而言,最终将通过隐藏大部分建筑物来达到效果展示。建筑物的轮廓线可以在解决冲突前进行简化。
低于 XY 容差的几何:有时,数据中的一些要素长度可能小于在地图或工具环境中指定的 XY 容差。如果检测到长度小于容差的要素,则会发出一条警告消息,并且工具将忽略这些要素。几何在容差之下的要素的 ObjectID 将被写入名为 GeomBelowTolerance#.txt(其中 # 是一个数字,随着日志文件的生成,该数字会不断增大)的日志文件。
空几何或 null 几何:输入要素必须包含有效的几何。如果检测到形状长度为零或 null 的几何,则会发出一条警告消息,并且工具将忽略这些要素。几何为空或 null 的要素的 ObjectID 将被写入名为 EmptyGeom#.txt(其中 # 是一个数字,随着日志文件的生成,该数字会不断增大)的日志文件。如有必要,使用修复几何工具来修复这些要素。
发出警告或错误消息时所生成的日志文件,其位置与操作系统相关:
- 在 Windows XP 上,日志文件将写入 C:\Documents and Settings\<用户名>\Application Data\ESRI\GeoProcessing。
- 在 Windows Vista 和 Windows 7 上,日志文件将写入 C:\Users\<用户名>\AppData\Local\ESRI\GeoProcessing。
工作流注意事项
通常,与其他制图综合工具和图形冲突解决工具配合使用时,该工具最为有效。下面有一些提示,可以帮助您在工作流中将这些工具同其他图层和其他工具一起使用:
- 了解输入要素类将会被修改。该工具不会创建新的输出道路要素类,而是会直接修改输入要素类。考虑将具有制图表达的输入图层符号化(通过为要存储几何覆盖而设置的编辑属性)。在这种情况下,该工具所作的所有修改都将存储为几何覆盖。如果结果不可接受或者要使用不同的参数重新运行该工具,只需使用移除覆盖工具来移除覆盖,或在编辑过程中从 ArcMap 中手动移除一些特定要素的覆盖。如果输入图层不是使用制图表达绘制的,请在处理之前复制要素类,以保留其原始状态。
- 首先移除多余的要素。根据建筑物的分布密度,对于那些非常小的或在制图时不重要的建筑物,如果本身也不适合最终的输出比例,那么最好首先将其移除。这样做会省出更多的空间用于解决冲突,而且通常会产生更好的结果。通过图层定义查询或选择移除小于某一尺寸的面建筑物或满足附加条件的点建筑物或面建筑物,可达到此目的。
- 直接建立要素等级。可选的等级字段参数用于识别建筑物的相对重要性。比较重要的建筑物将优先于不太重要的建筑物。不太重要的建筑物更有可能被移动或隐藏以放置那些重要的建筑物。等级值为 1 表示最重要的建筑物;整数值越大,表示建筑物的重要性越低。为得到最佳结果,不要在数据集内应用五种以上的等级类。更为详细的分类会延长处理时间,并使得该工具在处理分布密集的建筑物时更加难以得到合理的解决方案。所有输入图层将集中评估以划分要素等级,因此每个图层都必须含有一个同名字段,并使用相同的分类值。
- 自动建立要素等级。对于解决建筑物冲突工具,等级字段参数是可选的。如果未指定该参数,则将根据建筑物自身的周长以及与障碍之间的距离为建筑物指定一个相对重要性。根据周长(而不是面积)为由于具有高细节轮廓而特别捕获的建筑物指定更高的重要性。如果在解决建筑物冲突之前选择简化建筑物覆盖区,则请记住这一点。与距离一个障碍相对较远的小建筑物相比,同时距离多个障碍较近的较大建筑物将被视为更为重要。等级字段参数可有效地和部分填充的等级字段配合使用;地图上的重要建筑物可以使用等级值作为属性,并且所有其他要素(值为 NULL)将具有内部计算出的相对重要性。
- 强制特定要素保持可见状态。 等级值为 0 可强制要素的可见性,以确保要素不会在不可见性字段内标记为用于掩膜。这些建筑物被视为局部重要,因此,如果建筑物未强制为保持可见,则附近建筑物的可见性和定位就可能受到过度的影响。等级为 0 的建筑物仍可以进行变换(移动、旋转、调整大小),以解决冲突并与所需的其他参数相匹配。
- 定义障碍要素。输入障碍图层参数指定了对建筑物的移动位置起限制作用的线图层或面图层。道路图层通常用于防止建筑物越过道路移动。必须至少指定一个障碍图层,多个图层也可以接受。需要谨记,放置的障碍约束越多,工具找到可接受的冲突解决方案就越困难。
- 将建筑物定向至障碍图层。 可以选择性地对建筑物进行定向以使其正面与障碍要素对齐。例如,建筑物可以定向为与附近的道路对齐。如果障碍图层定向参数为 TRUE,则所有满足大小和邻域分析要求的建筑物都将参考该障碍图层进行定向。如果该参数为 FALSE,则不会进行特定的定向,但是在解决冲突的过程中,附近的要素可能偶然被略微旋转。
- 大小要求:所有点建筑物,以及满足最小容许建筑物大小参数值(即,边界框的两侧均小于等于该值)的面建筑物都将被定向。这也包括那些被放大到最小建筑物大小值的建筑物。更大的建筑物不会被定向。仅当满足大小要求时,强制为保持可见的建筑物(等级 = 0)才被定向。
- 邻域分析要求:仅对与障碍要素之间的距离不超过最小容许建筑物大小参数两倍的建筑物考虑定向。该距离的测量范围是从建筑物符号的图形边到障碍要素符号的图形边。
- 相对于障碍要素移动建筑物。 建筑物和障碍之间的间距可由障碍图层间距参数选择性地进行控制。该值可以指定所有建筑物和障碍要素之间必须保持的距离。任何在图形上与障碍要素之间的距离小于障碍间距值的建筑物都向外发生位移,以遵循间距距离。不会为了与该间距匹配而朝障碍方向移动建筑物(除非这种移动有时对于解决冲突很有必要)。通过设置障碍图层间距的值来控制间距,如下:
- 间距等于零:建筑物将被直接捕捉到障碍要素的图形边。任何一个建筑物,只要其任意一部分与障碍要素的图形边的距离小于最小容许建筑物大小的值,都将被捕捉到障碍的边。任何与障碍要素接触或重叠的建筑物都将被捕捉到障碍的边。
- 间距大于零:必要时,建筑物将被移动得远离障碍以达到该间距。
- 间距为 NULL: 建筑物不会相对于障碍而移动,除非在处理冲突解决方案的情况下。这是默认设置。
- 从显示中移除已被掩膜的要素。 已被掩膜的建筑物由不可见性字段参数来控制。对于由工具确定应该从显示中移除才能解决冲突的建筑物,指定其不可见性字段的值为 1;对于那些应该保留的,值为 0。要更改建筑物的可见性,只需更改不可见性字段中的值。要在地图上显示结果,请向图层添加定义查询,以便只显示可见的建筑物 (不可见性字段 = 0)。
- 查看结果。可运行检测图形冲突工具以识别该工具无法解决的区域。使用恰好小于建筑物间距参数的冲突距离来运行该工具,以识别该工具无法遵循建筑物间距的区域。
- 要查看建筑物的最终大小,请向任意一个名为 RBC_SIZE 的输入建筑物要素类中添加一个双精度字段或浮点型字段。在工具处理的过程中,该字段将使用每个要素周围的旋转边界框的最短侧进行更新。通过该字段,可以很方便地查看对哪些要素进行了放大以满足最小容许建筑物大小参数的值。如果输出被存储为形状覆盖,则该值将反映形状覆盖的大小。如果输入的几何为点,则该字段中的值将反映参考比例下点符号的大小。
对大型数据集分区
该工具的运行与上下文相关,这样在确定每个具体要素的最终状态时,会考虑到相邻和连接要素。一次可输入多个数据集,这意味着将同时对它们进行处理。使用大量的输入数据(或许多独立的输入图层)可能会超出内存限制。为避免这个限制,可以在运行该工具时启用分区,方法为在 Cartographic Partitions 地理处理环境变量中指定一个分区要素类。经分区后,该工具可以以逻辑和可管理的区块来按顺序处理数据。每个分区面描绘的输入要素与缓冲区中分区周围的附加数据一起被载入到工具中。附加数据可认为是处理收益。这样可以确保生成的要素类没有缝隙,并且跨越分区边界的要素状态一致。
当通过分区解决建筑物冲突时,只修改最初位于每个分区边界内或边界上的建筑物。工具所做的修改包括调整大小、旋转、移动或不显示。建筑物还可以移动到分区外。在处理分区建筑物时,缓冲区中分区周围的障碍和建筑物会被考虑在内,但不会对它们做出修改。