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 Transitland Feed Registry site.

    Transitland Feed Registry web page with a list of transit data from different cities

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

  2. On the feed registry, search for Chattanooga and choose Chattanooga Area Regional Transportation Authority (CARTA).

    Chattanooga transit data on the Transitland filtered list

  3. On the next page, scroll down. Under Feed Detail, next to URLs, click
  4. Locate and unzip the downloaded .zip file.

    The file contains nine text files with information about bus stops, routes, and schedules.


    If you are unable to find or download the GTFS data, the required text file is provided later in the lesson.

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

    If you don't have ArcGIS Pro or an ArcGIS account, you can sign up for an ArcGIS free trial.

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

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

  7. On the ribbon, on the Analysis tab, in the Geoprocessing group, click Tools.
  8. In the Geoprocessing pane, search for and open the GTFS Stops to Features tool.

    GTFS Stops To Features Geoprocessing tool

  9. For Input GTFS Stops File, browse to and choose stops.txt in your unzipped GTFS folder.

    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

  10. For Output Feature Class, type BusStops.
  11. Click Run.

    Bus stop points on the map

    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.

  12. Press Ctrl+S to save your map.

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.


If you are unable to complete any of the following steps, you can still move forward with the lesson using the BusServiceAreas_Backup layer. It can be found in the Catalog pane on the Project tab in assess_access_to_public_transit.gdb.

BusServiceAreas_Backup in the Catalog pane

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

    Routing_ND layer in the Contents pane and on the map

    Routing_ND is a network dataset modelling the street network in Chattanooga. 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 Tools 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:

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

    Service Area command 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 pairs of colors for the symbols 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 tab.
  8. In the Input Data group, click Import Facilities.

    Import Facilities button on the Service Area tab of the ribbon

    The Add Locations tool appears in the Geoprocessing pane.

  9. For Input Locations, choose BusStops.

    The Add Locations tool with Input Locations set to BusStops

  10. Accept all other tool defaults and click Run.

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

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

  11. On the ribbon, on the Service Area 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 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.

    Service Area on the Network Analysis menu

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

    The Geoprocessing pane opens to the Feature Class to Feature Class tool. Input Features is set to Service Area\Polygons and Output Location to assess_access_to_public_transit.gdb.

  16. For Output Feature Class, type BusServiceAreas.

    Feature Class to Feature Class tool with Output Feature Class set to BusServiceAreas

  17. Click Run.

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

  18. In the Contents pane, right-click Service Area and choose 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 Living Atlas.
  3. Search for USA Block Groups. 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

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


    If the new layer is not drawing on your map, select it in the Contents pane and click the Appearance tab on the ribbon. In the Visibility Range group, click Clear Limits.

    Clear Limits button on the ribbon

  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

  5. Close the pop-up.
  6. In the Contents pane, right-click USA Block Groups and choose Properties.
  7. Click the Definition Query tab and click New definition query.
  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. In the Geoprocessing pane, search for and open the Enrich tool.

    The Enrich tool adds demographic and landscape information to your 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 lesson using USABlockGoups_Enrich_Backup, located in assess_access_to_public_transit.gdb

  2. For Input Features, choose USA Block Groups.
  3. Click the add variables button next to Variables.

    Add variables button on the Enrich tool

  4. If necessary, in the Add Variable window, under United States (Standard), click Categories.

    Categories in the Add Variable window


    If your Enrich tool is set to a different country, click Cancel and click Environments.

    Click the Browse button and browse to North America, United States, Standard.

    United States Standard selected in Environments

    Click OK and click Parameters.

  5. Double-click Population and Common Population Variables.
  6. Check 2019 Total Population.

    The number 1 appears under the search bar to indicate that you have 1 variable selected.

    2019 Total Population selected and the variable count indicator displaying 1


    Alternatively, you can use the 2010 population attribute provided in the block group layer.

  7. Click Categories. Double-click Poverty. Double-click Common Poverty Variables.
  8. Check ACS HHs: Inc Below Poverty Level.

    ACS HHs: Inc Below Poverty Level (#)selected

  9. Click Categories and double-click At Risk.
  10. Double-click the At Risk folder.
  11. Expand 2013-2017 Households by Vehicles Available (ACS) and check ACS Owner HHs by Vehicles Avail: 0.

    ACS Owner HHs by Vehicles Avail: 0 (#) selected

  12. Click OK.

    The three variables are added to the Enrich tool.

    Three variables listed in the Enrich tool

  13. Click Run.

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

  14. Remove the original USA Block Groups layer.
  15. Turn off the BusServiceAreas layer.
  16. 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 USABlockGroups_Enrich symbol.
  2. In the Symbology pane, if necessary, click Gallery.

    This project contains a custom style named Chattanooga.

  3. Click Green no outline.

    Green no outline symbol in the Chattanooga style

  4. In the Symbology pane, click the Back button.
  5. Click Vary Symbology by Attribute 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 your 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. For Field, choose 2019 Total Population.
  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%.

    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

  9. In the Contents pane, right-click USABlockGroups_Enrich and choose Copy.
  10. Right-click Map and choose Paste.
  11. Click the symbol for the new layer. From the symbol Gallery, choose Red no outline.
  12. Click the Back button and click Vary Symbology by Attribute.
  13. Expand Transparency and change Field to ACS HHs: Inc Below Poverty Level.

    Vary symbology by attribute transparency field changed to ACS HHs: Inc Below Poverty Level

  14. Copy the USABlockGroups_Enrich layer again and change the symbology to use the Yellow no outline symbol and the ACS Owner HHs by Vehicles Avail: 0 field.
  15. In the Contents pane, rename each block group layer using the following table:

    Symbol colorLayer name


    No Access to a Vehicle




    Population Density


    You can rename layers by clicking the layer name twice to make it editable.

  16. 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 so all three layers are selected at once.
  2. On the ribbon, click the Appearance 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

  4. Zoom to the orange area in downtown Chattanooga.

    This area stands out on the map as an area that may require public transportation.

    Orange polygon between downtown Chattanooga and the river

  5. Change the basemap to Imagery.

    Close-up of the orange polygon with the imagery basemap underneath

    The unserviced area is part water, part industrial properties, and part uninhabited riverbank. Despite its bright color, it no longer seems like a high priority area to receive new bus stops.

  6. Change the basemap back to Dark Gray Canvas and zoom out.

    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

  7. Save your project.

In this lesson 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 several 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 lesson 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.

You can find more lessons in the Learn ArcGIS Lesson Gallery.