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.
- Absolute levels of employment in that profession
- Housing affordability relative to median salary for that profession
- Proximity to family and/or preferred lifestyles
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.
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.
- Go to the Occupational Employment and Wage Statistics Query System page.
- Select a search type: One occupation for multiple geographic areas
- Select one occupation: Architecture and Engineering Occupations, 17-3031 Surveying and Mapping Technicians
- Select a geographic type: Metropolitan or Non Metropolitan Area
- Select one or more areas: All MSA in this list
- Select one or more datatypes: All data types
- Select one or more release dates: Use the most recent release
- Select an output type: Excel
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.
- Remove non-data rows from above and below the data.
- Provide new field name headers with no footnotes (Area_Name, Employment, Median_Wage, Employment_Per_1k).
- 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.
- Save the table as a .csv file (MSA_Table.csv).
- Run the Export Table tool to import the CSV file into a new table in the project geodatabase (MSA_Table).
- 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.
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.
- Download the BLS MSA shapefile from the OES FAQ page.
- Run the Export Features tool to import the shapefile data into a new feature class in the project geodatabase (MSA_Polygons).
- If the map changes to unprojected lat/long, change the projection to a cartographically appropriate projection like web Mercator.
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.
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.
- Create a spreadsheet in Excel with names, latitudes, and longitudes of the preferred locations that you get from Google Maps.
- Save as a CSV file. Use underscores to separate words to avoid problems with ArcGIS Pro tools (Preferred_Cities.csv).
- Run the XY Table to Point tool to copy the points into a new feature class in the project geodatabase (Preferred_Cities).
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.
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.
- Input Table: MSA_Table
- Field Name: MSA_ID
- Field Type: Long
- Expression: isolate_msa(!Area_Name!)
- Code Block:
def isolate_msa(x): return(int(x[-8:-1]))
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.
- Input Table: MSA_Polygons
- Field Name: MSA_ID
- Field Type: Long
- Expression: !msa7!
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.
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.
- 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.
- Input Features: MSA_Polygons
- Output Feature Class: BLS_Polygons
- Add the Join Field tool to your ModelBuilder diagram and run it.
- Input Table: BLS_Polygons
- Input Join Field: MSA_ID
- Join Table: MSA_Table
- Input Join Field: MSA_ID
- Transfer Method: Use field mapping
- Select Add to Display and symbolize the MSA_Table to confirm the join worked.
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.
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.
- Add the Spatial Join tool to your ModelBuilder diagram.
- Target Features: ACS_Counties
- Join Features: BLS_Polygons
- Output Feature Class: BLS_Counties
- Keep All Target Features: Uncheck
- Fields: Optionally, you may wish to remove unneeded fields to avoid clutter. Make sure to leave the Median Monthly Mortgage and BLS occupation data fields.
- Run the tool, Add to Display, and change the Symbology to verify the join worked.
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)
- An affordability index of 100 indicates the normal percentage of income going to housing.
- Values above 100 reflect affordability better than normal across the US.
- Values below 100 reflect lower affordability than normal.
Add the Calculate Field tool to your ModelBuilder diagram and run it.
- Input Table: BLS_Counties
- Field Name: Affordability
- Field Type: Double
- Expression: 100 * (!Median_Wage! * 0.29) / (!Median_Monthly_Mortgage! * 12)
Point Proximity
Add the Near tool to add fields with distances from each county to the nearest preferred city.
- Input Features: BLS_Counties
- Near Features: Preferred_Cities
- Search Radius: 10000 Km
- Distance field: Preferred_Distance
- Distance Unit: Kilometers
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.
- Input Features: BLS_Counties
- Output Feature Class: Suitable_Counties
- Filter:
- Where: Employment > 50 (criteria for job availability)
- And Where: Affordability > 70
- And Where: Distance < 300
You can adjust the thresholds as needed to reflect different levels of importance for the different criteria.
- When you are young or are starting out in a profession with long hours and limited time for recreation, proximity to family or recreational activities may not be as important and you could increase the distance to points of interest.
- If you have a partner or roommate(s) whose employment could significantly increase your household income, you could decrease the affordability threshold.
- If you are planning on having children and need more space at home, you may want to increase the housing affordability threshold.
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.
- Right click on the BLS_Counties layer in the Contents pane and select Share and Share As Web Layer.
- Give the new feature service a meaningful name (Minn_2023_Suitability).
- Under Share with, select Everyone.
- 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.
- Click Publish.
- In the Contents page in your ArcGIS Online account, verify that the feature service has been published.
- Update the metadata.
- Summary
- Description
- Credits (Attribution)
Web Map
From the feature service information page, select Open in Map Viewer.
- Configure pop-ups with fields appropriate for analyzing areas:
- Name
- Median Monthly Mortgage
- Area Name
- Median Wage
- Employment
- Affordability
- Preferred_Distance
- Save the map (Minn_2023_Suitability).
- Share with Everyone.
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.
- Select Create New and choose the Blank Grid template.
- Save the app under a meaningful name (Minn 2023 Mapping Tech Suitability).
- Add a Map widget.
- Select map, Add new data with the map you created above, and select the map to add it to the map widget.
- Click Live view to adjust the map viewport.
- Add a Legend widget.
Filters
A filter widget allows the app user to interactively select criteria ranges that match their preferences.
- Add a Filter widget below the map.
- Click + New Filter and Select Data to choose the web map added above.
- Select Apply this filter automatically at the bottom of the dialog.
- Click SQL Expression Builder, Add Clause and select the Employment variable.
- Click More input settings (the gear icon) and choose Ask for values
- Click the Select source type icon and select Predefined (unique).
- Add predefined values. You might consider using the values from the natural breaks classification for the variable from the ArcGIS Pro map.
- Test in Live view.
- Repeat for the other criteria.
Table
Table widgets can be added to display information about the visible features.
- Drag to add the Table Widget.
- Click New Sheet, Select data and choose the map feature layer.
- Select the fields to display (Name, ST, Employment, Affordability, Distance)
Publish
Save and preview the app in a new window to verify that it works as desired.
- Save under a meaningful name (Minn 2023 Mapping Tech Suitability).
- Change share settings as needed (Everyone).
- Publish the app to make it available to users.
- Copy published item link to get a link that you can use to share the app with users.
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 ...
- Y is the final score
- Β1 - n are the weights
- x1 - n are the criteria
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.
- Open the Make Suitability Analysis Layer tool.
- Use the layer that contains the ACS and BLS data (Counties).
- This will create a new layer to which you can then add criteria (Suitability Analysis).
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.
- 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.
- In the Suitability Analysis tab, select Add Criteria, Add Points Layer to start the Add Point Layer Based Suitibility Criteria tool.
- Site Layer ID Field: OBJECTID
- Point Features: Your family point layer (Family)
- Criteria Type: Minimal Distance
- Distance Type: Straight Line
- Measure Unit: Miles
- Click Calculate to see the point effect.
- Repeat for preferred cities.
Field Based Criteria
Field based criteria are suitability criteria based on the values of fields in the suitability layer.
- Click Add Criteria, Add Fields from Input Layer to start the Add Field Based Suitability Criteria tool.
- Click Fields and select the fields you want to use as suitability criteria. For this analysis, we use:
- Employment (criteria for job availability)
- Affordability
- Click Add at the bottom of the selection list and Run the tool.
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.
- Under the Feature Layer ribbon, turn Layer Blend to Multiply so you can see the underlying base map as you adjust criteria.
- Make sure Auto Calculate is off to eliminate time-consuming recalculations after each adjustment.
- On the Suitability Analysis ribbon, click Suitability Criteria to see the interactive sliders for adjusting criteria.
- Adjust the Inverse for criteria where lower values for the criteria indicate higher suitability. For example, in this case distance to family and preferred cities should be inverted because counties at higher distances from these points have lower desirability.
- Adjust Weights to specify the relative importance in percent of different criteria in suitability analysis.
- Click Calculate to show the new scores.
- Thresholds specify the minimum or maximum values considered for analysis and prevent outliers from distorting the analysis.
- Use Filter Output by Score to limit the range of displayed values to only the locations with the highest scores. Click Calculate after adjusting the values to reset the category colors.
- After you have adjusted your weights, you should consider using a diverging color symbology to make high and low suitability areas clearer.
- This should be the last step because recalculation will reset the symbology erratically.
- If the dialog will not let you change the symbology (4:10), try changing the Primary Symbology type to something else, then back to Graduated Colors as a workaround for this bug.
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.
- Give the new feature service a meaningful name (Minn_2023_Map_Tech).
- Under Share with, select Everyone.
- 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.
- Click Publish.
- In the Contents page in your ArcGIS Online account, verify that the feature service has been published.
Metadata
View the feature service information page in ArcGIS Online and update the metadata.
- Summary
- Description
- Credits (Attribution)
Web Map
From the feature service information page, select Open in Map Viewer.
- 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)
- Save (Minn_2023_Map_Tech)
- Share with Everyone
Dashboard
On your ArcGIS Online Content page, select Create App and Dashboard.
- Provide a meaningful title that will be displayed at the top of the dashboard.
- Add the map you created above along with a Legend and Zoom controls.
Add Charts
- Add a Serial Chart element.
- Data:
- Category field: Name
- Statistic: Average
- Field: Affordability
- Value Axis title: Affordability
- Actions: Zoom on the map.
- Series: Change bar color if desired
- Repeat for Straight Line to Family.
- Repeat for Final Score
- On the map, add Map Actions to Filter all of the charts.
Add List
Add a list of displayed counties under the map.
- Data:
- Maximum features displayed: 5
- Sort by: Rank
- List: Name: # Rank Final_Score
- Actions: Zoom the map
- On the map, add a Filter to the list.
Save and Share
Save the dashboard and set the sharing on the ArcGIS Online Content page.
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
- Go to the USCB's data portal: https://data.census.gov.
- Search for "median selected monthly owner" to get the B25088 median selected monthly owner costs (dollars) by mortgage status table.
- Change the Geography to Counties and All Counties within the United States and Puerto Rico.
- Download Table
- 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.
- Use the Windows File Explorer to open the downloaded .zip archive and extract the .csv data file.
- 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).
- Save the file under a more-meaningful name (County_Table.csv).
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.
- Download the .zip archive of the shapefile.
- Extract the shapefile files from the archive using Windows Explorer.
- Use the Feature Class to Feature Class tool to import the shapefile polygons into the project database.
- Use the Join Field to attribute join the table to the polygons using the GEO_ID fields as the join fields.
- 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.