Resolve Building Conflicts (Cartography)

Summary

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

Illustration

Resolve Building Conflicts tool example
Conflicts are resolved by moving, resizing, or hiding buildings.

Usage

  • This tool assesses graphic conflicts of symbolized features. The symbology extent and the reference scale are used in conjunction with one another. Run this tool only after you have finalized the appearance of the 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 recommended that you make a copy of your input features before running this tool.

  • The Invisibility Field parameter value 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—in the same feature class.

  • When point building layers are used as input layers, the Angle property of the marker symbol layer must be set to a field in the feature class. This field will store the rotation adjustments. If the building symbol contains two or more marker symbol layers or if there are two or more symbols in the building layer, set all marker symbol layers present in the symbology of the layer to the same field in the attribute table.

  • 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 update 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 in which 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, you can make buildings remain 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 visible. Hierarchy zero buildings can still be transformed (moved, rotated, or resized) to resolve conflicts and match other required parameters.

  • Caution:

    A warning is issued 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 recommended that you run this tool on data in a projected coordinate system to ensure valid results. An error occurs 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 the 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.

Parameters

LabelExplanationData Type
Input Building Layers

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.

When point building layers are used as inputs, the Angle property of the marker symbol layer must be set to a field in the feature class. This field will store the rotation adjustments

Layer
Invisibility Field

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

String
Input Barrier Layers

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. The orient value is Boolean, specifying whether buildings will be oriented to the barrier layer.

Gap specifies the distance that buildings will 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 the barrier line or outline symbology.
  • A null (unspecified) gap value means that buildings will not be moved toward or away from barrier lines or outlines except 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 the reference scale is not set.

Linear Unit
Minimum Allowable Building 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 occur nonproportionally, resulting in a change to the building morphology.

Linear Unit
Hierarchy Field
(Optional)

The field that contains hierarchical ranking of feature importance in which 1 is very important and larger integers reflect decreasing importance. A value of 0 (zero) causes 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

LabelExplanationData Type
Output Layers

The updated input features.

Layer

arcpy.cartography.ResolveBuildingConflicts(in_buildings, invisibility_field, in_barriers, building_gap, minimum_size, {hierarchy_field})
NameExplanationData 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.

When point building layers are used as inputs, the Angle property of the marker symbol layer must be set to a field in the feature class. This field will store the rotation adjustments

Layer
invisibility_field

The field that stores the invisibility values that can be used to remove some buildings from display to resolve symbol conflicts. Buildings with a value of 1 will be removed from display; those with a value of zero will not be removed. 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. The orient value is Boolean, specifying whether buildings will be oriented to the barrier layer.

Gap specifies the distance that buildings will 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 the barrier line or outline symbology.
  • A null (unspecified) gap value means that buildings will not be moved toward or away from barrier lines or outlines except 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 the 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 occur nonproportionally, resulting in a change to the building morphology.

Linear Unit
hierarchy_field
(Optional)

The field that contains hierarchical ranking of feature importance in which 1 is very important and larger integers reflect decreasing importance. A value of 0 (zero) causes 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 function 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 function.

# 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