Simplify Building (Cartography)

Summary

Simplifies the boundary or footprint of building polygons while maintaining their essential shape and size.

Illustration

Illustration of Simplify Building tool options
Using the simplification tolerance, buildings are simplified by removing small details, narrow corridors, and features that are below the minimum area.

Usage

  • The Minimum Area parameter applies to simplified buildings only. Any buildings that are smaller than the minimum area after the simplification process is completed will be removed from the output feature class.

  • Use the Input barrier layers parameter to identify features that must not be crossed by simplified buildings. Barrier features can be points, lines, or polygons.

  • Use the Keep collapsed points parameter (collapsed_point_option in Python) to create an output point feature class to store points that represent buildings that are removed because they are smaller than the minimum area. The point output is derived; it will use the same name and location as the Output Feature Class parameter (out_feature_class in Python) but with a _Pnt suffix. The output polygon feature class contains all the fields present in the input feature class. The output point feature class does not contain any of these fields.

  • The output feature class will include a BLD_STATUS field to indicate simplification status as follows:

    • 1—A single building has been simplified
    • 2—A single building has been simplified to its minimum bounding rectangle
    • 3—A building smaller than the tolerance squared has been simplified to its minimum bounding rectangle
    • 5—A building that has not been simplified
    Legacy:

    Prior to ArcGIS version 10, BLD_STATUS = 4 indicated simplified or partially simplified buildings connected with straight lines. BLD_STATUS = 4 is no longer used.

    Caution:

    If a BLD_STATUS field exists in the input feature class, it will be present in the output feature class populated with new values. Existing values will be overwritten. To preserve the existing values, create a field in the input feature class, and copy the existing values from the BLD_STATUS field to this new field.

  • If the Check for spatial conflicts parameter is used, the tool will detect spatial conflicts and add a SimBldFlag field to the output to store conflict flags. A value of 0 means no conflict; a value of 1 means conflict.

    Caution:

    If a SimBldFlag field exists in the input feature class, it will be present in the output feature class populated with new values. Existing values will be overwritten even if this parameter is unchecked (conflict_option = "NO_CHECK" in Python). When spatial conflicts are not being checked, this existing field will be overwritten with NULL values. To preserve the existing values, create a field in the input feature class, and copy the existing values from the SimBldFlag field to this new field.

  • This tool cannot be executed in an edit session.

  • Input z-values can be preserved if they're specified in the Environment settings. When output vertices are coincident to input feature vertices, z-values will be transferred to output vertices. Otherwise, z-values will be derived either from existing z-values or through interpolation.

  • Invalid (self-intersecting) geometry may be created during the simplification process and will be repaired but not improved. For example, if a polygon crosses itself, the polygon will become a multipart polygon but will still appear self-crossing.

  • Domains and subtypes are copied to the output even if the Transfer Geodatabase Field Properties environment is unchecked.

  • Processing large datasets may exceed memory limitations. In such cases, consider processing input data by partition by identifying a relevant polygon feature class in the Cartographic Partitions environment setting. Portions of the data, defined by partition boundaries, will be processed sequentially. The resulting feature class will be seamless and consistent at partition edges. See Generalizing large datasets using partitions for more information.

Parameters

LabelExplanationData Type
Input Features

The building polygons to be simplified.

Feature Layer
Output Feature Class

The output feature class to be created.

Feature Class
Simplification Tolerance

The tolerance for building simplification. A tolerance must be specified, and it must be greater than zero. You can choose a preferred unit; the default is the feature unit.

Linear Unit
Minimum Area
(Optional)

The minimum area for a simplified building to be retained in feature units. The default value is zero, that is, to keep all buildings. You can specify a preferred unit; the default is the feature unit.

Areal Unit
Check for spatial conflicts
(Optional)

Specifies whether spatial conflicts—that is, overlapping or touching among buildings—will be identified. A SimBldFlag field is added to the output to store conflict flags. A value of 0 means no conflict; a value of 1 means conflict.

  • Unchecked—Spatial conflicts will not be identified; the resulting buildings may overlap. This is the default.
  • Checked—Spatial conflicts will be identified and the conflicting buildings will be flagged.

Boolean
Input barrier layers
(Optional)

The input layers containing features to act as barriers for simplification. Resulting simplified buildings will not touch or cross barrier features. For example, when simplifying buildings, the resulting simplified building areas do not cross road features defined as barriers.

Feature Layer
Keep collapsed points
(Optional)

Specifies whether an output point feature class will be created to store the centers of any buildings that are removed because they are smaller than the Minimum Area parameter value. The point output is derived, is named the same as the output feature class specified in the Output Feature Class parameter but with a _Pnt suffix, and is located in the same folder.

  • Checked—A derived output point feature class will be created to store the centers of buildings that are removed.
  • Unchecked— An output point class will not be created. This is the default.
Boolean

Derived Output

LabelExplanationData Type
Polygons Collapsed To Zero Area

The output point feature class that will store points that represent buildings that are removed because they are smaller than the Minimum Area parameter value (minimum_area in Python). This parameter is only used when the Keep collapsed points parameter is checked (collapsed_point_option = "KEEP_COLLAPSED_POINTS" in Python).

Feature Class

arcpy.cartography.SimplifyBuilding(in_features, out_feature_class, simplification_tolerance, {minimum_area}, {conflict_option}, {in_barriers}, {collapsed_point_option})
NameExplanationData Type
in_features

The building polygons to be simplified.

Feature Layer
out_feature_class

The output feature class to be created.

Feature Class
simplification_tolerance

The tolerance for building simplification. A tolerance must be specified, and it must be greater than zero. You can choose a preferred unit; the default is the feature unit.

Linear Unit
minimum_area
(Optional)

The minimum area for a simplified building to be retained in feature units. The default value is zero, that is, to keep all buildings. You can specify a preferred unit; the default is the feature unit.

Areal Unit
conflict_option
(Optional)

Specifies whether spatial conflicts—that is, overlapping or touching among buildings—will be identified. A SimBldFlag field is added to the output to store conflict flags. A value of 0 means no conflict; a value of 1 means conflict.

  • NO_CHECKSpatial conflicts will not be identified; the resulting buildings may overlap. This is the default.
  • CHECK_CONFLICTSSpatial conflicts will be identified and the conflicting buildings will be flagged.
Boolean
in_barriers
[in_barriers,...]
(Optional)

The input layers containing features to act as barriers for simplification. Resulting simplified buildings will not touch or cross barrier features. For example, when simplifying buildings, the resulting simplified building areas do not cross road features defined as barriers.

Feature Layer
collapsed_point_option
(Optional)

Specifies whether an output point feature class will be created to store the centers of any buildings that are removed because they are smaller than the minimum_area parameter value. The point output is derived, is named the same as the output feature class specified in the out_feature_class parameter but with a _Pnt suffix, and is located in the same folder.

  • KEEP_COLLAPSED_POINTS A derived output point feature class will be created to store the centers of buildings that are removed.
  • NO_KEEP An output point feature class will not be created. This is the default.
Boolean

Derived Output

NameExplanationData Type
out_point_feature_class

The output point feature class that will store points that represent buildings that are removed because they are smaller than the Minimum Area parameter value (minimum_area in Python). This parameter is only used when the Keep collapsed points parameter is checked (collapsed_point_option = "KEEP_COLLAPSED_POINTS" in Python).

Feature Class

Code sample

SimplifyBuilding example 1 (Python window)

The following Python window script demonstrates how to use the SimplifyBuilding function in immediate mode.

import arcpy
import arcpy.cartography as CA
arcpy.env.workspace = "C:/data"
CA.SimplifyBuilding("buildings.shp", "C:/output/output.gdb/simplified_buildings", 10)
SimplifyBuilding example 2 (stand-alone script)

The following stand-alone script demonstrates how to use the SimplifyBuilding function.

# Name: SimplifyBuilding_Example2.py
# Description: Aggregate building features and then simplify them.

# Import system modules
import arcpy
import arcpy.cartography as CA

# Set environment settings
arcpy.env.workspace = "C:/data/Portland.gdb/Buildings"

# Set local variables
inBuildingFeatures = "houses"
inBarrierFeatures = "roads"
aggregatedFeatures = "C:/data/PortlandOutput.gdb/residential_areas"
simplifiedFeatures = "C:/data/PortlandOutput.gdb/residential_simplified"

# Aggregate house polygons
CA.AggregatePolygons(inBuildingFeatures, aggregatedFeatures, 10, 100, 100, 
                     "ORTHOGONAL")

# Simplify residential building polygons
CA.SimplifyBuilding(aggregatedFeatures, simplifiedFeatures, 10, 100, 
                    "CHECK_CONFLICTS", inBarrierFeatures, 
                    "KEEP_COLLAPSED_POINTS")

Licensing information

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

Related topics