Suitability Analysis in ArcGIS Pro

Businesses and planning organizations frequently need to consider multiple criteria when deciding where to construct or open new facilities. These decisions can cover geographic scales from individual cities or states to whole nations, or potential locations around the world.

Suitability analysis is the quantification, comparison, and ranking of of locations based on how closely they adhere to specified criteria. (ESRI 2023).

This tutorial will cover the use of tools in ArcGIS Pro to perform suitability analysis for evaluating which US counties are most desirable for a given profession.

The US Bureau of Labor Statistics occupation category used as the example for this tutorial will be 17-3031 Surveying and Mapping Technicians.

Acquire the Data

Occupational Outlook Handbook

The Occupational Outlook Handbook (OOH) provides information on " what workers do, the work environment, education, training, and other qualifications, pay, the job outlook, information on state and area data, similar occupations, and sources of additional information for more than 300 occupational profiles covering about 4 out of 5 jobs in the economy" (BLS 2022).

The A-Z index is a good place to start looking for information on a specific occupation.

OOH surveying and mapping technicians

BLS Occupational Employment and Wage Statistics

The US Bureau of Labor Statistics' Occupational Employment and Wage Statistics (OEWS) program uses surveys to produces employment and wage estimates annually for approximately 830 occupations. Occupational groups are numbered with Standard Occupational Classification (SOC) codes.

The smallest unit of aggregation used by the OEWS is the metropolitan statistical area. Metropolitan statistical areas each represent "a core area containing a substantial population nucleus, together with adjacent communities having a high degree of economic and social integration with that core" (USCB 2021). Although some of these areas are spatially large, workers commonly commute within MSAs, which makes them useful for analyzing spatial concentrations of jobs in particular occupations.

  1. Go to the Occupational Employment and Wage Statistics Query System page.
  2. Select a search type: One occupation for multiple geographic areas
  3. Select one occupation: Architecture and Engineering Occupations, 17-3031 Surveying and Mapping Technicians
  4. Select a geographic type: Metropolitan or Non Metropolitan Area
  5. Select one or more areas: All MSA in this list
  6. Select one or more datatypes: All data types
  7. Select one or more release dates: Use the most recent release
  8. Select an output type: Excel
Downloading occupation data from the BLS

Spreadsheet Cleanup

The spreadsheet provided by the website is formatted for display and will need to be modified in order to be imported into ArcGIS Pro.

  1. Remove non-data rows from above and below the data.
  2. Provide new field name headers with no footnotes (Area_Name, Employment, Median_Wage, Employment_Per_1k).
  3. Select all numeric rows and perform a find/replace to remove all hyphens. Non-numeric characters in cells will cause ArcGIS Pro to create fields as Text rather than as numeric fields that can be analyzed quantitatively.
  4. Save the table as a .csv file (MSA_Table.csv).
  5. Run the Export Table tool to import the CSV file into a new table in the project geodatabase (MSA_Table).
  6. In the Fields section Properties, make sure all numeric columns are Double or Long rather than Text, and change the numeric field type(s) to Double (double-precision floating point real number) if needed.
Cleaning and importing the occupation data table

BLS MSA Polygon Data

While the data has MSA place names, in order to create choropleths of this data, you will need to join the table with data from a shapefile of MSA boundaries that you can also download from the BLS.

  1. Download the BLS MSA shapefile from the OES FAQ page.
  2. Run the Export Features tool to import the shapefile data into a new feature class in the project geodatabase (MSA_Polygons).
  3. If the map changes to unprojected lat/long, change the projection to a cartographically appropriate projection like web Mercator.
Downloading and importing MSA polygons from the BLS

ACS Homeowner Costs

We can get housing cost data for counties across the country from the US Census Bureau's American Community Survey.

The American Community Survey (ACS) is an ongoing survey that provides information on an annual basis about people in the United States beyond the basic information collected in the decennial census. The ACS is used by a wide variety of researchers when they need information about the general public.

For this example, we will Export Features from the Minn 2015-2019 ACS Counties feature service from the University of Illinois organization into a new feature class in the project geodatabase (ACS_Counties).

The homeowner cost variable we will use is Median Monthly Mortgage, the median selected monthly owner costs in dollars for housing units with a mortgage. Current values for this variable can be downloaded directly from the USCB in the B25088 median selected monthly owner costs (dollars) by mortgage status table.

Adding the ACS county data to the map

Point Criteria

Beyond professional and economic considerations, two major factors affecting residential choice include proximity to family and proximity to lifestyle locations, such as recreational activities or particularly desirable cities.

Points can vary in importance. For example, when elderly family members need caregiving, if moving them to you is not an option, you will need to move to them. Therefore, high importance point(s) should be in a separate layer so they can be prioritized.

For this example, we will use a set of large eastern and midwestern cities as desired locations to live.

  1. Create a spreadsheet in Excel with names, latitudes, and longitudes of the preferred locations that you get from Google Maps.
  2. Save as a CSV file. Use underscores to separate words to avoid problems with ArcGIS Pro tools (Preferred_Cities.csv).
  3. Run the XY Table to Point tool to copy the points into a new feature class in the project geodatabase (Preferred_Cities).
Processing preference points

Process the Data

Model Builder

While you can run the analysis tools manually, it can be helpful to use a ModelBuilder diagram that will save you from repeated typing as you debug your workflow.

Use of ModelBuilder also preserves your workflow so that you can update and reproduce your analysis in the future.

Note that you will probably wish to run the Export Features steps above manually rather than in your ModelBuilder diagram because saving project packages with references to feature services and shapefiles can be very slow while the packaging process downloads duplicate data from the external sources to include in the package.

Creating a blank ModelBuilder diagram

Table MSA ID

In the BLS data, the MSA ID code is tacked on ot the end of the area name, and we need to use a simple Python string slice to extract the ID into a separate numeric field that can be used for a join later.

Add the Calculate Field tool to your ModelBuilder diagram and run it.

Extracting the MSA ID

Polygons MSA ID

In the BLS MSA polygons, the numeric MSA ID code is stored as text and will need to be converted to an integer number to be used for the join later.

Add the Calculate Field tool to your ModelBuilder diagram and run it.

Changing the polygons MSA ID from text to integer

BLS MSA Polygon Join

A join is a common database operation where two data sets are connected to form a single data set. An attribute join connects two datasets based on common key values.

Attribute joins

In order to map the occupational data as a choropleth and perform area analysis, you need to attribute join the MSA polygons to the occupation data table.

  1. Add the Export Features tool to your ModelBuilder diagram to make a copy of the polygons so the join does not add unnecessary fields to the original feature class if you run the join multiple times.
  2. Add the Join Field tool to your ModelBuilder diagram and run it.
  3. Select Add to Display and symbolize the MSA_Table to confirm the join worked.
Joining the employment table to MSA polygons

Spatial Join Occupation and Housing Data

In order to analyze housing and occupational data, we need to join that data together.

A spatial join is a join where data from a join data set is copied into a target data set based on proximity of features in the two data sets.

Spatial joins for counts

Because MSAs and counties are different types of areas where an attribute join is not possible, we need to do a spatial join to transfer data from the MSAs to the counties that make up those MSAs.

  1. Add the Spatial Join tool to your ModelBuilder diagram.
  2. Run the tool, Add to Display, and change the Symbology to verify the join worked.
Joining employment data to county housing data

Housing Affordability Index

Housing costs tend to be higher in urban areas than in rural areas, although incomes also tend to be higher in urban areas than in rural areas, so housing affordability analysis needs to consider not only the absolute costs of owning a home in different areas, but also the typical income of homeowners in those areas.

A typical rule of thumb is that total housing costs with a mortgage should consume no more than 35% to 45% of your pre-tax income (Muller 2023).

In the 2021 ACS, US median household income was $68,717 and monthly US homeowner costs (mortgage payments + taxes, insurance, utilities, etc.) were $1,672 ($20,064 annually), which indicates housing costs typically consume 29% of income.

This formula creates an affordability index:

100 * (annual_median_wage * 0.29) / (monthly_median_mortgage * 12)

Add the Calculate Field tool to your ModelBuilder diagram and run it.

Calculating affordability

Point Proximity

Add the Near tool to add fields with distances from each county to the nearest preferred city.

Finding proximity to preferred cities

Categorical Suitability Analysis

Categorical suitability analysis involves the selection of geographic features that meet specific criteria. The term categorical indicates that features either fit or fail to fit specific criteria thresholds and there are no shades of gray.

Add the Export Features tool to create a new feature class of counties that meet the three different criteria.

You can adjust the thresholds as needed to reflect different levels of importance for the different criteria.

Categorical suitability

Categorical Suitability Web App

Interactive web apps can be created from geospatial data using ArcGIS Experience Builder.

Publish the Layer

The first step in creating the web app is to publish the data as a feature service web layer so it is accessible on the web.

  1. Right click on the BLS_Counties layer in the Contents pane and select Share and Share As Web Layer.
  2. Give the new feature service a meaningful name (Minn_2023_Suitability).
  3. Under Share with, select Everyone.
  4. Click Analyze. If you get the error "Unique numeric IDs are not assigned," click the ellipsis (...) on the message and select Auto-Assign Ids Sequentially.
  5. Click Publish.
  6. In the Contents page in your ArcGIS Online account, verify that the feature service has been published.
  7. Update the metadata.
Publishing the suitability criteria as a feature service

Web Map

From the feature service information page, select Open in Map Viewer.

  1. Configure pop-ups with fields appropriate for analyzing areas:
  2. Save the map (Minn_2023_Suitability).
  3. Share with Everyone.
Creating a web map

Experience Builder

ArcGIS Pro Experience Builder is a web app available through ArcGIS Online that can be used to build geospatial web apps without writing code.

From your ArcGIS Online Content page, select Create App and Experience Builder.

  1. Select Create New and choose the Blank Grid template.
  2. Save the app under a meaningful name (Minn 2023 Mapping Tech Suitability).
  3. Add a Map widget.
  4. Select map, Add new data with the map you created above, and select the map to add it to the map widget.
  5. Click Live view to adjust the map viewport.
  6. Add a Legend widget.
Creating a web experience

Filters

A filter widget allows the app user to interactively select criteria ranges that match their preferences.

  1. Add a Filter widget below the map.
  2. Click + New Filter and Select Data to choose the web map added above.
  3. Select Apply this filter automatically at the bottom of the dialog.
  4. Click SQL Expression Builder, Add Clause and select the Employment variable.
  5. Click More input settings (the gear icon) and choose Ask for values
  6. Click the Select source type icon and select Predefined (unique).
  7. Add predefined values. You might consider using the values from the natural breaks classification for the variable from the ArcGIS Pro map.
  8. Test in Live view.
  9. Repeat for the other criteria.
Adding interactive filters

Table

Table widgets can be added to display information about the visible features.

  1. Drag to add the Table Widget.
  2. Click New Sheet, Select data and choose the map feature layer.
  3. Select the fields to display (Name, ST, Employment, Affordability, Distance)
Adding a table

Publish

Save and preview the app in a new window to verify that it works as desired.

Publishing the web app

Weighted Suitability Analysis

Weighted suitability analysis involves the creation of a linear model that is a weighted sum of the different criteria (ESRI 2022).

Y = Β1x1 + Β2x2 ...

Criteria values are normalized to a range of zero to one, and the total of the weights is one (100%), so Final_Score is in a range of zero to one, with higher values representing higher levels of suitability.

Suitability analysis with this kind of calculation can be thought of as the opposite of multiple regression. Instead of starting with an existing dependent variable (Y) and calculating coefficients (Β) that maximize the fit of the dependent variable to the equation, in suitability analysis you specify coefficients (weights) and then use the calculated values of the dependent variable to identify the most suitable areas.

Suitability Analysis Layer

Once you have your data cleaned and consolidated, you begin suitability analysis by creating a suitability analysis layer and adding criteria to be considered in the analysis.

  1. Open the Make Suitability Analysis Layer tool.
  2. Use the layer that contains the ACS and BLS data (Counties).
  3. This will create a new layer to which you can then add criteria (Suitability Analysis).
Creating the suitability layer

Point Based Criteria

Point based criteria consider the relationship of the areas in the suitability analysis layer to point features in another layer.

We will add the criteria one-by-one to observe the effect on the suitability layer.

  1. In the Suitability Analysis tab, turn off Auto Calculate because with a large number of counties, recalculating each time you change a criteria weight will make your system impossibly slow.
  2. In the Suitability Analysis tab, select Add Criteria, Add Points Layer to start the Add Point Layer Based Suitibility Criteria tool.
  3. Repeat for preferred cities.
Adding point based criteria

Field Based Criteria

Field based criteria are suitability criteria based on the values of fields in the suitability layer.

  1. Click Add Criteria, Add Fields from Input Layer to start the Add Field Based Suitability Criteria tool.
  2. Click Fields and select the fields you want to use as suitability criteria. For this analysis, we use:
  3. Click Add at the bottom of the selection list and Run the tool.
Adding field based criteria

Criteria Weights

The Final Score attribute in the suitability analysis layer is the model output for suitability on a scale of zero to one, with higher values representing higher suitability.

Weights are used to indicate which criteria are more important than others, and ArcGIS Pro provides a graphical interface for adjusting weights while handling the complexities of the statistical calculations.

Adjusting criteria

Weighted Suitability Dashboard

Dashboards are web-based graphical user interfaces that provide an at-a-glance interactive summary of related information (analytics) on a single topic or business process. Dashboards are commonly driven by data sources that are updated in real time. Dashboards can be used to inform decision making (Wikipedia 2021).

For weighted suitability values published from ArcGIS Pro you can create a dashboard that displays the different values associated with suitability that are displayed on the map.

Publish the Layer

Right click on the suitability analysis layer in the Contents pane and select Share and Share As Web Layer.

  1. Give the new feature service a meaningful name (Minn_2023_Map_Tech).
  2. Under Share with, select Everyone.
  3. Click Analyze. If you get the error "Unique numeric IDs are not assigned," click the ellipsis (...) on the message and select Auto-Assign Ids Sequentially.
  4. Click Publish.
  5. In the Contents page in your ArcGIS Online account, verify that the feature service has been published.
Publishing the suitability analysis as a feature service

Metadata

View the feature service information page in ArcGIS Online and update the metadata.

Updating the feature service metadata

Web Map

From the feature service information page, select Open in Map Viewer.

  1. Configure pop-ups with fields appropriate for analyzing areas (Name, Median Monthly Mortgage, Area Name Median Wage, Employment, Affordability, Straight Line to Family, Final Score, and Rank)
  2. Save (Minn_2023_Map_Tech)
  3. Share with Everyone
Creating a web map

Dashboard

On your ArcGIS Online Content page, select Create App and Dashboard.

  1. Provide a meaningful title that will be displayed at the top of the dashboard.
  2. Add the map you created above along with a Legend and Zoom controls.
Creating the dashboard

Add Charts

  1. Add a Serial Chart element.
  2. Repeat for Straight Line to Family.
  3. Repeat for Final Score
  4. On the map, add Map Actions to Filter all of the charts.
Add charts

Add List

Add a list of displayed counties under the map.

  1. Data:
  2. List: Name: # Rank Final_Score
  3. Actions: Zoom the map
  4. On the map, add a Filter to the list.
Add the list

Save and Share

Save the dashboard and set the sharing on the ArcGIS Online Content page.

Saving and sharing the dashboard

Appendix: Acquiring USCB Spatial Data

The example above uses a preprocessed feature service for ACS data, and ACS data is available from a variety of different sources, including the ESRI Living Atlas data available in both ArcGIS Online and ArcGIS Pro.

However, if you want a specific variable, time period, or spatial area unavailable from those sources, you may need to acquire it directly from the source.

A challenge with USCB data from data.census.gov is only available as tables, and in order to work with data as geospatial areas, you will need to download a separate shapefile of polygons and join the table to the polygons.

Table Download

  1. Go to the USCB's data portal: https://data.census.gov.
  2. Search for "median selected monthly owner" to get the B25088 median selected monthly owner costs (dollars) by mortgage status table.
  3. Change the Geography to Counties and All Counties within the United States and Puerto Rico.
  4. Download Table
  5. Choose the ACS 5-Year Estimates Detailed Tables for the most recent year. While the 5-year data is not as current as the 1-year data, it has better coverage and lower margins of error.
  6. Use the Windows File Explorer to open the downloaded .zip archive and extract the .csv data file.
  7. Edit the .csv file to remove the description row and unneeded columns, leaving only GEO_ID, NAME, and the median monthly owner cost columns. Rename the monthly owner cost column to something more manageable (MONTHLY_COST).
  8. Save the file under a more-meaningful name (County_Table.csv).
Downloading and processing ACS homeowner cost data

USCB County Polygons

As with the BLS data, in order to map and analyze the county data, you need to join it to polygon data. County polygons are available from the USCB as TIGER cartographic boundary files.

  1. Download the .zip archive of the shapefile.
  2. Extract the shapefile files from the archive using Windows Explorer.
  3. Use the Feature Class to Feature Class tool to import the shapefile polygons into the project database.
  4. Use the Join Field to attribute join the table to the polygons using the GEO_ID fields as the join fields.
  5. If the housing cost field does not appear, it may have contained non-numeric characters, and the field needs to be converted to a numeric field using the Calculate Field technique described above.
Joining housing data to county polygons