Workflow using ArcGIS Pro
Creating a risk map
- If you haven't done so already, download and unzip the data package provided at the top of this workflow.
- Double-click HomelessnessPkg.ppkx to open the project package.
- Once the project opens, right-click the LARiskFactors layer in the Contents pane and click Attribute Table.
- Close the table. Turn off the CountyOutline layer (so only LARiskFactors and the base map layers are on).
- Select one census tract (it doesn't matter which one).
- Use the Copy Features tool to create a new layer with only this selected target tract.
- Input Features: LARiskFactors
- Output Feature Class: the name of your output feature class such as TargetTract
- Turn off the LARiskFactors layer. Move the target tract outside the study area using these steps: Click the Edit tab, click Select and select the TargetTract feature, then turn the CountyOutline layer back on. Click Move, then drag the TargetTract somewhere outside the study area. Click Finish. Click Save.
- Turn on the CountyOutline, TargetTract and LARiskFactors layers. Clear any selected features.
- Right-click on the TargetTract layer and open the Attribute Table. Open the attribute table for the LARiskFactors layer as well.
- In the table for the TargetTract layer, right-click the 2017 Total Population field and select Delete. You will use this field in the LARiskFactors layer, but it isn't one of the risk factors you are going to evaluate.
- Set the value for every variable in the TargetTract layer to be the worst-case (largest) value found in the LARiskFactors layer. So, for example, if you sort (descending) the 2011-2015 ACS Households with Income Below Poverty Level field, you see the largest value is 1809. Double-click the value for that variable in the TargetTract table and change it to match.
After your edits, the TargetTract fields should have the following values:
- 2011-2015 ACS Households with Income Below Poverty Level: 1809
- 2011-2015 ACS Percent of Households with Income Below Poverty Level: 100
- Change in number of HH below poverty level 13-17: 311
- ACS HHs w/Public Assist Income: 525
- ACS % HHs w Public Assistance Income: 42.40711
- Change in number of HH w Public Assistance 13-17: 145
- ACS HHs w/1+ Persons w/Disability: 1068
- ACS % HHs w 1+ Person w Disability: 100.0
- ACS HHs/Gross Rent 50+% of Income: 1132
- % HHs paying 50+% of income for rent: 100.0
- Change in number of HHs paying 50+% of income for rent: 207
- 2017 Unemployed Population 16+: 371
- 2017 Unemployment Rate: 52
- Change in Unemployment Rate 10-17: 52
- No Health Insurance Pop 18+: 2760
- % No Health Insurance Pop 18+: 74.94635
- % Veterans with PTSD: 25
- Est Veterans w PTSD: 92
- Est Serious Mental Illness Cnt: 1004
- Est % w a Serious Mental Illness: 12.5
- Substance Abuse Incidents: 233
- Substance Abuse Rate: 600
- Domestic Violence Incidents: 91
- Domestic Violence Rate: 4.545455
- Once you've updated the values for all fields in the TargetTract layer, click the Edit tab and Save your edits. Close the open tables.
- Find the Similarity Search tool. You will use it to rank all census tracts in the study area by how similar they are to your worst-case target tract. Run the tool with the parameters shown below. By entering zero for the Number of Results parameter, all tracts will be ranked.
- Input Features to Match: TargetTract
- Candidate Features: LARiskFactors
- Output Features: the name of your output feature class such as LARiskSurface
- Collapse Output to Points: Unchecked
- Most or Least Similar: Most similar
- Match Method: Attribute values
- Number of Results: 0
- Attributes of Interest: (all of them except UniqID, Shape_Length, and Shape_Area)
- Fields to Append to Output: Tract; 2017 Total Population
- Change the symbology as shown below. Click the More button to reverse the order of the class breaks. You can also hide the target feature by removing the check mark from the Show excluded values option. You can make the polygon outline width smaller (0.25) by selecting to Format all symbols from the More button and changing the Outline width on the Properties pane. Move the CountyOutline layer to the top of the Contents pane.
- With the Symbology pane open for the LARiskSurface layer, click the button in the upper right corner and select Vary symbology by attribute.
- Turn off all layers except the CountyOutline, LARiskSurface, and the base map layers. Expand Transparency and select 2017 Total Population for the Field parameter. You want High values (large populations) to have 0% transparency and Low values (small populations) to have 70% transparency. You also want to set the limits for those transparency values. Move the graph marker from 0 to 4000 by either sliding it down or double-clicking the value and typing 4000. Set the bottom marker to about 8000. Experiment with different color schemes and different transparency settings.
- Find the Join Field tool and use it to add the risk rankings to the LARiskFactors layer. Use the parameters shown below.
- Input Table: LARiskFactors
- Input Join Field: OBJECTID
- Join Table: LARiskSurface
- Output Join Field: CAND_ID
- Join Fields: Render Rank
- Create a vulnerability index field (the larger the ranking, the more vulnerable the people in a tract are to becoming homeless). First use the Add Field tool to create the new field.
- Input Table: LARiskFactors
- Field Name: RiskIndex
- Field Type: Long
- Field Alias: Vulnerability Index
- Use Calculate Field to compute the index from the risk rankings so the largest numbers reflect the highest risk. The Render Rank (!LABELRANK!) field has highest risk as 1. The Vulnerability Index field you just created, will have the lowest risk as 1 and the highest risk as 2343 (equal to the total number of tracts in the Los Angeles County study area).
- Input Table: LARiskFactors
- Field Name: Vulnerability Index
- Expression: 2344 - !LABELRANK!
- Open the LARiskFactors table and compare the Vulnerability Index and Render Rank fields. Save your work.
Notice the data associated with each census tract: number of households with income below the poverty level, percentage of households with income below the poverty level, change (2013-2017) in households with income below the poverty level, number of households with public assistance income, percentage of households with public assistance income, and so on. These variables represent risk factors for generating homelessness.
You will create a hypothetical census tract and give it the worst values found across the county for each of the risk factor variables. You will then rank all census tracts against this worst-case target tract.
Customization notes
Ideally, you would know where people in your city or region are becoming homeless. If you have this data, you can create the risk surface directly by mapping the average rate an area is generating new homeless people. Most likely, however, you won't have this data. In that case, you can create your risk surface using data about the risk factors known to promote homelessness. Don't miss the opportunity, however, during your next point-in-time count, to ask about last permanent residence (address or cross street, perhaps). You can use this data to validate the risk surface you create from risk factors.
All of the risk factor data should be collected for the same geometry (ZIP Codes, census tracts, or neighborhoods, for example). You will want to select a geometry with at least 30 polygons not only to provide variation in the results but also to meet minimum observation requirements for some of the statistical tools used in the workflows below. The Enrich Layer tool will provide data for any geometry you select, and it contains a number of helpful variables such as:
- ACS HHs w/Pulbic Assistance Income (ACSPUBAI)
- ACS HHs w/No Public Assist Income (ACSNOPUBAI)
- ACS HHs w/1+ Persons w/Disability (ACSHHDIS)
- ACS w/No Persons w/Disability (ACSHHNODIS)
- ACS HH w Income Below Poverty Level (ACSHHBPOV)
- ACS % HH w Income Below Poverty Level (PACSHHBPOV)
- ACS Civ Noninstitutionalized Pop 18-34 (ACSCIVNI18)
- ACS Civ Noninstitutionalized Pop 15-64 (ACSCIVNI5)
- ACS Civ Noninstitutionalized Pop 65+ (ACSCIVNI65)
- ACS Pop 18-34: No Health Insurance (ACS18NOHI)
- ACS Pop 35-64: No Health Insurance (ACS35NOHI)
- ACS Pop 65+: No Health Insurance (ACS65NOHI)
- ACS HHs/Gross Rent 50+% of Income (ACSGRNTI50)
- ACS Total Households (ACSTOTHH)
- Unemployed Population 16+ (UNEMP_CY)
- Unemployment Rate (UNEMPRT_CY)
- ACS Civilian Pop 18+: Veteran (ACSVET)
- ACS Vet: Gulf War I&II/No Vietnam (ACSVETG1G2)
- ACS Vet: Gulf War I&II/Vietnam (ACSVTG1G2V)
- ACS Vet: Gulf War I/No Vietnam (ACSVETG1)
- ACS Vet: Gulf War I/Vietnam (ACSVETG1V)
- ACS Vet: Gulf War II/No Vietnam (ACSVETG2)
- ACS Vet: Vietnam/Korea/No WW2 (ACSVETVK)
- ACS Vet: Vietnam/Korea/WW2 (ACSVTVKWW2)
- ACS Vet: Vietnam/No Korea/No WW2 (ACSVETV)
- American Indian Population (AMERIND_CY)
- Asian Population (ASIAN_CY)
- Black Population (BLACK_CY)
- Hispanic Population (HISPPOP_CY)
- Pacific Islander Population (PACIFIC_CY)
- White Population (WHITE_CY)
- Population of Two or More Races (RACE2UP_CY)
- Population by Race Base (RACEBASECY)
If you have point data (crime incidents, for example), use the Spatial Join tool to count the number of points within each polygon.
Create rate variables from count variables. Enrich Layer will give you the number of Hispanics in each polygon, for example. Dividing these counts by the Population by Race Base variable yields the percentage of people in each polygon that are Hispanic.
You can use apportionment tools to transfer data from one geometry to another. If you have mental health or substance abuse data, for example, at the ZIP Code level but you want to do your analysis at the census tract level, use the sample apportionment tool to transfer the ZIP Code level data to your census tract geometry based on underlying population distributions.
If data for some of the risk factors you want to include in your analysis isn't available, consider estimating it. You can estimate prevalence of severe mental illness, for example, based on race variables. PTSD among veterans can be estimated using ACS Veteran data. You can use the number of crime incidents involving drugs or alcohol as a surrogate for substance abuse prevalence. Domestic violence incidents can be estimated from violent crime data.
Consider adding change variables. Areas that have seen the largest increase in unemployment, for example, are probably at higher risk for homelessness. Subtracting the current employment rate from a rate several years back will create a change variable where the largest numbers are places that have seen the biggest increase in unemployment.
Consider including data related to incarceration, foster care, Department of Health Services hospitals, and emergency shelters. Poor transitions from these institutions may be important factors promoting homelessness.
Gather whatever data you have that reflect risk for homelessness. Don't worry if your data is incomplete; you can always repeat the analysis when additional variables become available. Move forward with what you have at hand. The risk surface you obtain, even with a partial list of variables, will still be valuable.
Mapping and examining risk factors
For this next workflow, you will analyze the spatial patterns of risk factors. This will allow you to implement the right remediation programs in the right places, helping to ensure the best results and largest impacts. Let's assume for the purposes of this exercise that Los Angeles County has decided to focus remediation efforts to prevent homelessness on unemployment, lack of affordable housing and veterans with PTSD.
- Turn off all but the CountyOutline and base map layers.
- You will rank the tracts in the study area to find the top 25 worst cases for each of the three remediation projects: unemployment, lack of affordable housing, and Veterans needing assistance. For the unemployment project, for example, you will identify the 25 tracts most closely matching worst case values for the number of unemployed, unemployment rate, and change in unemployment rate variables. You will use Similarity Search three times with the parameters shown below:
- Similarity Search parameters for the project to address unemployment
- Input Features to Match: TargetTract
- Candidate Features: LARiskFactors
- Output Features: the name of your output feature class such as UnempProject
- Collapse Output to Points: Unchecked
- Collapse Output to Points: Most similar
- Match Method: Attribute values
- Number of Results: 25
- Attributes of Interest: 2017 Unemployed Population 16+; 2017 Unemployment Rate; Change in Unemployment Rate 2010-17
- Fields to Append to Output: TRACT
- Similarity Search parameters for the project to address the lack of affordable housing
- Input Features to Match: TargetTract
- Candidate Features: LARiskFactors
- Output Features: the name of your output feature class such as AffHousingProject
- Collapse Output to Points: Unchecked
- Collapse Output to Points: Most similar
- Match Method: Attribute values
- Number of Results: 25
- Attributes of Interest: ACS HHs/Gross Rent 50+ % of Income; % HHs paying 50+ % of income for rent; Change in number of HHs paying 50+ % of income for rent
- Fields to Append to Output: TRACT
- Similarity Search parameters for the project to help Veterans suffering with PTSD
- Input Features to Match: TargetTract
- Candidate Features: LARiskFactors
- Output Features: the name of your output feature class such as VetProject
- Collapse Output to Points: Unchecked
- Collapse Output to Points: Most similar
- Match Method: Attribute values
- Number of Results: 25
- Attributes of Interest: % Veterans with PTSD; Est Veterans with PTSD
- Fields to Append to Output: TRACT
- Similarity Search parameters for the project to address unemployment
- Each of the three output layers has 26 features representing the 25 worst-case tracts for each project plus the target tract. Delete the target tract record from each output, then symbolize the layer using graduated symbols as shown below. Using proportional symbols may be more appropriate if the range of values being mapped is fairly consistent across all proportional symbol maps. For Los Angeles County, the range of values varies substantially, so you will use graduated circles in the steps below.
- To delete the target tract feature, open the output layer table. Select the target record (it will be the first record, MATCH_ID = 1). Delete the record. Save the result. Close the table.
- Apply Graduated Symbols rendering to the count field for each output (2017 Unemployed Population 16+, ACS HHs/Gross Rent 50+% of Income, and Est Veterans w PTSD). Select a color for the Template symbol and outline, or select a symbol from the CaseStudyStyles file included with the data package. Make the symbol size range 5.0 to 20.0. Set No color for the Outline color of the Background symbol. Set the number of Classes to 3.
- Set the class breaks and labels to appropriate values.
- Save your work.
Customization notes
Determine which remediation programs your city or region would like to tackle first. The workflow is the same whether you are focusing on a few remediation projects or many. This workflow identified the highest priority tracts for each project; select a number appropriate for your objectives. This workflow is important because it identifies targeted opportunities for preventing homelessness.
Mapping the distribution and exploring characteristics of homeless populations
This next workflow uses data from the point-in-time count conducted January 2017 for the Los Angeles Continuum of Care. The Continuum of Care region encompasses most of the county, but excludes Pasadena, Glendale, and Long Beach. The customization notes at the end of this section, include some tips that may be useful when you conduct your own homeless count.
- Turn off all layers except the CountyOutline, LATractHomelessPopData, and base map layers.
- Find the Optimized Hot Spot Analysis tool and use it to create a hot spot map showing where the county's residents live. You will create the maps using density variables (people divided by the square area of the tract they live in). You don't have to give a value for the Distance Band parameter, but doing so ensures all of your hot spot maps are created using the same scale of analysis.
- Input Features: LATractHomelessPopData
- Output Features: the name of your output layer such as TotalPopDensityHotSpots
- Analysis Field: 2017 Population Density
- Distance Band: 20000 Feet
- Use Optimized Hot Spot Analysis three more times to create density hot spot maps of the homeless population (Homeless Population Density), unsheltered homeless population (Unsheltered Homeless Pop Density), and sheltered homeless population (Sheletered Homeless Pop Density). Override the Distance Band, setting it to 20000 feet so that each variable is analyzed using the same scale of analysis.
- Open the table for the LATractHomelessPopData layer and notice the fields. The homeless characteristics data (risk factors, race/ethnicity, gender, and age) have been apportioned from Council District reports as well as from individual reports for Hollywood, Skid Row, and Venice. Tracts outside the Council District areas do not have values (the values appear as <Null>).
- Use Select Layer by Attribute to select tracts with apportioned data (look for non-null values for one of the apportioned fields) and a minimum of ten Total Homeless People.
- Use Copy Features to create a feature class of the selected tracts.
- Input Features: LATractHomelessPopData
- Output Feature Class: the name of your output feature class such as HomelessTapestry
- Clear the selection, close the table, and turn off all but the HomelessTapestry, and base map layers.
- Change the symbology of the HomelessTapestry layer to show the number of Total Homeless People in each census tract. Use Graduated Colors, Natural Breaks, and a color palette you like, such as the one shown below.
- Right-click the HomelessTapestry layer. Select Create Chart and Scatter Plot. Dock the empty chart window (Homeless Tapestry - Scatter Plot) below the map.
- On the Data tab of the Chart Properties pane, set the X-axis Number parameter to Homeless Veterans, the Y-axis Number to Chronically Homeless People, and uncheck Show linear trend. The trend line is most interesting when you want to look at correlations; in this case you are using the scatter plot to explore variable values.
- On the General tab of the Chart Properties pane, change the Chart title to Homeless Veterans, Chronically Homeless People.
- On the Data tab of the Chart Properties pane, expand the Axes section and check Log axis for both the X-axis and the Y-axis.
- Select the census tract with the highest number of homeless veterans and the highest number of chronically homeless people by clicking the point in the top-most right corner of the scatter plot. Notice that a selection is also made in the map, identifying the location of the census tract of interest. Notice, too, that the symbol color on the map, reflecting the total number of homeless people (Total Homeless People) matches the symbol color on the chart. Your map and chart are providing information about three different variables, plus location, and value magnitudes.
- Right-click the HomelessTapestry layer. Select Create Chart and Bar Chart. Dock the newly opened chart window beside the map so that both charts and the map are visible.
- In the empty chart window, turn on Filter by Selection to ensure only selected features appear in the chart.
- On the Data tab of the Chart Properties pane, set the following parameters. You will be able to set the Aggregation parameter after adding at least one field.
- Category or Date: Community
- Aggregation: Mean
- Series:
- From one or more fields
- Fields
- % Cars, Vans, Campers
- % Emergency Shelters, Transitional Housing, Safe Havens
- % Street Homeless
- % Tents, Encampments
- Refine the chart as appropriate. On the Fields parameter, for example, shorten the Label for the % Emergency Shelters, Transitional Housing, Safe Havens field to % Shelters and select colors for each field. On the General tab, change the Chart title to Shelter Type, and the Y axis title to % Homeless.
- To explore the different types of shelter by community, select a few census tracts in different locations on the map or in the scatter plot. The bar chart will update to show you the shelter type breakdown sorted by community. The graphic below shows an example of what the bar chart might look like.
- Right-click the HomelessTapestry layer. Select Create Chart and Bar Chart. Dock the newly opened chart window to the left of the scatter plot.
- In the empty chart, turn on Filter by Selection to ensure only selected features appear in the chart.
- Set the parameters on the Data tab of the Chart Properties as follows. You will be able to set the Aggregation parameter after adding at least one field.
- Category or Date: Community
- Aggregation: Mean
- Series:
- From one or more fields
- Fields
- % Addicted
- % w Brain Injuries
- % w Developmental Disabilities
- % w Physical Disabilities
- % w HIV/AIDS
- % w Serious Mental Illness
- % Victims of Domestic Violence
- Refine the chart as appropriate. On the General tab, for example, change the Chart title to Risk Factors, and the Y axis title to % Homeless.
- To explore the risk factors by community, select a few census tracts in the map or in the scatter plot and notice how the charts respond.
- Right-click the HomelessTapestry layer again. Select Create Chart and Histogram. Dock the newly opened chart window over the scatter plot.
- On the Data tab of the Chart Properties pane, set the following parameters.
- Number: % Under age 18
- With transformation: Square Root
- Number of bins: 40
- On the Data tab, expand Number Format and change the Decimal places to 2. The Y-axis (Count) is the number of census tracts associated with different percentages of homeless people under age 18.
- Select the right tail of the histogram to highlight the census tracts with the highest percentage of homeless people under the age of 18. You can see where the communities are located on the map, and what the predominant shelter type and risk factors are.
- On the Data tab for the histogram, change the Number parameter from % Under age 18 to % Female.
- Select the right tail of the histogram again, and examine the location, shelter type, and risk factors for the census tracts with the highest percentage of female homeless.
- Right-click the HomelessTapestry layer. Select Create Chart and Bar Chart. Dock the newly opened chart over the histogram so all 3 bar charts and the map are visible.
- On the Data tab of the Chart Properties pane, set the following parameters.
- Category or Date: Community
- Fields: Total Homeless People
- Aggregation: Sum
- On the General tab, set the Chart Title to Total Homeless by Community, and set the Y axis title to Total Homeless People.
- In the bar chart window, change the Sort type to Y-axis Descending.
- Select the two communities with the largest number of homeless people to see where they fall on the map, and to compare the associated shelter types and risk factors. Notice that Skid Row has more than twice as many homeless people as Hollywood. The Shelter Type chart reveals that very few homeless in Skid Row live in cars, vans, or campers. The Risk Factors chart indicates a large percentage of homeless in Hollywood are victims of domestic violence.
- Close the charts and clear any active selections. Save the project.
Customization notes
If you have a good system in place to conduct your point-in-time homeless census, great! If you are looking for some resources to improve your survey or the technology to collect data, consider these suggestions:
- A key to prevention is understanding where people are becoming homeless. The point-in-time counts tell us where homeless people are, but you shouldn't miss the opportunity to ask about last permanent residence (ZIP Code, address, or street intersection). The point-in-time counts are also an opportunity to ask about perceived reasons for homelessness.
- Poor transitions from foster care, jail, or other institutions may be an important factor generating homelessness. If so, this is a great opportunity for remediation. Be sure to record if a person's last permanent housing was an institution.
- Los Angeles County makes their survey questions public. They may help you design or enhance your own survey questions.
- To learn more about using Esri technology to conduct your point-In-time homeless census, check out these resources. This video, in particular, explains the point-in-time count application.
- Los Angeles doesn't make the raw survey results public. Only regional estimates are provided for variables relating to age, contributing risk factors, race/ethnicity, gender, and veteran status. As a consequence, apportionment was applied to get tract level estimates. You may notice that many of the estimates are duplicated across tracts. This is because, apparently, the apportionment algorithm is similar to the original estimation method used by the County. If you have raw survey results, you will not need to apportion the data but will instead use the survey data directly to paint a picture of the different homeless communities in your city. The workflow outlined above will be the same.
Weighing different options for locating new resources
There is no one best solution for where to provide new services. In this portion of the workflow, you will generate several possibilities (scenarios) and then overlay all of them to see if any locations optimize more than one objective. The maps below use the following colors, but feel free to use other colors if you prefer. For standard deviation rendering and a diverging color scheme, the white or neutral color should be associated with the -0.5 to 0.5 standard deviation class break.
Symbol | Color | Hex Code |
---|---|---|
Darkest gray | 828282 | |
Medium gray | B2B2B2 | |
Light gray | E1E1E1 | |
White | F5F5F5 | |
Light pink | FDE0EF | |
Medium pink | E9A3C9 | |
Darkest pink | C51B7D |
- Turn on the CountyOutline and AddResources layers and move them to the top of the Contents pane.
- First consider adding new resources to promote social equity. To do this, you will compute a supply versus demand variable relating the total county population in each tract to the total homeless population in each tract. You will need to know the number of residents and the number of homeless across the study area. Use Summary Statistics to get these values. You will need the total number of sheltered homeless across the study area in an upcoming step, so you will get that now as well. Find the Summary Statistics tool and run it with the following parameters:
- Input Table: AddResources
- Output Table: the name of your output table such as SumPopVars
- Field: 2017 Total Population; Statistic Type: Sum
- Field: Total Homeless People; Statistic Type: Sum
- Field: Total Sheltered People; Statistic Type: Sum
- After the tool runs, open the table and make note of the sums. The total residential population is 9,446,500. The total homeless population is 49,703 (49,702.811). The total sheltered homeless population is 12,933.
- Add a field (Add Field) to hold the supply vs demand computed values.
- Input Table: AddResource
- Field Name: SocialEquityIdx
- Field Type: Float
- Field Alias: Social Equity Index
- Calculate the social equity index using Calculate Field with the 2017 Total Population (TOTPOP_CY) and Total Homeless People (totPeople) fields as shown:
- Input Table: AddResources
- Field Name: Social Equity Index
- Expression: (!TOTPOP_CY!/9446500) - (!totPeople!/49703)
- Symbolize the Social Equity Index field as shown below. Provide clear labels for each class break indicating which areas across the county are bearing more than their share of the homelessness burden. Click More, Symbols, and Format all symbols; on the Properties tab you can then change the Outline color to a lighter shade of gray and change the Outline width to 0.25 pt. The map is shown below.
- Use Add Field with the following parameters.
- Input Table: AddResources
- Field Name: SocialEquityFlag
- Field Type: Short
- Use Calculate Field to set the initial value of this field to be zero. You've used this tool before and should have no problem with the parameters.
- Use Select Layer by Attribute to select the tracts with values for the Social Equity Index above 0.000862. The Expression will be: Social Equity Index is Greater Than 0.000862. Then use Calculate Field to flag those tracts by setting the SocialEquityFlag field to 1 (only for the selected tracts).
- Clear the selection, then save your rendering for the Social Equity Index to a file so you can view it later. This is important because you are going to override the existing rendering in the next step. To create the layer file, right-click the AddResources layer and select Sharing, then Save as Layer File. Select a folder, and give the file a name such as socialequitymap.lyrx. At the end of this section, you can add all of the layer files to your map and compare them.
- Add a field (Add Field) to hold the supply vs demand computed values.
- Input Table: AddResource
- Field Name: AccessibilityIdx
- Field Type: Float
- Field Alias: Accessibility Index
- Calculate the Accessibility Index using Calculate Field with the 2017 Total Population (TOTPOP_CY) and Total Sheltered People (totSheltPeople) fields as shown:
- Input Table: AddResources
- Field Name: Accessibility Index
- Expression: (!totPeople! / 49703) - (!totSheltPeople! / 12933)
- Symbolize the Accessibility Index the same way you symbolized the Social Equity Index. (Note: if you don't see the Accessibility Index field in the Symbology pane Field drop down, change the Symbology parameter to Unique Values, then back to Graduated Colors; this refreshes the field list). Use Standard Deviation for the Method parameter. Your map should look similar to this:
- Add a field named AccessibilityFlag with a Field Type of Short (use Add Field). Then use Calculate Field to initialize this new field to zero (set all values to zero).
- Use Select Layer by Attribute to select tracts with an Accessibility Index greater than 0.001315. Then use Calculate Field to set the AccessibilityFlag to 1 (only for the tracts selected).
- Clear the selection, then save your rendering for the Accessibility Index to a file so you can view it later. To do this, right-click the AddResources layer and select Sharing, then Save as Layer File. Select a folder, and give the file a name such as accessibilitymap.lyrx.
- Use Join Field with the parameters below to add the Vulnerability Index variable to the AddResources layer.
- Input Table: AddResources
- Input Join Field: TRACT
- Join Table: LARiskFactors
- Output Join Field: TRACT
- Join Fields: Vulnerability Index
- Symbolize the Vulnerability Index the same way you symbolized the other index fields. Since risk is not a diverging type of attribute, use white (low risk) up to dark pink (high risk). When you are finished, the map should look similar to the map below:
- Add a field named VulnerabilityFlag with a Field Type of Short (use Add Field). Then use Calculate Field to initialize this new field to zero.
- Use Select Layer by Attribute to select tracts with an Vulnerability Index greater than 1512.168145. Then use Calculate Field to set the VulnerabilityFlag to 1 (only for the tracts selected).
- Clear the selection, then save your rendering for the Vulnerability Index to a file so you can view it later. Right-click the AddResources layer and select Sharing, then Save as Layer File. Select a folder, and give the file a name such as Vulnerabilitymap.lyrx.
- Symbolize the Total Sheltered People variable the same way you symbolized the other index fields (choose Standard Deviation for the Method parameter). Again, use graduated colors that proceed from white (few resources) to dark pink (many resources). When you are finished, the map should look similar to the map below.
- Add a field named CentralizatonFlag with a Field Type of Short. Then initialize this new field to zero.
- Use Select Layer by Attribute to select tracts where Total Sheltered People is greater than 32.442204. Set the CentralizationFlag to 1 for the selected tracts.
- Clear the selection, then save your rendering to a file so you can view it later. Right-click the AddResources layer and select Sharing, then Save as Layer File. Select a folder, and give the file a name such as Centralizationmap.lyrx.
- Turn off the CountyOutline layer and select any tract to serve as the street strategy target tract.
- Use Copy Features to create a new feature class with just this one tract.
- Input Features: AddResources
- Output Feature Class: the name of your output feature class such as SSTargetTract
- Turn off all layers but the new target tract (SSTargetTract), then move the feature outside the study area by clicking on the Edit tab, selecting Move, and dragging the feature to a new position. Save your edit. Note: if after you move the feature and Save, the feature seems to move back to its original location, remove the layer from the Contents pane, then add it back in.
- Open the tables for both SSTract and AddResources. Edit the SSTract field values for VictimCount, 311 Call Count, and Chronically Homeless so they reflect the worst (largest) values in the AddResources study area. If you sort these fields, largest to smallest, in the AddResources table, you will find that the largest value for VictimCount is 332, for 311 Call Count is 330, and for Chronically Homeless is 854. Once you've made these changes, on the Edit tab, click Save.
- Run Similarity Search to rank all tracts that have these data fields, from worst to best using the parameters below:
- Input Features to Match: SSTargetTract
- Candidate Features: AddResources
- Output Features: the name of your output feature class such as StreetStrategyRankings
- Number of Results: 0
- Attributes of Interest: VictimCount; 311 Call Count; Chronically Homeless
- Add the index field using Add Field and the parameters below.
- Input Table: AddResources
- Field Name: SSIndex
- Field Type: Float
- Field Alias: Street Strategy Index
- Join the output from Similarity Search to the AddResources layers using Add Join and the parameters below.
- Layer Name or Table View: AddResources
- Input Join Field: OBJECTID
- Join Table: StreetStrategyRankings
- Output Join Field: CAND_ID
- Keep All Target Features: unchecked
- There are 940 features with rankings from 1 (most similar) to 940 (least similar). You will create an index field reversing the rankings so the largest number reflects the highest priority intervention site. Use Calculate Field to compute this index as shown.
- Input Table: AddResources
- Field Name: AddResources.SSIndex
- Expression: 941 - !StreetStrategyRankings.LABELRANK! (Render Rank)
- Remove the join (Remove Join tool).
- Symbolize the Street Strategy Index variable the same way you symbolized the other index fields (Standard Deviation rendering). When you are finished, the map should look similar to this.
- Add a field named StreetStrategyFlag with a Field Type of Short. Then initialize this new field to zero.
- Use Select Layer by Attribute to select tracts where Street Strategy Index is greater than 606.177236. Set the StreetStrategyFlag to 1 for the selected tracts.
- Clear the selection, then save your rendering to a file so you can view it later. Right-click the AddResources layer and select Sharing, then Save as Layer File. Select a folder, and give the file a name such as StreetStrategymap.lyrx.
- Add a field to sum the objective flags using Add Field.
- Input Table: AddResources
- Field Name: NumObjsMet
- Field Type: Short
- Field Alias: Number of Objectives Met
- Calculate the sum using Calculate Field.
- Input Table: AddResources
- Field Name: NumObjsMet
- Expression: !SocialEquityFlag! + !AccessibilityFlag! + !VulnerabilityFlag! + !CentralizationFlag! + !StreetStrategyFlag!
- Create a map showing the number of objectives met in each tract.
Building a homeless resource inventory and service locator application
Los Angeles County comprises a number of agencies tracking and monitoring resources for the homeless. Consequently, as an exercise only, in this part of the tutorial you will set up a Health Resource Inventory for homeless shelters. You will also learn about setting up a Homeless Service Locator application. This application allows you to give the general public access to information in your resource inventory.
Details for installing and configuring the Health Resource Inventory and Homeless Service Locator applications are available online. Specific steps for the data included with this tutorial are provided below.
- Follow the instructions provided to install the ArcGIS Solutions Deployment Tool add-in.
- Open a new ArcGIS Pro project.
- Add the Homeless_Shelters_and_Services layer to your map. Find it in the CSData.gdb file geodatabase that came with the data package.
- Make sure you are logged into your ArcGIS Online account through ArcGIS Pro.
- Follow the instructions to deploy the Resource Inventory solution. The Health Resource Inventory solution is in the Local Government folder. Find it quickly by typing Resource Inventory into the Search window. Select the solution and click Deploy. The task will run for a few minutes.
- Next, deploy the Homeless Service Locator application (search for Homeless Service Locator and click Deploy). Once done, click Finish. You will find the Health Resource Inventory and Locator Service applications, web maps, and feature layers in Content for your ArcGIS Online account.
- Add the Homeless layer from the Health Resource Inventory application to your ArcGIS project using the Add Data button, navigating to My Content in your Portal, and selecting the data layer.
- Examine the fields for this layer by opening the table, right-clicking on a field, and selecting Fields. Initially, this table doesn't have any records but the fields have been created.
- Compare the fields above with the fields found in your shelter data (Homeless_Shelters_and_Services).
- Start by combining the address fields into a single Full Address field. In the Geoprocessing pane, use the Add Field tool with the following parameters:
- Input Table: Homeless_Shelters_and_Services
- Field Name: fulladdr
- Field Type: Text
- Field Length: 250
- Field Alias: Full Address
- Populate the field with a concatenation of the address fields in your shelter data. Use Calculate Field with the following parameters:
- Input Table: Homeless_Shelters_and_Services
- Field Name: Full Address
- Expression: c(!addrln1!,!addrln2!,!city!,!state!,!zip!)
- Code Block:
def c (a1, a2, c, s, z): aStr = "" if a1 > " ": aStr = aStr + a1 + ', ' if a2 > " ": aStr = aStr + a2 + ', ' if c > " ": aStr = aStr + c + ', ' if s > " ": aStr = aStr + s + ' ' if z > " ": aStr = aStr + z return aStr
- Next, use the Configure an ArcGIS Solution task to add longer fields to the Health Resources Inventory application layer for your phone number and hours of operation data, and to add a second field for web url since your data has two url fields. You can later manually move the primary contact phone number over to the Contact Phone field. You will remove the duplicate Operational Hours field in a later step. For now, you don't want to lose any of this data.
- Click the Configure an ArcGIS Solution task, click Next Step, and then enter the parameters below. Once the parameters are filled out, click Run.
- Input Table: Homeless
- Field Name: Phones
- Field Type: Text
- Field Length: 254
- Field Alias: Phone Numbers
- Repeat with the parameters below, then click Run:
- Input Table: Homeless
- Field Name: Hours
- Field Type: Text
- Field Length: 254
- Field Alias: Hours of Operation
- Repeat with the parameters below, then click Run:
- Input Table: Homeless
- Field Name: url
- Field Type: Text
- Field Length: 80
- Field Alias: url
- Click the Configure an ArcGIS Solution task, click Next Step, and then enter the parameters below. Once the parameters are filled out, click Run.
- Identify the services available at each shelter by examining the description field in your shelter data. If you open the table and scroll through the values for this field, you will see reference to the services listed below on the left. This is not a complete list of all the services offered. You could create a complete list and add new fields for each. For the purposes of this exercise, however, you will match as many of the services as possible to existing fields in the application layer. You will then add fields for the services without matches.
- In the Geoprocessing pane, use Add Fields to create the service fields using the parameters shown below. You will click the plus sign next to Field Descriptions to open parameters for each new field.
- Input Table: Homeless_Shelters_and_Services
- Field Name: emshelter
- Field Type: Text
- Field Alias: Emergency Shelter
- Field Length: 5
- Field Name: houseassist
- Field Type: Text
- Field Alias: Housing Assistance
- Field Length: 5
- Field Name: food
- Field Type: Text
- Field Alias: Food Assistance
- Field Length: 5
- Field Name: medical
- Field Type: Text
- Field Alias: Medical Assistance/Counseling
- Field Length: 5
- Field Name: womenchildren
- Field Type: Text
- Field Alias: Women and Children Services
- Field Length: 5
- Field Name: veteran
- Field Type: Text
- Field Alias: Veteran Services
- Field Length: 5
- Field Name: training
- Field Type: Text
- Field Alias: Life and Work Skill Training
- Field Length: 5
- Field Name: clothing
- Field Type: Text
- Field Alias: Clothing/Personal Items
- Field Length: 5
- Field Name: transport
- Field Type: Text
- Field Alias: Transportation
- Field Length: 5
- Identify emergency shelters.
- Use the Select Layer by Attribute tool as shown below. Click the SQL button so you can enter the SQL expression directly. The LIKE SQL operator finds text within a text field. The NOT LIKE operator ignores records containing the matching text. To avoid mismatches due to capitalization, use LOWER to force all text to lower case before looking for a match. The SQL statement is: Name LIKE '%Emergency Shelter%' Or (LOWER(description) LIKE '%emergency shelter%' AND LOWER(description) NOT LIKE '%not an emergency shelter%')
- Use the Calculate Field tool to set the Emergency Shelter field to Yes for the selected records.
- Use Select Layer by Attribute again to switch the selection.
- With the selection set inverted, use Calculate Field again, to set the Emergency Shelter field to No.
- Repeat the steps you used to set the values for the Emergency Shelter field, to set the values for the Housing Assistance, Food Assistance, Medical Assistance/Counseling, Clothing/personal items, and Transportation fields. Use the layer, SQL expressions, and fields shown below to assist you with filling out the parameters. For each service field you will select records with particular key words, calculate the field for the selected records to Yes, switch the selection, and calculate the field for the switched selection to No.
- Clear the selection and save your work.
- Next you will add the two new service fields to the application data layer. In the configuration Tasks pane, continue where you left off. Add a field indicating which shelters offer clothing and personal items, as shown below. Click Run after the parameters are entered.
- Repeat the step above using the parameters below. Clicking Run will initiate adding this new field:
- Input Table: Homeless
- Field Name: Transport
- Field Type: Text
- Field Length: 5
- Field Alias: Transportation Services
- For the purposes of this tutorial you will add a field called Utilization to monitor shelter utilization. Click Run once all the parameters below have been entered. (Notice the Field Type is Float this time).
- Input Table: Homeless
- Field Name: Utilization
- Field Type: Float
- Field Alias: Ave % of beds occupied nightly
- Click Next Step then configure the domain for the Clothing and personal items field, as shown below. Repeat for the Transportation field using the same parameters.
- Click Finish and save your project.
- On the Tasks pane, select Load Data. You will use the append tool (option 2). Set the Input Datasets parameter to Homeless_Shelters_and_Services and the Target Dataset parameter to Homeless. The fields in the Health Resource Inventory application appear in red on the left side of the Field Map. You will match them to fields in your data layer. The table below shows the matching fields. If the matching field is not shown in the right panel, click Add New Source, find the field and give it a check mark, then click Add Selected. The Merge Rule is First for all fields.
- When the append operation is complete, you will see points for each shelter added to the map. Click Next Step, then Skip.
- Save and close your ArcGIS Project and log into your ArcGIS Online account.
- Open the Health Resource Inventory Web Mapping Application (View Application). Zoom to Los Angeles and click on a shelter. Notice Resource Editor pane includes some fields we aren't using (you added a longer field called Hours of Operation to use instead of the short Operational Hours field, for example), and that the new fields you added are at the bottom of the pane instead of grouped with similar fields (Transportation Services, for example, should be moved up with the other service fields).
- Close the application and, instead of selecting View Application, select Edit Application. This opens the application in ArcGIS Web AppBuilder.
- Click on the Widget tab, then click Set the widgets in this controller. Hover over the Resource Editor and click the pencil to configure the widget. Under the Layer Settings hover over Homeless Service and click the pencil on the far right under the fields column.
- Uncheck Display for the operhours field. Make the Hours field Editable then use the Actions to move it below the operhours field you turned off. Similarly, make the Phones field Editable and move it below the pocphone field. Leave Display for the pocphone checked on.
- Make the url, Clothing, Transport, and Utilization fields Editable. Use Actions to move the Clothing and Transport fields up, below the training field (at the end of the list of services). Move the url field up, just below the agencyurl field. Finally, move the Utilization field below the capacity field.
- Save the application (bottom left), then view it with your changes.
- You can use this application to edit the facilities (update the services offered, for example, pull out the primary contact number, update the hours of operation, and so forth). You can also use this application to add new facilities or to delete facilities. If you make changes, save your work by clicking Save at the bottom of the Resource Editor pane.
- From Contents, open Homeless Service Locator Web Mapping Application (View Application).
- Enter an address in Los Angeles such as the address for City Hall: 200 N Spring St, Los Angeles, CA 90012. The locator shows the facilities within the specified distance of the address provided. Clicking on one of the services on the panel, provides additional information about the facilities providing those services.
Child care | Women and Children Services |
Clothing | |
Domestic violence services | Medical Assistance/Counseling |
Emergency food | Food Assistance |
Employment services | Life and Work Skill Training |
Families with Children | Women and Children Services |
Family planning | Medical Assistance/Counseling |
Utility bill assistance | Housing Assistance |
Health services | Medical Assistance/Counseling |
HIV/AIDS services | Medical Assistance/Counseling |
Mental health services | Medical Assistance/Counseling |
Motel vouchers | Housing Assistance |
Runaway and youth services | Women and Children Services |
Substance abuse services | Medical Assistance/Counseling |
Transportation | |
Welfare-to-work support | Life and Work Skill Training |
Layer or Input Table | SQL expression | Field |
---|---|---|
Homeless_Shelters_and_Services | LOWER(description) LIKE '%voucher%' Or LOWER(description) LIKE '%housing%' Or LOWER(description) LIKE '%utility bill%' | Housing Assistance |
Homeless_Shelters_and_Services | LOWER(description) LIKE '%food%' | Food Assistance |
Homeless_Shelters_and_Services | LOWER(description) LIKE '%support services%' OR LOWER(description) LIKE '%planning%' OR LOWER(description) LIKE '%health%' OR LOWER(description) LIKE '%medical%' OR LOWER(description) LIKE '%domestic violence%' OR LOWER(description) LIKE '%hiv/aids%' OR LOWER(description) LIKE '%abuse%' OR LOWER(description) LIKE '%mental%' OR LOWER(description) LIKE '%battered%' OR LOWER(description) LIKE '%counsel%' | Medical Assistance/Counseling |
Homeless_Shelters_and_Services | LOWER(description) LIKE '%women%' OR LOWER(description) LIKE '%woman%' OR LOWER(description) LIKE '%child%' OR LOWER(description) LIKE '%youth%' OR LOWER(description) LIKE '%runaway%' OR (LOWER(description) LIKE '%recreation%' AND LOWER(description) NOT LIKE '%senior%') | Women and Children Services |
Homeless_Shelters_and_Services | LOWER(description) LIKE '%vet%' | Veteran Services |
Homeless_Shelters_and_Services | LOWER(description) LIKE '%education%' OR LOWER(description) LIKE '%train%' OR LOWER(description) LIKE '%enrich%' OR LOWER(description) LIKE '%employ%' OR LOWER(description) LIKE '%work%' | Life and Work Skill Training |
Homeless_Shelters_and_Services | LOWER(description) LIKE '%cloth%' OR LOWER(description) LIKE '%personal%' | Clothing/personal items |
Homeless_Shelters_and_Services | LOWER(description) LIKE '%transport%' | Transportation |
Homeless (application data layer) | Homeless_Shelters_and_Services |
---|---|
name | Name |
fulladdr | fulladdr |
municipality | |
agency | cat1 |
pocname | |
pocphone | |
pocemail | |
agencyurl | link |
operdays | |
operhours | |
capacity | |
emshelter | emshelter |
houseassist | houseassist |
food | food |
medical | medical |
womenchildren | womenchildren |
veteran | veteran |
training | training |
comments | description |
Phones | phones |
Hours | hours |
url | url |
Clothing | clothing |
Transport | transport |
Utilization |
Customization notes
Here are some additional resources to help you configure the solutions available to help cities address homelessness:
- Health Resource Inventory, Get Started
- Homeless Service Locatory, Get Started
- Reduce Homelessness
- Better Serving the Homeless with Geographic Information Systems
Explore other applications for counting the homeless and for engaging the community in reporting homeless activities. If you have questions about creating a resource inventory or standing up a service locator, contact Esri Support Services or your account manager.