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