Summary
Generates an estimate of the paths traveled by the vehicles in a public transit system. The output from this tool can be used to generate a new shapes.txt file for a GTFS public transit dataset.
The optional GTFS shapes.txt file contains a representation of the geographic paths taken by transit vehicles in a transit system. A good shapes.txt file is important for GTFS-based routing apps to display transit routes correctly on the map. Although many transit agencies generate their shapes.txt files using GPS trackers on their vehicles, other transit agencies lacking this hardware may have trouble creating this file.
This tool, together with the Features To GTFS Shapes tool, allows you to create a shapes.txt file based on the stop, route, and schedule information from an existing GTFS dataset. This tool generates good estimates for the geographic paths used by vehicles in the transit system and writes the output to a feature class. You can review and edit these line features before running the Features To GTFS Shapestool, which exports the shapes into a new shapes.txt file.
This tool is intended to be used in a workflow with three main steps:
- Run this tool to produce a good estimate of the geographic paths used by vehicles in the transit system.
- Use the map to inspect each estimated shape, and use the standard editing tools to make any necessary corrections.
- Run the Features To GTFS Shapes tool to create a shapes.txt file for your GTFS dataset.
Note:
The GTFS Shapes To Features tool and the Generate Shapes Features From GTFS tool are used for different purposes. Use GTFS Shapes To Features if your GTFS dataset already has a shapes.txt file and you want to convert these shapes to a feature class to display in the map. Use Generate Shapes Features From GTFS if your GTFS dataset does not have a shapes.txt file and you want to estimate the shapes based on the other information contained in the GTFS dataset and create a shapes.txt file.
Usage
This tool estimates the route shapes of your public transit network using one of the following options for each mode of transit in your data:
- Straight lines—Transit route shapes are straight lines connecting adjacent transit stops. This is appropriate for subways, ferries, or other transit modes that don't travel on streets.
- On-street routes generated using a road network—Transit line shapes are generated by solving a route between adjacent stops to model vehicles traveling along roads in a network.
There are two choices for generating route shapes based on a road network:
- Use a local network dataset—This option requires you to have the ArcGIS Network Analyst extension and a network dataset.
- Use a portal service—This option requires an ArcGIS Online account with routing privileges and sufficient credits or a portal with ArcGIS Enterprise routing services configured. You must be signed in to the portal before running the tool.
When calculating route shapes along a road network, Network Analyst may not successfully calculate a route connecting the stops for some shapes. In these cases, since network shapes could not be created, the tool creates straight-line shapes instead and returns a warning message indicating which shape_id values were affected.
When inspecting and correcting the output of the tool, you can use a definition query to display only a single shape and its associated stops on the map. Use the shape_id field in both outputs to select the shape to show. The sequence field in the output stops indicates the order in which the transit stops are visited.
Note:
The output shape features created by this tool are an estimate of the actual paths traveled by the transit vehicles in your system. Manually inspect each output shape feature individually to ensure that the path is correct.
Before running the Features To GTFS Shapes tool, carefully inspect the shape feature output from this tool and make any necessary corrections to the shape geometry. This ensures that your final output shapes.txt file will be accurate and helps avoid errors in the shape_dist_traveled field calculation for the stop_times.txt file.
In addition to making basic corrections to the shapes to accurately represent the paths traveled, edit your shapes to avoid directly overlapping line segments. If a bus travels in both directions along the same street and overlaps itself on the centerline, it can help to slightly offset each direction of the shape line to either side of the centerline.
Use the Reshape editing tool to correct shape geometry. If you want to completely replace the shape geometry by manually digitizing the shape in the map, use the Replace Geometry editing tool.
If your stops are not in the correct location, use the GTFS Stops To Features and Features To GTFS Stops tools to correct them, and run this tool again.
When examining and editing the tool outputs, you can edit the feature geometry and attributes but do not delete any rows. Deleted rows may cause errors when you run the Features To GTFS Shapes tool.
Syntax
GenerateShapesFeaturesFromGTFS(in_gtfs_folder, out_shape_lines, out_shape_stops, out_gtfs_trips, {network_modes}, {network_data_source}, {travel_mode}, {drive_side}, {bearing_tolerance}, {max_bearing_angle})
Parameter | Explanation | Data Type |
in_gtfs_folder | A folder containing a valid GTFS dataset for which you want to create a shapes.txt file. The folder must contain the GTFS stops.txt, trips.txt, routes.txt, and stop_times.txt files. | Folder |
out_shape_lines | A line feature class representing the estimated route shapes calculated by this tool. Each line in the output represents a unique shape required for this GTFS dataset. You can edit the line geometry and use this feature class as input to the Features To GTFS Shapes tool. | Feature Class |
out_shape_stops | A point feature class of GTFS transit stops with an ID associating them with each shape line to be created by the tool. In cases where the same GTFS stop is visited by multiple shapes, this feature class will contain multiple copies of that stop, one for each shape with which it is associated. This feature class is useful with definition queries when editing one shape line at a time. Use this feature class as input to the Features To GTFS Shapes tool. Note:This output feature class is not equivalent to the output of the GTFS Stops To Features tool. That tool produces a feature class of your GTFS stops exactly as they are in the original dataset, whereas this tool may produce multiple copies of each stop to associate them with different shapes. This output feature class is intended to be used only in conjunction with the other outputs of the Generate Shapes Features From GTFS tool to create a shapes.txt file. | Feature Class |
out_gtfs_trips | The output GTFS trips.txt file. This file will be equivalent to the trips.txt file in the input GTFS folder but will include the shape_id field added and populated with values corresponding to the shape_id field in the Output Transit Shape Lines feature class. | File |
network_modes [network_modes,...] (Optional) | Specifies the modes of transit for which line shapes will be generated along the road network rather than with straight lines. Shapes for all modes not selected will be generated using straight lines. You should typically select modes that run on streets, such as buses, since those modes are most accurately represented by the road network. Do not select modes that are not modeled by your road network. For example, unless your network explicitly models ferry lanes, don't use the network to represent the paths traveled by ferries. The modes are specified using the codes in the table below. These correspond to the valid GTFS routes.txt route_type values from the GTFS documentation. Modes 3, 5, and 11 are used by default.
| String |
network_data_source (Optional) | The network dataset or service that will be used for calculating route shapes along a road network. You can use a catalog path to a network dataset, a network dataset layer object, the string name of the network dataset layer, or a portal URL for a network analysis service. The network must have at least one travel mode. To use a portal URL, you must be signed in to the portal with an account that has routing privileges. Running the tool will consume credits if you use ArcGIS Online as the network data source. Learn more about how to estimate credit usage for this tool This parameter is required when any network modes are selected. Note:The network dataset you choose should be appropriate for modeling transit vehicles, such as buses, driving on streets. Don't use a network dataset configured to use public transit data with the Public Transit evaluator because this type of network models passengers riding on public transit, not public transit vehicles driving on streets. | Network Data Source |
travel_mode (Optional) | The travel mode on the network data source to use when calculating route shapes along a road network. You can specify the travel mode as a string name of the travel mode or as an arcpy.nax.TravelMode object. Use the travel mode most appropriate for modeling vehicles in your transit system driving along the road network. This parameter is required when any network modes are selected. Note:Do not use a travel mode with an impedance attribute that uses the Public Transit evaluator because that travel mode models passengers riding on public transit, not transit vehicles driving on streets. | Network Travel Mode |
drive_side (Optional) | Specifies the side of the road on which vehicles drive in your transit system. This is used to ensure that stops are visited on the correct side of the road.
| String |
bearing_tolerance (Optional) | When calculating route shapes along a road network, bearing and bearing tolerance are used to more accurately locate transit stops along the road network. The transit vehicle's bearing is estimated at each stop based on the angles between the current stop and the previous and next stops along the transit route. The value specified in this parameter indicates the maximum allowed angle between a transit vehicle's estimated direction of travel at a stop and the angle of the network edge the stop could locate on. If the angles differ by more than this value, Network Analyst assumes that this is not the correct network edge on which to locate the stop, and it will continue searching other nearby network edges for a more appropriate one. Specify the value in units of degrees between 0 and 180. The default is 30. | Double |
max_bearing_angle (Optional) | The transit vehicle's bearing is estimated at each stop based on the angles between the current stop and the previous and next stops along the transit route. When the transit route follows a relatively straight road, this angle is a good representation of the bearing. However, if the route goes around a corner, makes a U-turn, follows a twisty road, or diverts into a parking lot or side road, the average angle is not a good estimate of actual bearing and using this estimate can cause the stop to locate on the network far away from where it should and worsen the quality of the tool output. The tool will ignore the bearing estimate if the difference in angle from the previous stop to the current stop and the current stop to the next stop is greater than the value specified in this parameter. In this situation, the stop will revert to the normal network locating behavior and will snap to the closest nonrestricted network edge. Specify the value in units of degrees between 0 and 180. The default is 65. | Double |
Code sample
The following script demonstrates how to use the GenerateShapesFeaturesFromGTFS function in the Python window using a local network dataset:
arcpy.conversion.GenerateShapesFeaturesFromGTFS(
r"C:\Data\GTFS",
r"C:\Data\GTFSShapes\GTFSShapes.gdb\Shapes",
r"C:\Data\GTFSShapes\GTFSShapes.gdb\Stops",
r"C:\Data\GTFSShapes\trips_new.txt",
["3", "5", "11"],
r"C:\Data\NetworkDatasets\Network.gdb\Routing\Routing_ND",
"Bus Driving Time", "Right", 30, 65)
The following script demonstrates how to use the GenerateShapesFeaturesFromGTFS function in the Python window using the ArcGIS Online services to generate shapes for some transit modes:
arcpy.conversion.GenerateShapesFeaturesFromGTFS(
r"C:\Data\GTFS",
r"C:\Data\GTFSShapes\GTFSShapes.gdb\Shapes",
r"C:\Data\GTFSShapes\GTFSShapes.gdb\Stops",
r"C:\Data\GTFSShapes\trips_new.txt",
["0", "3", "5", "11", "OTHER"],
"https://www.arcgis.com/",
"Driving Time", "Right", 30, 65)
The following script demonstrates how to generate straight-line shapes for all transit modes using an empty list for the network_modes parameter:
arcpy.conversion.GenerateShapesFeaturesFromGTFS(
r"C:\Data\GTFS",
r"C:\Data\GTFSShapes\GTFSShapes.gdb\Shapes",
r"C:\Data\GTFSShapes\GTFSShapes.gdb\Stops",
r"C:\Data\GTFSShapes\trips_new.txt",
[])
Environments
Licensing information
- Basic: Yes
- Standard: Yes
- Advanced: Yes