Apportion Polygon (Analysis)


Summarizes the attributes of an input polygon layer based on the spatial overlay of a target polygon layer and assigns the summarized attributes to the target polygons. The target polygons have summed numeric attributes derived from the input polygons that each target overlaps. This process is typically known as apportioning or apportionment.

This tool can be used to estimate the population of one feature based on the percentage of that feature that overlays another feature with a known population.


Apportion Polygon tool illustration
The partial sum of input attributes within the target is shown.


  • By default, the percentage of overlapping area determines the value of the attribute. A weight field can be used in conjunction with the area to determine the portion of the attribute to be summed from each overlapping feature.

  • A weight field value of 0 will set the fields to apportion values to 0 for any overlapping target features.

  • This tool honors the Parallel Processing Factor environment. If the environment is not set (the default) or is set to 100, full parallel processing will be enabled and the tool will attempt to distribute the work to all the logical cores on the machine. Setting the environment to 0 will disable parallel processing. Specifying a factor between 1 and 99 will cause the tool to determine the percentage of logical cores to use by applying the formula (Parallel Processing Factor / 100 * Logical Cores) rounded up to the nearest integer. If the result of this formula is 0 or 1, parallel processing will not be enabled.


arcpy.analysis.ApportionPolygon(in_features, apportion_fields, target_features, out_features, method, {estimation_features}, {weight_field}, {maintain_geometries})
ParameterExplanationData Type

The polygon features that have numeric attributes to be summarized into the target polygon geometries.

Feature Layer

The numeric fields from the input polygons that will be summarized by each target polygon and recorded in the output feature class.


The polygon features that will be copied to the output feature class and include all apportioned fields.

Feature Layer

The output feature class containing the attribute and geometries of the target polygons as well as the specified apportion fields from the input polygons.

Feature Class

Specifies the method used to apportion the fields from the input polygons to the target polygons.

  • AREAThe amount that each input polygon contributes to the summarized values for each target feature is determined by the area of overlap between the two features. If an input feature overlaps two target features by the same amount, the apportioned fields will be divided in two and contribute to both target features by half of the total value. This is the default.

This parameter is disabled in ArcGIS Pro 2.7 and will be supported in a future release.

Feature Layer

A numeric field from the target polygons layer that is used to adjust which target polygons receive larger apportioned values from the input polygons' fields to apportion. Targets with higher weight are apportioned a higher ratio of the field values.


Specifies whether the output feature class will maintain the original geometries from the target polygon layer.

  • MAINTAIN_GEOMETRIESThe output feature class will maintain the original geometries of the target polygon layer. This is the default.
  • INTERSECT_GEOMETRIESThe output feature class will be a geometric intersection of the target polygons and the input polygons. Only areas of the target polygons that overlap an input polygon will be included in the output.

Code sample

ApportionPolygon example 1 (Python window)

The following Python window script demonstrates how to use the ApportionPolygon function.

import arcpy
arcpy.env.workspace = "C:/data/MyAnalysis.gdb"
        "CensusBlockGroups", "Pop2020", "StoreServiceArea", 
        "StoreServiceArea_w_Population", "AREA", "", "", "MAINTAIN_GEOMETRIES")
ApportionPolygon example 2 (stand-alone script)

The following stand-alone script transfers area-weighted population from a Census Block Groups layer to a Store Service Area polygon.

# Name: Store Service Area Get
# Description: Use apportionment to transfer population figures to different geometry 

# Import system modules 
import arcpy

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

# Perform apportionment
inputDataWithPop = "CensusBlockGroups"
popField = "Pop2020"
targetServiceAreas = "Store_ServiceAreas"
outputApp = "Store_ServiceAreas_w_Population"
apportionMethod = "AREA"
arcpy.ApportionPolygon_analysis(inputDataWithPop, popField, targetServiceAreas, 
                                outputApp, apportionMethod, "", "", 

# Summarize store service area populations by store admin region
outStats = "PopulationPerSalesRegion_tlb"
statsFields = [["Pop2020", "SUM"]]
regionField = "SalesRegion" # Values like North, North-East, etc.
arcpy.Statistics_analysis(outputApp, outStats, statsFields, regionField)

Licensing information

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

Related topics