Summary
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.
Illustration
Usage
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.
Syntax
arcpy.analysis.ApportionPolygon(in_features, apportion_fields, target_features, out_features, method, {estimation_features}, {weight_field}, {maintain_geometries})
Parameter | Explanation | Data Type |
in_features | The polygon features that have numeric attributes to be summarized into the target polygon geometries. | Feature Layer |
apportion_fields [apportion_fields,...] | The numeric fields from the input polygons that will be summarized by each target polygon and recorded in the output feature class. | Field |
target_features | The polygon features that will be copied to the output feature class and include all apportioned fields. | Feature Layer |
out_features | 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 |
method | Specifies the method used to apportion the fields from the input polygons to the target polygons.
| String |
estimation_features (Optional) | This parameter is disabled in ArcGIS Pro 2.7 and will be supported in a future release. | Feature Layer |
weight_field (Optional) | 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. | Field |
maintain_geometries (Optional) | Specifies whether the output feature class will maintain the original geometries from the target polygon layer.
| Boolean |
Code sample
The following Python window script demonstrates how to use the ApportionPolygon function.
import arcpy
arcpy.env.workspace = "C:/data/MyAnalysis.gdb"
arcpy.ApportionPolygon_analysis(
"CensusBlockGroups", "Pop2020", "StoreServiceArea",
"StoreServiceArea_w_Population", "AREA", "", "", "MAINTAIN_GEOMETRIES")
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 Population.py
# 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"
keepTargetGeom = "MAINTAIN_GEOMETRIES"
arcpy.ApportionPolygon_analysis(inputDataWithPop, popField, targetServiceAreas,
outputApp, apportionMethod, "", "",
keepTargetGeom)
# 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)
Environments
Licensing information
- Basic: Yes
- Standard: Yes
- Advanced: Yes