Resolve Building Conflicts (Cartography)

Summary

Resolves symbol conflicts among buildings and with respect to linear barrier features by moving or hiding buildings.

Illustration

Resolve Building Conflicts tool
Buildings before and after processing with the Resolve Building Conflicts tool

Usage

  • This tool operates by assessing graphic conflicts of symbolized features. The symbology extent and the reference scale are considered in conjunction with one another. Run this tool only after you have finalized the appearance of your symbols, and ensure that the reference scale corresponds to the final intended output scale.

    To learn more about this tool, see How Resolve Building Conflicts works.

  • Caution:

    This tool does not produce output layers but instead alters the geometry of the source feature classes of the input layers. It is strongly suggested that you make a copy of your input features before running this tool.

  • The Invisibility Field must be present and named the same for all input feature classes. Features that should remain visible are assigned a value of 0; those that should be removed from the display are assigned a value of 1. Use a layer definition query or a selection to display the resulting simplified collection (that is, invisibility <> 1). You can use multiple invisibility fields to store different results—corresponding to different output scales—on the same feature class.

  • Before conflicts are assessed, polygonal buildings are enlarged to a minimum size specified by the Minimum Allowable Building Size parameter. Minimum size is measured as a linear distance along the shortest side of a rotated bounding box best fit to the feature. To review the final size of buildings in the output results, add a double or float field to any of the input building feature classes called RBC_SIZE. As the tool processes, this field will be updated with the shortest side of a rotated bounding box around each feature.

  • The Hierarchy Field parameter is optional. If it is not specified, buildings will be assigned a relative importance based on the perimeter of the building and proximity to barriers. Larger buildings closer to more than one barrier will be assessed as more significant than smaller buildings relatively far from a barrier. You can use a partially populated Hierarchy field where only the significant buildings are attributed with a hierarchical value and all other features (with a NULL hierarchy value) will have their relative significance internally calculated.

  • If the Hierarchy Field parameter is used, buildings can be forced to stay visible by assigning them a hierarchy value of 0 (zero). They will not be masked by the tool. A building with a hierarchy of zero is considered locally important, so nearby buildings may be compromised more than they would if that building was not forced to stay visible. Hierarchy zero buildings may still be transformed (moved, rotated, or resized) in order to resolve conflicts and match other required parameters.

  • Caution:

    A warning is raised if the input features are not in a projected coordinate system. This tool relies on linear distance units, which will create unexpected results in an unprojected coordinate system. It is strongly suggested that you run this tool on data in a projected coordinate system to ensure valid results. An error is raised and the tool will not process if the coordinate system is missing or unknown.

  • Any buildings that are geometrically in conflict with barriers (that is, the actual geometry—not just symbology—of the building overlaps that of a barrier feature such as a road) will not be moved off the barrier feature. These buildings may be flagged for masking in the course of conflict resolution processing, but they won't be moved. A conflict will remain.

  • If the symbology of the barrier features is not symmetrically distributed across the geometry—that is, the symbol is thicker on one side of the line than the other—a larger building-to-barrier gap may appear on the side of the barrier with the thinner symbology.

  • Processing large datasets or a number of barrier layers together may exceed memory limitations. In this case, consider processing input building data by partition by identifying a relevant polygon feature class in the Partition Features environment setting. Portions of the building data, defined by partition boundaries, will be processed sequentially. The resulting layers will be seamless and consistent at partition edges. See How Resolve Building Conflicts works for more information about running this tool with partitioning.

Syntax

ResolveBuildingConflicts(in_buildings, invisibility_field, in_barriers, building_gap, minimum_size, {hierarchy_field})
ParameterExplanationData Type
in_buildings
[in_buildings,...]

The input layers containing building features that may be in conflict, or smaller than allowable size. Buildings can be either points or polygons. Buildings will be modified to resolve conflicts with other buildings and with barrier features.

Layer
invisibility_field

The field that stores the invisibility values that can be used to remove some buildings from display in order to resolve symbol conflicts. Buildings with a value of 1 should be removed from display; those with a value of zero should remain. Use a definition query on the layer to display visible buildings only. No features are deleted.

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

The layers containing the linear or polygon features that are conflict barriers for input building features. Buildings will be modified to resolve conflicts between buildings and barriers. Orient value is Boolean, specifying whether buildings should be oriented to the barrier layer.

Gap specifies the distance that buildings should move toward or away from the barrier layer. A unit must be entered with the value.

  • A gap value of 0 (zero) will snap buildings directly to the edge of barrier line or outline symbology.
  • A null (unspecified) gap value will mean that buildings will not be moved toward or away from barrier lines or outlines except for movement required by conflict resolution.

Note:

If no unit is entered with the gap value (that is, 10 instead of 10 meters), the linear unit from the input feature's coordinate system will be used.

Value Table
building_gap

The minimum allowable distance between symbolized buildings at scale. Buildings that are closer together will be displaced or hidden to enforce this distance. The minimum allowable distance is set relative to the reference scale (that is, 15 meters at 1:50,000 scale). The value is 0 if reference scale is not set.

Linear Unit
minimum_size

The minimum allowable size of the shortest side of a rotated best-fit bounding box around the symbolized building feature drawn at the reference scale. Buildings with a bounding box side smaller than this value will be enlarged to meet it. Resizing may happen nonproportionally, resulting in a change to building morphology.

Linear Unit
hierarchy_field
(Optional)

The field that contains hierarchical ranking of feature importance, where 1 is very important and larger integers reflect decreasing importance. A value of 0 (zero) forces the building to retain visibility, although it may be moved somewhat to resolve conflicts. If this parameter is not used, feature importance will be assessed by the tool based on perimeter length and proximity to barrier features.

String

Derived Output

NameExplanationData Type
out_layers

The updated input features.

Layer

Code sample

ResolveBuildingConflicts example 1 (Python window)

The following Python window script demonstrates how to use the ResolveBuildingConflicts tool in immediate mode.

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 example 2 (stand-alone script)

This stand-alone script shows an example of using the ResolveBuildingConflicts tool.

# 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)

Licensing information

  • Basic: No
  • Standard: No
  • Advanced: Yes

Related topics