Joins in ArcGIS Pro

Revised 10 March 2026

A join is a database operation where two tables are connected based on common key values. Joins are very commonly used for processing and analyzing geospatial data.

This tutorial covers basic join techniques that you can use in ArcGIS Pro. Most of the examples will use data from the US Census Bureau.

All videos in this tutorial are silent.

Attribute Joins

In GIS, an attribute join attaches a table of attribute data to a feature class of polygons based on a set of key field values common to both the table and feature class.

Attribute joins can be used to connect data from external tables (such as in a CSV file) to geospatial defined in polygon feature classes.

Attribute join illustration

Joining USCB Table Data to Polygons

The US Census Bureau makes their makes their data available as tables and you will need to join those tables to TIGER/Line polygons for mapping and spatial analysis. USCB data is described more fully in the tutorial on Geospatial Data from the US Census Bureau.

To join USCB table data to USCB polygon feature class, we join on the GEO_ID field in the downloaded table data and the GEOIDFQ field in the polygon feature class.

Joining USCB table data with polygons in ArcGIS Pro

Joining Non-USCB Data on FIPS Codes

Geospatial table data from non-USCB sources occasionally includes FIPS codes for areas that can then be joined with TIGER shapefiles or secondary data GEOIDFQ for import into ArcGIS Pro.

There are multiple common challenges to joining with FIPS codes from non-USCB sources:

The solution to these problems is to convert your FIPS codes into GEOIDFQ in your spreadsheet program before importing and joining the CSV in ArcGIS Pro.

For example, the downloadable county level data for the US Religion Census from the Association of Statisticians of American Religious Bodies contains a FIPS code numeric FIPS code field.

Joining table data on FIPS codes in ArcGIS Pro

Joining Non-USCB Data on County Names

Attribute joins can be used to join county-level table data to TIGER polygons based on county names for choropleth mapping.

Be aware that attribute joins require that the names in the two data sets match exactly, and using place names for joins can result in mismatches or a complete failure to join any features.

This example uses county-level results in Illinois from the 1960 US presidential election from the Illinois Secretary of State via Wikipedia.

Joining county table data to polygons in ArcGIS Pro

Spatial Joins

A spatial join connects two datasets based on a spatial relationship where attribute values are transferred from a set of features in a join layer to a target layer.

Spatial joins can be used to aggregate and summarize values to/from USCB polygons for mapping and analysis.

Spatial join

Joining Dissimilar Areas

Spatial joins can be used to aggregate data from polygons into larger or smaller polygons. This example demonstrates use of a spatial join to join demographic census tract data from the Minn 2015-2019 ACS Tracts feature service to neighborhood boundaries in the City of Chicago.

Joining dissimilar areas

Point Attributes from Polygons

You can get attribute data for points from polygons with a spatial join.

In this example we join hospital locations in Illinois with census tracts to get demographic characteristics of the neighborhoods where the hospitals are located.

Hospital demographics

Proximity Joins

Spatial joins can be used to get counts of join features within a specific distance of the target features.

For this example, we join park boundaries from the Chicago Park District with census tracts in Cook County, IL to get the count of parks within 1/2 mile of each census tract.

Counts of parks within 1/2 mile of census tracts in Cook County, IL

Aggregate Points

Spatial joins can be used to get counts of point within polygons.

This example aggregates Chicago Police Department robbery crime points for 2023 from the Chicago Data Portal

Neighborhood robbery counts in 2019 and 2023

Aggregate Coverage

Spatial joins can be used to calculate the areas of polygon features that are covered by areas in another feature class.

This example estimates the percentage of census tracts in Milwaukee County, WI (Tracts) that are covered with tree canopy based on a feature class of tree canopy polygons (Tree_Canopy) digitized from 2020 lidar data by the Milwaukee County GIS and Land Information Office.

Aggregating polygon coverage areas

Categorical Percentage

Spatial joins can be used to calculate percentages of features based on categorical variables.

This example estimates the percentage of waterways by Illinois county that are classified by the US Environmental Protection Agency (EPA) as too polluted or otherwise degraded to support their potential or existing uses (impaired). The original data source is the EPA via the ArcGIS Living Atlas USA Impaired or Threatened Waterbodies lines feature service.

The feature class contains an is_impaired flag (Y/N) to indicate impairment status.

Calculating area percentages using spatial joins

Joins for Analyzing Change

You can use joins between data for different vintages (year ranges) to analyze change over time.

The examples below use ACS data downloaded from the Minn 2010-2014 ACS and Minn 2019-2023 ACS feature services in the University of Illinois ArcGIS Online organization. This data is also available as GeoJSON files.

Analyzing Change with Attribute Joins

If you are comparing areas that have not significantly changed spatially over time, attribute joins are preferred to avoid the data ambiguities associated with spatial joins.

For this example, we join 2010-2014 population data to 2019-2023 demographic data to analyze population change by county over that period.

Analyzing population change in Illinois counties with an attribute join

Analyzing Change with Polygon Joins

Areas used for aggregating data often change over time.

When analyzing changes across time with between feature classes with dissimilar areas, you will need to use spatial joins.

With spatial joins you will generally want to use the means of derived values (like percentages or means) rather than sums of fundamental values that can result in distorted results when individual join areas overlap multiple target areas.

This example analyzes income and population density change in Cook County, IL census tracts between 2010-2014 and 2019-2023.

Analyzing population density change in Cook County, Illinois using a polygon join

Analyzing Change with Centroid Joins

A challenge with polygon joins is that the areas used between different years can have slightly different borders resulting from minor data changes over time. This can result in sliver overlaps where spatial joins average values from adjacent join polygons that are not actually representative of areas covered by target polygons.

This example analyzes income and population density change in Cook County, IL census tracts between 2010-2014 and 2019-2023.

Analyzing population density change in Cook County, Illinois using a centroid join

Analyzing Gentrification

The term gentrification in the contemporary context was first used by Ruth Glass (1964) to describe the transformations in London associated with the migration of middle class residents into traditionally poor and working class urban neighborhoods. The concept itself is contested, as are the different techniques for identifying gentrifying areas. In addition, US Census Bureau ACS data data often has wide margins of sampling error and temporal uncertainty introduced by long sampling periods in a highly dynamic areas that are undergoing gentrification.

Daniel Yonto and Claire Schuch (2020), followed David Ley (1986) in analyzing social gentrification on a continuous scale with a tract-level social status index:

Areas with large changes in the social status index are often gentrifying.

This example demonstrates analysis of gentrification in Cook County, IL between 2010-2014 and 2019-2023. Because this example chains multiple tools together, we use ModelBuilder to facilitate reproducability and debugging.

Analyzing gentrification in Cook County, Illinois using a social status index

Raster and Elevation Data

While the USCB does not provide raster or elevation data, ArcGIS Pro provides tools that can be used to acquire, clip, and summarize raster data within USCB polygons.

Image Service Download

Image services provide clients with the ability to access raster and image data from a server geodatabase.

The National Agricultural Imagery Program (NAIP) is a program begun by the US Department of Agriculture (USDA) in 2002 to collect leaf-on aerial imagery during the agricultural growing season. Aside from research value, the imagery is used to maintain the USDA's Common Land Unit (CLU) database of farm fields across the US (ESRI n.d.).

For this example we demonstrate how to download a portion of the USA NAIP Imagery: Natural Color Living Atlas layer covering Peoria County, Illinois to a raster in the project geodatabase.

  1. Acquire: Add the desired image service layer to your map.
  2. Store: Right click on the image layer and select Data and Export Raster tool
  3. Communicate: Remove the ArcGIS Online tile layer and leave only the new raster layer on the map.
Exporting a portion of an Living Atlas image layers to the project geodatabase

Clipped Image Service Download

If you have boundary polygon(s), you can clip the downloaded raster.

  1. Acquire: Add the desired image service layer to your map.
  2. Store: Right click on the image layer and select Data and Export Raster tool
  3. Communicate: Remove the ArcGIS Online tile layer and leave only the new raster layer on the map.
Exporting a clipped section of an Living Atlas image layers to the project geodatabase

Point Elevation

If your primary interest is getting elevation values for points and you have fewer than 1,000 features, the Summarize Elevation tool can be used to add an elevation field to a point feature class from ESRI's world elevation service.

This example demonstrates adding elevation values to a point feature class of Chicago Transit Authority "L" Stations.

Getting elevation values for points

Area Elevation

As with points, if your primary interest is getting elevation values for areas and you have fewer than 1,000 features, the Summarize Elevation tool can be used to add an elevation field to an area feature class.

This example adds elevation to neighborhood boundaries in the City of Chicago.

Getting elevation values for areas