Map existing bus service

You'll begin by mapping the current bus stops in Chattanooga and the areas of the city that are within a 10-minute walk of these stops.

Create bus stop features from GTFS data

Many cities provide their public transit data as a free download, and the most common format for this data is the General Transit Feed Specification (GTFS). GTFS datasets include information about a transit system's stops, routes, and schedules. In ArcGIS Pro, you can convert GTFS data into features on your map.

  1. Go to the Chattanooga Transit Data item details page and click Download.
  2. Locate and unzip the downloaded .zip file.

    The file contains nine text files with information about bus stops, routes, and schedules. This data is from the Chattanooga Area Regional Transportation Authority and aggregated by the Transitland open data platform.

    Transitland and OpenMobilityData are two resources for finding GTFS data feeds.

    You can download the most recent version of the Chattanooga transit data from its feed details page.

  3. Download the Assess Access to Public Transit project package.
  4. Start ArcGIS Pro. If prompted, sign in using your licensed ArcGIS organizational account.

    If you don't have access to ArcGIS Pro or an ArcGIS organizational account, see options for software access.

  5. Locate the downloaded file on your computer. Double-click Assess Access to Public Transit.ppkx to open it in ArcGIS Pro.

    ArcGIS Pro opens to a map of Chattanooga, Tennessee, in the United States.

    Project opens to Chattanooga, Tennessee.

    Next, you'll convert the stops text file from the GTFS dataset into spatial features that you can view and analyze on your map.

  6. On the ribbon, click the Analysis tab. In the Geoprocessing group, click Tools.

    Tools button

  7. In the Geoprocessing pane, on the search bar, type GTFS Stops to Features. In the list of results, click the GTFS Stops to Features tool.

    GTFS Stops To Features Geoprocessing tool

    The tool parameters appear.

  8. Next to Input GTFS Stops File, click the Browse button. Browse to the GTFS folder and choose stops.txt.

    You can also find stops.txt in the project folder. Click Folders, Assess Access to Public Transit, commondata, and userdata.

    stops.txt in the browse window

  9. For Output Feature Class, type BusStops.

    By default, the new feature class will be stored in the project's geodatabase, assess_access_to_public_transit.gdb.

  10. Click Run.

    Bus stop points on the map


    The symbology color of the layer is randomly generated and may differ from the example image. It does not impact the results of the analysis.

    Most of Chattanooga's bus stops are to the south of the Tennessee River. Like most cities, the downtown has a higher density of bus service. Next, you'll map those areas in the city that are within walking distance of these stops.

  11. On the Quick Access Toolbar, click the Save button to save the project.

    Save button on the Quick Access Toolbar


    You can also save your project by pressing Ctrl+S.

Generate service areas for bus stops

When mapping the areas that can easily access bus stops, it is important to use a street network. If you made simple buffers, they would be based on distance as the crow flies, ignoring buildings, fences, and other obstacles facing pedestrians. Next, you'll generate service areas for the Chattanooga bus stops to visualize a walking time of 10 minutes based on the street network.


If you are unable to complete any of the following steps, you can still move forward with the tutorial using the BusServiceAreas_Backup layer. In the Catalog pane, open Databases and open assess_access_to_public_transit.gdb to access the BusServiceAreas_Backup layer.

  1. In the Contents pane, turn on the Routing_ND layer.

    The Routing_ND layer is a network dataset modelling the street network in Chattanooga.

    Routing_ND layer on the map

    The features in a network dataset are aware of one another, providing the connectivity required to perform network analysis. You'll use Routing_ND to map service areas around bus stops.

  2. Turn off the Routing_ND layer.
  3. On the ribbon, on the Analysis tab, in the Workflows group, click Network Analysis.
  4. Confirm that the active Network Dataset is set to Routing_ND from assess_access_to_public_transit.gdb\Routing.

    Network Data Source set to Routing_ND on the Network Analysis menu


    This network dataset was included in the project package. If you want to repeat this workflow for another city, you have the following options:

    • Change your network data source to When using this data source, generating service areas consumes credits. The cost is half a credit per bus stop. In addition, you can only generate service areas on 1,000 bus stops at a time, so you may need to divide your dataset into multiple pieces using definition queries or a similar method.
    • Purchase StreetMap Premium for ArcGIS.
    • Use your own street data to Create a network dataset with a walking time travel mode.

  5. In the Network Analysis menu, click Service Area.

    Service Area option on the Network Analysis menu

    A new Service Area layer appears in the Contents pane, which contains six sublayers.

    Service Area layer in the Contents pane with six sublayers


    The symbol colors are randomly assigned, so your Service Area layer may not match this graphic.

    Currently, all of these layers are empty. Next, you'll populate the Facilities layer with the bus stops.

  6. In the Contents pane, confirm that Service Area is selected (highlighted in blue).
  7. On the ribbon, click the Service Area Layer tab.

    Service Area Layer tab

  8. In the Input Data group, click Import Facilities.

    Import Facilities button on the Service Area Layer tab of the ribbon

    The Add Locations window appears.

  9. For Input Locations, choose BusStops.

    The Add Locations window with Input Locations set to BusStops

  10. Accept all other tool defaults and click OK.

    The points on the map are duplicated using the symbology of the Facilities layer.

    Facilities layer on the map

    Next, you'll request a service area that represents a 10-minute walk time surrounding each of these stops.

  11. On the ribbon, in the Service Area Layer tab, change the following parameters in the Travel Settings group:
    • Set Mode to Walking Time.
    • Set Direction to Towards Facilities.
    • Set Cutoffs to 10.

    Travel Settings on the Service Area Layer tab of the ribbon

  12. In the Output Geometry group, change Standard Precision to High Precision.

    Output Geometry set to High Precision on the ribbon

    A high precision service area takes longer to generate but is more accurate and recommended for a walking time analysis.

  13. Change Overlap to Dissolve.

    Output Geometry set to Dissolve on the ribbon

    The Dissolve option creates polygons around each bus stop and merges them.

  14. On the ribbon, in the Analysis group, click Run.

    A service area polygon now surrounds each facility (bus stop) point on the map.

    Map with service area polygon and bus stop ooints

  15. In the Contents pane, right-click Polygons, point to Data, and choose Export Features.

    The Export Features window appears. Input Features is set to Polygons.

  16. For Output Name, type BusServiceAreas.

    Export Features pane with Output Name set to BusServiceAreas

  17. Click OK.

    A copy of the service area polygons is added to your map and the project's geodatabase, separate from the Service Area data.

  18. In the Contents pane, right-click Service Area and click Remove.
  19. Also remove the BusStops layer and the Routing_ND Network Dataset.

    Dissolved service areas on the map

    The BusServiceAreas layer now has a polygon representing areas in the city that are within a 10-minute walk of at least one bus stop.

  20. Save the project.

From the map, you can see that not all parts of the city are served by the existing bus routes. The City is looking to expand their bus service by adding a new route or extending an existing one. Next, you'll help them determine which areas have the greatest need.

Assess the map for future bus stops

Next, you'll map demographics in the city of Chattanooga to assess which areas would benefit the most from expanded bus service.

Add block groups

You'll start by adding data for block groups, the second smallest geographic unit used by the United States Census.


Similar polygon features can be found in the ArcGIS Living Atlas of the World for other countries. Neighborhood boundaries or similar data are also appropriate. Alternatively, you can use the Generate Tessellation tool to create a grid of polygons.

  1. If necessary, open your project.
  2. In the Catalog pane, click the Portal tab and click ArcGIS Online.

    ArcGIS Online button in the Portal tab on the Catalog pane


    If you are an ArcGIS Enterprise user, on the ribbon, in the Map tab, in the Layer group click the Add Data drop down button. From the drop-down list, choose Data From Path. In the Add Data From Path window, for Path copy and past the following URL and click Add: You can skip step 3 and continue to step 4.

  3. Search for USA Block Groups owner: Learn_ArcGIS. Right-click the USA Block Groups layer and choose Add To Current Map.

    Add To Current Map on the context menu of the USA Block Groups web layer from Portal section


    If there are multiple USA Block Groups layers in the search results, point to each layer to view more details and choose the layer owned by Learn_ArcGIS.

    This layer covers the entire United States, which is too large for your needs. You'll filter it to only cover Hamilton County, Tennessee.

  4. Click any block group polygon to open its pop-up.

    The pop-up indicates that the code for Hamilton County is 47065.

    County FIPS of 47065 in the pop-up


    If you are an ArcGIS Enterprise user, the County FIPS will appear as STCOFIPS.

  5. Close the pop-up.
  6. In the Contents pane, right-click USA Block Groups layer and choose Properties.

    The Layer Properties window appears.

  7. The Layer Properties window, click the Definition Query tab and click New definition query.

    New definition query button on the Definition Query tab on the Layer Properties window.

  8. Use the drop-down menus to construct the clause Where County FIPS is equal to 47065.

    Query 1 set to Where County FIPS is equal to 47065

  9. Click Apply and click OK.
  10. Zoom out until you can view the entire county.

    The block groups for Hamilton County appear on the map.

    Block groups of Hamilton county, Tennessee, on the map

Enrich block groups with demographic data

To assess public transit needs, you'll map population density, poverty, and the percentage of people who do not own cars.

  1. On the ribbon, click the Analysis tab. In the Geoprocessing group, click Tools.
  2. In the Geoprocessing pane, search for and open the Enrich tool.

    The Enrich tool adds demographic and landscape information to geographic data. It consumes 1 credit per 100 variables or features. In the following steps, you'll enrich 247 features with 3 variables each, which will cost 7.41 credits.


    Credits will not be consumed until you click the Run button. If you prefer to save your credits, you can continue the tutorial using USABlockGoups_Enrich_Backup, located in assess_access_to_public_transit.gdb

    First, you'll ensure that the Enrich tool is set to the correct country.

  3. Click the Environments tab. For Data Source, click the Browse button.
  4. Browse to North America. Under United States, click Standard. Click OK.
  5. In the Geoprocessing pane, click the Parameters tab.
  6. For Input Features, choose USA Block Groups.
  7. Next to Variables, click the add variables button.

    Add variables button on the Enrich tool

    The Data Browser window appears.

  8. If necessary, in the Data Browser window, under United States (Standard), click Categories.

    Categories in the Add Variable window

  9. Double-click Population and Common Population Variables.
  10. Check 2021 Total Population.

    Demographic data is updated periodically. Use the latest available data.

    2021 Total Population selected in the Data Browser window

    At the top of the Data Browser window, under the search bar, the Show/Hide details panel icon indicates you have selected 1 variable.

    Show/Hide details panel icon indicates a single variable has been selected in the Data Browser window.

  11. Click Categories. Double-click Poverty. Double-click Common Poverty Variables.
  12. Check 2019 HHs: Inc Below Poverty Level (ACS 5-Yr) or the most recent year.
  13. Click Categories and double-click At Risk.
  14. Double-click the At Risk folder.
  15. Expand 2015-2019 Vehicles Available (ACS) (or the most recent years) and check 2019 Owner HHs with 0 Vehicles (ACS 5-Yr).

    2019 Owner HHs with 0 Vehicles (ACS 5-Yr) (#) selected

  16. Click OK.

    The three variables are added to the Enrich tool.

    Three variables listed in the Enrich tool

  17. Click Run.

    A new layer, named USABlockGroups_Enrich, is added to your map. It contains attributes for the variables added by the Enrich tool.

  18. Remove the original USA Block Groups layer.
  19. Turn off the BusServiceAreas layer.
  20. Save the project.

Symbolize the enriched layer

To visualize the demographic data that you've added, you'll make three layers, each depicting a different variable with a different transparent color.

  1. In the Contents pane, click the symbol for the USABlockGroups_Enrich layer.

    Symbol for the USABlockGroups_Enrich layer.

    The Symbology pane appears.

  2. In the Symbology pane, if necessary, click the Gallery tab.

    This project contains a custom style named Chattanooga.

  3. Under Chattanooga, Click Green no outline.

    Green no outline symbol in the Chattanooga style

  4. In the Symbology pane, click the Back button.
  5. Click the Vary Symbology by Attribute tab and expand Transparency.

    Vary Symbology by Attribute button and expanded Transparency section in the Symbology pane

    The Vary symbology by attribute tab is used to add a second visual variable to a layer, in addition to the one established on the Primary Symbology tab. While transparency can be used in your map in a number of ways, this method is the easiest way to derive transparency values from your data.

    You'll symbolize the layer so all block groups are green, but they are more or less transparent based on the population density.

  6. Under Transparency, for Field, choose 2021 Total Population or the latest year.
  7. For Normalization, choose Shape_Area.

    Transparency will now represent the number of people divided by the area of each block group.

  8. For High values, type 20%. For Low values, type 100%.

    The layer on the map is difficult to see, since most block groups have a high transparency.

  9. On the Transparency range histogram, drag the lower handle up until it is just below the gray bars.


    Now you are better able to discern the population patterns on the map. The brighter polygons are more densely populated than the faint ones.

    Map with block groups displayed in transparent green

  10. In the Contents pane, right-click USABlockGroups_Enrich and choose Copy.
  11. Right-click Map and choose Paste.
  12. Click the symbol for the new layer. From the symbol Gallery, choose Red no outline.
  13. Click the Back button and click Vary Symbology by Attribute.
  14. Expand Transparency and change Field to 2019 HHs: Inc Below Poverty Level (ACS 5-Yr).
  15. On the histogram, drag the lower handle up until it is just below the gray bars.


    The red and green transparent colors mix on the map.

  16. In the Contents pane, copy the USABlockGroups_Enrich layer again and change the symbology to use the Yellow no outline symbol.
  17. Change the Transparency Field to 2019 Owner HHs with 0 Vehicles (ACS 5-Yr). On the histogram, drag the lower handle up until it is just below the gray bars.
  18. In the Contents pane, click the layer name two times to rename each block group layer using the following table:

    Symbol colorLayer name


    No Access to a Vehicle




    Population Density

    Layer names updated

  19. In the Contents pane, drag the World Dark Gray Reference layer to the top of the list.
  20. Explore your map. Try reordering the block group layers to gain a different perspective on the distribution of the variables.

    Contents pane and map with three transparent colors overlaid

Assess the map for future expansion sites

It looks like downtown Chattanooga has the greatest need for bus stops, but you know from the BusServiceAreas layer that this neighborhood is already well served by public transit. You can mask the map with the BusServiceAreas layer to better direct your attention to those places without bus stops.

  1. In the Contents pane, press the Ctrl key while clicking Population Density, Poverty, and No Access to a Vehicle layers so all three layers are selected at once.
  2. On the ribbon, click the Feature Layer tab.
  3. In the Drawing group, click Masking and check BusServiceAreas.

    BusServiceAreas checked in the Masking menu on the ribbon

    The block group layers are now masked by the bus stop service areas.

    Map with bus service areas masked from the three block group layers

    From this map, the neighborhoods of East Ridge and Red Bank seem like the most likely candidates to receive a new bus route. Perhaps these areas have become more urbanized since the original public transit routes were created.

    Map with the communities of Red Bank to the northwest and East Ridge to the south circled

  4. Save your project.

In this tutorial you mapped bus stops from GTFS data. You generated service areas surrounding each bus stop using a network dataset. You enriched group block areas with demographic variables. Finally, you symbolized your map to conduct a visual analysis and propose new sites for bus routes.

This visual analysis can provide valuable insight to guide your planning of Chattanooga's public transit expansion. However, a more rigorous suitability analysis can better help you select areas by weighing your criteria and quantifying your results.

You may also consider more demographic variables. This tutorial focused on where people live to determine need for bus stops, but ignored where they work, shop, and go to school. To better map the need for bus service, you could also include variables such as daytime population, total employees, and total retail sales. Red Bank and East Ridge may be popular origin sites for bus travelers but not common destinations.

Learn more by watching the Public Transit Analysis in ArcGIS Pro video series.

You can find more tutorials in the tutorial gallery.