解决建筑物冲突 (制图)

描述

通过移动或隐藏建筑物解决建筑物间的符号冲突以及与线状障碍要素有关的符号冲突。

插图

解决建筑物冲突工具
使用解决建筑物冲突工具处理之前与处理之后的建筑物

使用方法

  • 该工具评估符号化要素的图形冲突。符号系统范围和参考比例会被结合起来考虑。仅在以下操作结束后再运行此工具:确定了符号的外观,并且确保参考比例与所需的最终输出比例相对应。

    要了解有关此工具的详细信息,请参阅解决建筑物冲突工作原理

  • 警告:

    该工具不会生成输出图层,而是更改输入图层源要素类的几何。强烈建议您在运行此工具前先复制输入要素。

  • 对于所有输入要素类,必须存在不可见性字段并且指定为相同的字段名。对于仍需显示的要素,将指定一个 0 值;对于应从显示中移除的要素,则指定一个 1 值。通过图层定义查询或选择操作可显示生成的简化集合(即 invisibility <> 1)。您可使用多个不可见性字段存储同一要素类的不同结果(对应于不同的输出比例)。

  • 对冲突进行评估之前,面状建筑物将被放大到最小容许建筑物大小参数所指定的最小大小。最小大小指的是最适合于要素的旋转边界框的最短侧的线性距离。要查看输出结果中的建筑物的最终大小,请向任一名为 RBC_SIZE 的输入建筑物要素类中添加一个双精度型或浮点型的字段。在工具处理的过程中,该字段将使用每个要素周围的旋转边界框的最短侧进行更新。

  • 等级字段参数是可选的。如果未指定等级字段参数,则将根据建筑物的周长及其与障碍之间的距离为建筑物指定其相对重要性。距离多处障碍较近的较大建筑物将被视为比距离一处障碍相对较远的较小建筑物更重要。您可使用部分填充的等级字段,其中只有重要建筑物使用等级值作为属性,而其他所有要素(等级值为 NULL)的相对重要性将在内部进行计算。

  • 如果使用了等级字段参数,可通过将建筑物的等级值指定为 0(零)强制建筑物保持可见。此工具将不会对这些建筑物进行掩膜。等级值为零的建筑物被视为局部重要,因此,如果未强制该建筑物保持可见,附近的建筑物可能会受到更大影响。仍可对等级值为零的建筑物进行变换(移动、旋转或调整大小)以解决冲突并与其他所需参数匹配。

  • 警告:

    如果输入要素未使用投影坐标系,则会发出一条警告消息。该工具基于线性距离单位,如果使用非投影坐标系,则将创建意外的结果。因此,强烈建议您对使用投影坐标系的数据运行此工具,以确保获得有效的结果。如果坐标系缺失或未知,则会生成一条错误消息并且工具将不执行处理操作。

  • 任何与障碍存在几何冲突的建筑物(即建筑物的实际几何与道路等障碍要素的实际几何相重叠,而不只是符号系统相重叠)均不会被移出障碍要素。这些建筑物可被标记以在冲突解决过程中进行掩膜,但不会被移动。冲突将保留。

  • 如果障碍要素的符号系统在几何中不是对称分布的(即线一侧的符号比另一侧粗),则在符号较细的障碍一侧,建筑物与障碍之间的间距看起来可能较大。

  • 处理大型数据集或同时处理多个障碍图层可能会超过内存限制。在这种情况下,考虑通过在分区要素环境设置中确定一个相关的面要素类来通过分区处理输入建筑物数据。将按顺序处理分区边界定义的建筑物数据的各部分。生成的图层无缝,而且在分区边界一致。有关通过分区运行该工具的详细信息,请参阅解决建筑物冲突的工作原理

语法

ResolveBuildingConflicts(in_buildings, invisibility_field, in_barriers, building_gap, minimum_size, {hierarchy_field})
参数说明数据类型
in_buildings
[in_buildings,...]

包含可能存在冲突或者小于容许大小的建筑物要素的输入图层。建筑物可以是点或面。将对建筑物进行修改以解决它们与其他建筑物和障碍要素的冲突。

Layer
invisibility_field

存储不可见性值的字段,不可见性值可用于从显示中移除某些建筑物以解决符号冲突。值为 1 的建筑物将从显示中移除;值为零的建筑物将保留。对图层使用定义查询可只显示可见建筑物。不会删除任何要素。

String
in_barriers
[[Layer, Boolean, Linear Unit],...]

包含线状或面状要素的图层,其作为与输入建筑物要素存在冲突的障碍。将对建筑物进行修改以解决建筑物与障碍之间的冲突。定向值为布尔值,用于指定是否应将建筑物定向到障碍图层。

间距用于指定建筑物应朝向或远离障碍图层所移动的距离。输入此值时必须带有单位。

  • 间距值 0(零)表示会将建筑物直接捕捉到障碍线或轮廓符号系统的边缘。
  • null(未指定)间距值表示除解决冲突所需的移动外,建筑物将不会移向或远离障碍线或轮廓线。

注:

如果输入间距值时未带有单位(如输入 10 而不是 10 米),将使用输入要素的坐标系的线性单位。

Value Table
building_gap

某比例下符号化的建筑物之间的最小容许距离。将移动或隐藏间距小于此距离的建筑物以保持此距离。最小容许距离将相对于参考比例进行设置(如,1:50,000 比例下为 15 米)。如果未设置参考比例,最小容许距离值为 0。

Linear Unit
minimum_size

经旋转的最佳大小边界框的最短侧的最小容许大小,此边界框位于以参考比例绘制的符号化的建筑物要素周围。会将边界框侧小于此值的建筑物进行扩大以达到此值。可能会不按比例来调整建筑物大小,这将导致建筑物的形态发生改变。

Linear Unit
hierarchy_field
(可选)

该字段包含要素重要性的等级级别,其中 1 表示非常重要,重要性随整数值的增大而递减。虽然可能会对建筑物进行一定程度的移动以解决冲突,但值 0(零)将强制建筑物保持可见。如果未使用此参数,此工具将根据要素的周长及其与障碍要素的距离对要素重要性进行评估。

String

派生输出

名称说明数据类型
out_layers

更新后的输入要素。

图层

代码示例

ResolveBuildingConflicts 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何在即时模式下使用 ResolveBuildingConflicts 工具。

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.env.referenceScale = "50000"
arcpy.ResolveBuildingConflicts(["C:/data/footprints.lyr", "C:/data/bldg_points.lyr"],                                
                               "invisible",
                               [["C:/data/roads.lyr", "true", "5 Meters"],
                                ["C:/data/trails.lyr", "false", "10 Meters"],
                                ["C:/data/streams.lyr", "false", "5 Meters"]],
                               "10 meters", 
                               "15 meters", 
                               "bldg_hierarchy")
ResolveBuildingConflicts 示例 2(独立脚本)

此独立脚本显示的是使用 ResolveBuildingConflicts 工具的示例。

# Name: ResolveBuildingConflicts_standalone_script.py
# Description: Resolves the symbology conflicts between
#              buildings and nearby barriers,
#              in this case - roads
 
# Import system modules
import arcpy
from arcpy import env

# Set environment settings
env.workspace = "C:/data"
env.referenceScale = "50000"

# Set local variables
in_buildings = "C:/data/footprints.lyr;C:/data/bldg_pts.lyr"
invisibility_field = "invisible"
in_barriers = "'C:/data/roads.lyr' 'true' '5 Meters';\
              'C:/data/trails.lyr' 'false' '10 Meters';\
              'C:/data/streams.lyr' 'false' '5 Meters'"
building_gap = "10 meters"
minimum_size = "15 meters"
hierarchy_field = "bldg_hierarchy"

# Execute Resolve Building Conflicts
arcpy.ResolveBuildingConflicts(in_buildings,
                               invisibility_field,
                               in_barriers,
                               building_gap,
                               minimum_size,
                               hierarchy_field)

许可信息

  • Basic: 否
  • Standard: 否
  • Advanced: 是

相关主题