Mike Price of Entrada/San Juan Inc. and Elise Fisher of EF Geographic contributed to this case study.
Anticipating the need
Prompted by a recent article in the local paper about fire response times in the city, the Director of Public Safety recently briefed City Council members on options for improving the situation. The Planning Director lobbied strongly for the construction of a new fire station. Sensing that the council members were receptive, despite concerns about costs raised by the City Manager, the Planning Director tasked her staff with undertaking a search for potential sites for a new station. This will be the first phase of the project planning. If the fire station project goes ahead, the planners will eventually use spatial analysis to find the optimum site.
What makes a suitable site?
During the City Council meeting, several members suggested looking at vacant city-owned parcels as sites in an effort to reduce costs for a new station. The Planning Director suggests to her staff that they start the search here. She doesn't want to get too far ahead of the City Council, but she also suggests that her staff at least talk to their counterparts at the Public Works Department to find out if there are any particular site requirements for constructing a fire station.
After a few meetings among themselves and with staff from Public Works, the Planning Department staff have compiled a list of criteria for a suitable site. They create a table showing the goal behind each criterion, the specific values, and the required layers they will need for their GIS analysis.
Initial search
The planners start with the characteristics of the parcels. They need to find vacant, city-owned parcels that are at least two acres in size. They first check the attributes in the layer of parcels within the City, originally obtained from the county tax assessor. They see that the OWNER field does in fact indicate which parcels are owned by the City, and the ASR_LANDUSfield (the assessor's land-use codes) indicates which parcels are vacant (those with a value of 0, indicating no specified land use). They also see that there is a field for acreage, but for many of the parcels, the value is 0—clearly the data layer is incomplete for this attribute. So the planners will need to use GIS to calculate the acreage for each parcel. To maintain the original parcel layer in its current form, they make a copy of the parcels (calling the new layer Sites1), add a new field named ACRES_GIS, and calculate the values. One of the planners notes that there may be adjacent city-owned parcels that are less than two acres, but if combined, might create a valid site. After some discussion, the planners decide that, given the time and paperwork involved in having the Assessor's Office merge any such parcels, they will only include existing two-acre (or larger) parcels in this initial search. If they come up empty-handed, they will look into including any parcels with the potential to be merged into larger sites.
With the attributes in place, the planners select the parcels that meet the three criteria. The search is quickly narrowed from over 15,000 parcels to 113.
Now the planners will reduce the number of parcels further based on location. Given their knowledge of city planning, they know that in similar communities, fire stations are usually placed a mile or two apart. So, using selection based on location, they eliminate parcels that are within a mile of an existing fire station. They perform additional selections to eliminate parcels that are within 1,000 feet of a library or school. That narrows the candidates to 78.
The next step is to remove parcels that are in excluded areas, such as floodplains, dam inundation zones, or environmentally sensitive lands. To speed up the process, they combine these three layers into a single layer, so they will need to do only one selection. This will save even more time if they need to rerun the analysis or use this criterion in the future for other site-selection analyses. After removing the parcels within these areas, they are down to 68 parcels.
In reviewing the results, the planners notice that there may be some parcels that are only partially within excluded areas or partially within the specified distances around existing fire stations, libraries, and schools. These parcels could be potential sites. However, they decide that, for now, they will continue with the results. For one thing, the distances from fire stations, libraries, and schools they specified are minimums, so parcels that are completely outside the distance are preferable. Similarly, parcels that are completely outside the excluded areas are also preferable. As they did with the small, adjacent parcels they discussed earlier, they decide that if their search does not result in any viable candidate sites, they can reconsider any parcels that may be partially within these areas.
Next, the planners turn their attention to the minimum site construction requirements. While the final site will need to undergo soil and other engineering tests, at this early stage of the process, the planners want to make sure any potential sites can be accessed from existing roads without the need for more than a long driveway and are not too steep to build on. From the currently selected parcels, they select those that are within 100 feet of an existing road, reducing the number of potential sites to 30.
The final step is to select parcels with an average slope of less than 10 percent. That will identify sites that require less grading to create a level building pad and parking area as well as driveways that are not too steep for trucks to navigate.
Up to this point, the planners have been doing a series of attribute and spatial selections on a single layer, Sites1. The next step involves a GIS tool that will calculate the average slope for each parcel. The tool does not operate on a selected set of features, so the planners export the selected parcels to a new dataset, which they call Sites2.
At this point, they also decide to add a two-digit ID to each of the parcels to make it easier to refer to the final candidates. While the parcels have several unique IDs (including two versions of the assessor's parcel number as well as another parcel ID), these are all between 6 and 10 digits and would be unwieldy for display on maps and in tables as well as for discussion among decision makers.
Using an existing raster slope layer from the City's GIS database, the planners calculate the average slope for the parcels and select those with a value less than 10 percent.
The planners now have 25 suitable sites. They make a web map for the Planning Director to review. She is impressed but decides that before sharing the map with too many other officials, she should run the potential sites by the Assistant Fire Chief in charge of Facilities.
Reality check
The Assistant Chief pulls up the map on his tablet and immediately sees a problem. A number of the sites are too far from a major road. He points out to the Planning Director that the three existing fire stations are adjacent to major roads and explains that the new station, if there is one, will also need to be no more than 1,500 feet from a major road. That reduces the amount of time fire trucks have to drive through residential neighborhoods and improves response times since the trucks can travel much faster on major roads than they can on local streets.
It is still early in the analysis process, and the Planning Director knows her staff can refine their analysis and narrow down the potential sites.
The planners take a look at the parcels they have identified so far, along with the major roads and the streets. They realize they could select the parcels within 1,500 feet of a major road, but that would be based on a straight-line distance. Using a straight-line distance made sense earlier for eliminating parcels in the general vicinity of an existing fire station, minimizing the noise effect on libraries and schools, and finding parcels within 100 feet of a street (where a new driveway could be built). But in this case, to be as accurate as possible, they decide to find a way to select parcels that are within 1,500 feet of a major road when driving over existing streets, as a fire truck would.
After kicking around a few different approaches, the planners settle on one they think will work and will be fairly efficient. Essentially, they will use the GIS to trace over streets 1,500 feet from each site. They will then select any traced lines that coincide with a major road. Finally, they will find out which site each selected trace line is associated with—these are the sites that are within 1,500 feet of a major road.
The planners run their analysis. It works! From the 25 parcels, they have identified eight that are within 1,500 feet of a major road.
They are confident this final set of candidate sites will hold up to the scrutiny of the Planning Director, the Public Works Department, and the Fire Department officials. Even though the final site will be selected using additional spatial analysis in the next phase of the project, the planners know that the council members will want to understand how the candidate sites were selected so they can explain the process to their constituents. They create a story map explaining the selection process and the results.
Next Phase: Finding the optimum site
As it happens, the city council is scheduled to meet the following day to take up the issue of the new fire station. The chatter around City Hall is that the members are likely to approve funding for the new station. The Planning Director's foresight paid off—she will be ready to present the potential sites to the city council at the end of their meeting, using the story map. Once the project is approved, the department will be ready to move ahead with the next phase—identifying the optimum site for the new station from the eight candidates.
Read the case study about how the Planning Department identified the optimum site using Location-Allocation analysis.
Workflow using ArcGIS Desktop
Select the sites that meet the attribute and location criteria
- Before starting the analysis, you will want to make a copy of the parcels data in the Catalog window or export it to a new dataset in ArcMap. Then add and calculate the ACRES_GIS field.
- Use Select By Attributes to select the parcels that are owned by the City (OWNER = 'CITY'), are vacant (ASR_LANDUS = 0), and are at least two acres in size (ACRES >= 2) . Use the default selection method (Create a new selection).
- Use Select By Location to identify the parcels that are more than a mile from existing fire stations and more than 1,000 feet from schools and libraries. In fact, you will be eliminating the parcels that fall within these distances, so make sure the selection method is set to remove from the currently selected features in. You will do three separate selections in quick succession. The Target layer (Sites1) remains the same for each selection, as does the spatial selection method (are within a distance of the source layer feature); you will change the Source layer and distance as needed.
- Use the Union tool to combine the floodplain, dam inundation, and environmentally sensitive areas to create a layer of excluded areas.
- Use Select By Location to identify the parcels that are outside the excluded areas. Remove the parcels that fall within these areas; keep the selection method set to remove from the currently selected features in. Set the Source layer to the excluded areas layer you just created and the spatial selection method to intersect the source layer feature. Uncheck the Apply a search distance box at the bottom of the dialog box.
- Use Select By Location to select the parcels that are within 100 feet of a street. Set the Selection method to select from the currently selected features in. Set the Source layer to the streets layer, set the spatial selection method to are within a distance of the source layer feature, and Apply a search distance of 100 feet.
Add a unique ID to the potential sites
- Export the selected features to a layer named Sites2. Use Add Field to add the Site_ID field as a short integer type.
- Calculate the IDs. To do this, in the Field Calculator dialog box, set the parser to Python, check the Show Codeblock box, and enter the Python code below into the Pre-Logic Script Code area (you can also cut and paste the code). Type autoIncrement() in the lower box and calculate the values.
rec=0
def autoIncrement():
global rec
pStart = 1
pInterval = 1
if (rec == 0):
rec = pStart
else:
rec += pInterval
return rec
In the smaller box, below the Pre-Logic Script Code, type the following:
autoIncrement()
Find the sites that have average slope less than 10 percent
- Add a field to hold the average slope values (which will be calculated in the next step). Create it as a float type and name it Avg_Slope.
- Use the Zonal Statistics as Table tool to calculate the average slope for each potential site. This tool, which is available with ArcGIS Spatial Analyst extension, calculates statistics such as the mean, sum, minimum, or maximum for each zone from the values in a raster layer. Learn about enabling Spatial Analyst. In this analysis, the zones are the potential site polygons in Sites2 and the raster layer is Slope. The result is a table with a row for each zone (potential site) with a field for the calculated statistic, mean slope. Specify Site_ID as the zone field and MEAN as the statistic to calculate.
- Join the zonal statistics table to the Sites2 attribute table, using Site_ID as the field to join.
- Calculate the Avg_Slope field you added earlier to be equal to the MEAN field from the zonal statistics table, which will add the average slope value to the table of potential sites without having to maintain the join. Then remove the join.
- Use Select By Attributes to select the parcels that have an average slope less than 10 percent. Use the default selection method (Create a new selection).
Find the sites within 1,500 feet of a major road over streets
- For this analysis you will use ArcGIS Network Analyst extension. Network Analyst requires the sites be represented as point locations. First, use the Feature To Point tool to create a layer of points from the Sites2 polygons (only the currently selected sites will be converted). Specify that the points be located inside the original parcel features.
- The Network Analyst service area solver will find streets within a given distance of a location. Add the Network Analyst toolbar and create a New Service Area. Open the Network Analyst window. Learn how to configure Network Analyst.
- Right-click Facilities in the Network Analyst window and select Load Locations to load the site point locations. Specify Site_ID as the Name field.
- Right-click Service Area in the table of contents and select Properties. On the Analysis Settings tab, set the Impedance to Feet and set Default Breaks (distance) to 1500. On the Polygon Generation tab, uncheck the Generate Polygons box (so that no drive distance polygons will be generated). On the Line Generation tab, check the Generate Lines box and the Include Network Source Fields box (this will allow you to link the generate service area lines—representing streets within 1,500 feet of a site—back to the original streets layer to find out which lines are coincident with major streets).
- Click Solve on the Network Analyst toolbar to calculate and display the service area Lines sublayer (located under Service Area in the table of contents). The attribute table for the lines contains the ID of the site each line is associated with (FacilityID) as well as the ID of the underlying street (SourceOID).
- To find out which of the service area lines correspond to major roads, join the streets layer (using ObjectID as the join field) to the service area lines (using SourceOID as the join field). Specify that only matching records be kept.
- The attribute table for the service area lines now contains the road class field (ROADCLASS), along with all the other fields from the streets layer. Select the lines with ROADCLASS = 3 (these are the major roads). Remove the join and export the selected service area lines to a new dataset. Name it sa_lines_major.
- To find out which sites (facilities) are associated with one (or more) of the lines representing major roads, join sa_lines_major (using FacilityID as the join field) to the Facilities sublayer (using ObjectID as the join field). Specify that only matching records be kept. This will identify the sites for which at least one of the roads within 1,500 feet is a major road.
- Export the facilities to a new dataset named site_candidates_point and remove the join.
- The layer of candidate sites contains points, which can be used in the Location-Allocation analysis to select the optimum site. To create a layer of the suitable sites with their original parcel boundaries, for display purposes, use Select By Location with the Sites2 layer. Set the selection method to select features from, the source layer as site_candidates_point, and the spatial selection method to intersect the source layer feature.
- Export the selected sites to a new dataset, site_candidates_poly, and clear any remaining selections.
Workflow using ArcGIS Pro
Select the sites that meet the attribute and location criteria
- Before starting the analysis, you will want to make a copy of the parcels data in the Project pane or export it to a new dataset in ArcGIS Pro. Then calculate a POLY_AREA field using Add Geometry Attributes (use Acres as the Area Unit.)
- Use Select Layer By Attribute to select the parcels that are owned by the City (OWNER = 'CITY'), are vacant (ASR_LANDUS = 0), and are at least two acres in size (POLY_AREA >= 2) . Use the default selection method (New Selection).
- Use Select Layer By Location to identify the parcels that are more than a mile from existing fire stations and more than 1,000 feet from schools and libraries. In fact, you will be eliminating the parcels that fall within these distances, so make sure the Selection Type is set to remove from the current selection. You will do three separate selections in quick succession. The Input Features Layer (Parcels_Copy) remains the same for each selection, as does the Relationship (Within a distance); you will change the Selecting Features and distance as needed.
- Use the Union tool to combine the floodplain, dam inundation, and environmentally sensitive areas to create a layer of excluded areas.
- Use Select Layer By Location to identify the parcels that are outside the excluded areas. Remove the parcels that fall within these areas; keep the Selection type set to remove from the current selection. Set the Selecting Features to the excluded_areas layer you just created and the Relationship to Intersect.
- Use Select Layer By Location to select the parcels that are within 100 feet of a street. Set the Selection type to Select subset from the current selection. Set the Selecting Features to the streets layer, set the Relationship to within a distance, and apply a search distance of 100 feet.
Add a unique ID to the potential sites
- Copy the selected features to a layer named Sites2. Use Add Field to add the Site_ID field as a short integer type.
- Calculate the IDs. To do this, in the Calculate Field dialog box enter the Python code below into the Code Block area (you can also cut and paste the code).
rec=0
def autoIncrement():
global rec
pStart = 1
pInterval = 1
if (rec == 0):
rec = pStart
else:
rec += pInterval
return rec
In the smaller box type the following:
autoIncrement()
Find the sites that have average slope less than 10 percent
- Add a field to hold the average slope values (which will be calculated in the next step). Create it as a float type and name it Avg_Slope.
- Use the Zonal Statistics as Table tool to calculate the average slope for each potential site. This tool, which is available with ArcGIS Spatial Analyst extension, calculates statistics such as the mean, sum, minimum, or maximum for each zone from the values in a raster layer. In this analysis, the zones are the potential site polygons in Sites2 and the raster layer is Slope. The result is a table with a row for each zone (potential site) with a field for the calculated statistic, mean slope. Specify Site_ID as the Zone field and Mean as the statistic to calculate.
- Join the zonal statistics table to the Sites2 attribute table, using Site_ID as the field to join.
- Calculate the Avg_Slope field you added earlier to be equal to the MEAN field from the zonal statistics table, which will add the average slope value to the table of potential sites without having to maintain the join. Then remove the join.
- Use Select Layer By Attribute to select the parcels that have an average slope less than 10 percent. Use the default selection method (New selection).
Find the sites within 1,500 feet of a major road over streets
- For this analysis you will use ArcGIS Network Analyst extension. Network Analyst requires the sites be represented as point locations. First, use the Feature To Point tool to create a layer of points from the Sites2 polygons (only the currently selected sites will be converted). Specify that the points be located inside the original parcel features.
- The Network Analyst service area solver will find streets within a given distance of a location. In the Analysis tab, create a new Service Area from the Network Analysis drop down. Go to the Network Analyst tab.
- Click Import Facilities from the Network Analyst tab. Load the site point locations using Site_ID as the Field Name.
- In the Service Area tab, set the Mode to Distance in Feet and the Cutoff to 1500. Change the Output Geometry to Lines. The lines will include the network source fields by default, which will allow you to link the generate service area lines - representing streets within 1, 500 feet of a site - back to the original streets layer to find out which lines are coincident with major streets.
- Click Run on the Service Area tab to calculate and display the service area Lines sublayer (located under Service Area in the Contents pane). The attribute table for the lines contains the ID of the site each line is associated with (FacilityID) as well as the ID of the underlying street (SourceOID).
- To find out which of the service area lines correspond to major roads, join the streets layer (using ObjectID as the join field) to the service area lines (using SourceOID as the join field). Uncheck Keep All Target Features.
- The attribute table for the service area lines now contains the road class field (ROADCLASS), along with all the other fields from the streets layer. Select the lines with ROADCLASS = 3 (these are the major roads). Remove the join and export the selected service area lines to a new dataset. Name it sa_lines_major.
- To find out which sites (facilities) are associated with one (or more) of the lines representing major roads, join sa_lines_major (using FacilityID as the join field) to the Facilities sublayer (using ObjectID as the join field). Uncheck Keep All Target Features. This will identify the sites for which at least one of the roads within 1,500 feet is a major road.
- Export the joined table to a standalone table.
- Remove the join from the Facilities layer using Remove All Joins.
- Now use the Frequency tool with the standalone table to create a table listing the individual facilities using FacilityID as the Frequency Field.
- The frequency table lists the eight suitable candidate sites. Join this table to the Facilities layer to identify the corresponding Facility point features. Again, make sure to uncheck Keep All Target Features.
- Export the facilities to a new dataset named site_candidates_point and remove the join.
- The layer of candidate sites contains points, which can be used in the Location-Allocation analysis to select the optimum site. To create a layer of the suitable sites with their original parcel boundaries, for display purposes, use Select Layer By Location with the Sites2 layer. Set the Selection type to Select subset from the current selection, the Selecting Features as site_candidates_point, and the Relationship to Intersect.
- Export the selected sites to a new dataset, site_candidates_poly, and clear any remaining selections.
While all the facilities listed in the output table have at least one major road within 1,500 feet, some have more than one (as you can see from the Facilities.Name field). When using ArcGIS Pro, Add Join keeps all the features from the sa_lines_major layer that have a match in the Facilities layer—there are 34, as it turns out. This is unlike performing the join in ArcMap, where—for a given facility—only the first matching feature from the sa_lines_major layer is kept. To extract the individual candidate features you'll need to create a table containing one record for each facility.