解决建筑物冲突 (制图)

摘要

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

插图

“解决建筑物冲突”工具图示
将移动建筑物以避免冲突,并对其进行旋转以与附近的道路要素对齐。 将调整一些建筑物的大小或者将其隐藏。

使用情况

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

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

  • 警告:

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

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

  • 将点建筑物图层用作输入图层时,必须将标记符号图层角度属性设置为要素类中的字段。 该字段将存储旋转调整。 如果建筑物符号包含两个或更多个标记符号图层,或者建筑物图层中存在两个或更多个符号,则需要将该图层符号体系中的所有标记符号图层都设置为属性表中的同一字段。 角度属性的顺时针旋转设置必须与每个标记符号图层相匹配。

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

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

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

  • 警告:

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

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

  • 如果障碍要素的符号系统在整个几何上分布不对称(即该符号系统在线的一侧比另一侧更粗),则障碍物使用较细符号系统的一侧可能会出现较大的建筑物与障碍之间的间距。

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

参数

标注说明数据类型
输入建筑物图层

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

将点建筑物图层用作输入时,必须将标记符号图层的角度属性设置为要素类中的字段。 该字段将存储旋转调整。 如果同一点符号中多个标记符号图层的角度属性连接至同一字段,则每个标记符号图层中的顺时针旋转设置必须匹配。

Layer
不可见性字段

存储不可见性值的短整型或长整型字段,不可见性值可用于从显示中移除某些建筑物以解决符号冲突。 值为 1 的建筑物将从显示中移除;值为 0 的建筑物不会被移除。 对图层使用定义查询可只显示可见建筑物。 未删除要素。

String
输入障碍图层

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

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

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

注:

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

Value Table
建筑物间距

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

Linear Unit
最小容许建筑物大小

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

Linear Unit
等级字段
(可选)

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

String

派生输出

标注说明数据类型
输出图层

更新后的输入要素。

Layer

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

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

将点建筑物图层用作输入时,必须将标记符号图层的角度属性设置为要素类中的字段。 该字段将存储旋转调整。 如果同一点符号中多个标记符号图层的角度属性连接至同一字段,则每个标记符号图层中的顺时针旋转设置必须匹配。

Layer
invisibility_field

存储不可见性值的短整型或长整型字段,不可见性值可用于从显示中移除某些建筑物以解决符号冲突。 值为 1 的建筑物将从显示中移除;值为 0 的建筑物不会被移除。 对图层使用定义查询可只显示可见建筑物。 未删除要素。

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

更新后的输入要素。

Layer

代码示例

ResolveBuildingConflicts 示例 1(Python 窗口)

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

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.env.referenceScale = "50000"

arcpy.cartography.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: 是

相关主题