描述
用于将一个或多个通用交通数据规范 (GTFS) 公共交通数据集转换为一组要素类和表,以在创建网络数据集时使用。输出要素类和表使用 Network Analyst 公共交通数据模型定义的格式表示交通停靠点、线和时间表,可使用网络数据集中的公共交通赋值器进行解释。
此工具生成的交通数据模型要素类和表如下:
- Stops
- LineVariantElements
- Calendars
- CalendarExceptions
- Lines
- LineVariants
- Runs
- ScheduleElements
- Schedules
此工具的输出可以用作将网络数据集交通源连接至街道工具的输入,从而为启用交通的网络数据集准备所有必要的输入。创建此类网络数据集的完整工作流将在创建和使用具有公共交通数据的网络数据集中介绍。
使用方法
所有输入 GTFS 数据集中的数据都将合并到相同的输出表和要素类集中。使用多个输入 GTFS 数据集的典型动机是对都会区进行建模,在都会区中,同一地理区域有多个交通服务提供商运营。
该工具将对每个输入 GTFS 数据集执行一些验证,以检查常见的数据问题。发现问题后,该工具会发出警告并跳过处理该数据集。工具输出将仅包括已成功处理的输入 GTFS 数据集的数据。如果已成功处理部分 GTFS 数据集,且由于数据问题而跳过了其他数据集,则可以通过再次运行该工具,并将追加到现有表参数设置为 True 来修复数据问题并将已修复的 GTFS 数据集追加到现有工具输出中。
每个输入 GTFS 数据集必须包含 stops.txt、routes.txt、trips.txt 和 stop_times.txt 文件,以及 calendar.txt 或 calendar_dates.txt 文件,或二者兼而有之。如果存在 frequencies.txt 文件,则会使用该文件。
虽然 GTFS 允许 stop_times.txt 文件中的 arrival_time 和 departure_time 字段使用空白值,但是公共交通评估员在网络数据集中使用的 Network Analyst 公共交通数据模型需要确切的时间。如果输入 GTFS 数据集的 stop_times.txt 文件中并非所有 arrival_time 和 departure_time 字段都具有显示值,则将插值空白停止时间参数设置为 True 来估计该数据集的到达和离开时间。
该工具可使用 GTFS stops.txt 文件中的 stop_lat 和 stop_lon 字段的纬度和经度值来构造 Stops 要素类。
该工具可以在由公共交通行程直接连接的每一对停靠点之间创建一条直线,从而构造 LineVariantElements 要素。
注:
LineVariantElements 要素并不用于表示公交车、火车或其他公共交通工具所行驶的实际地理路径,而是表示交通系统的逻辑连接。LineVariantElements 要素不可用于可视化。网络数据集中的公共交通赋值器将使用公共交通时间表来确定遍历 LineVariantElements 要素所需的行驶时间,因此其形状和长度无关紧要。尽管如此,您也可以手动编辑 LineVariantElements 要素的形状,但不应对要素进行分割或合并。
如果在相同的两个停靠点之间有多个 GTFS 路径提供服务,则将针对每个 GTFS route_id 创建一个 LineVariantElements 要素以提供服务。例如,如果公共汽车 10 和公共汽车 47 在两个相同的停靠点之间行驶,且中间没有其他的停靠点,则工具将生成两个 LineVariantElements 要素,一个用于公共汽车 10,一个用于公共汽车 47。这两个线要素在地理上是重合的。
由于公共交通数据模型需要具有特定名称的要素类和表,因此不可能在同一地理数据库中包含多组公共交通数据模型要素类和表。目标要素数据集不应包含在已具有包含公共交通数据模型要素类的其他要素数据集的地理数据库中。
如果目标要素数据集位于企业级地理数据库中,则不得对其进行版本化。在运行工具之前,协调并提交要素数据集中的数据,并取消注册版本。
语法
arcpy.conversion.GTFSToNetworkDatasetTransitSources(in_gtfs_folders, target_feature_dataset, {interpolate}, {append})
参数 | 说明 | 数据类型 |
in_gtfs_folders [in_gtfs_folders,...] | 一个或多个包含有效 GTFS 数据的文件夹。每个文件夹必须包含 GTFS stops.txt、routes.txt、trips.txt 和 stop_times.txt 文件,以及 calendar.txt 或 calendar_dates.txt 文件,或二者兼而有之。 | Folder |
target_feature_dataset | 将创建启用交通的网络数据集的要素数据集。此工具创建的 Stops 和 LineVariantElements 要素类将放置在此要素数据集中,此工具创建的输出表将放置在此要素数据集的父地理数据库中。 要素数据集可以位于文件地理数据库或企业级地理数据库中,并且可以包含任何空间参考。如果目标要素数据集位于企业级地理数据库中,则不得对其进行版本化。目标要素数据集不应包含在已具有包含公共交通数据模型要素类的其他要素数据集的地理数据库中。 | Feature Dataset |
interpolate (可选) | 指定在创建公共交通数据模型表时,是否在 GTFS stop_times.txt 文件中 arrival_time 和 departure_time 字段中内插空白值。
| Boolean |
append (可选) | 指定是否将输入 GTFS 数据集追加到目标要素数据集及其父地理数据库中的现有公共交通数据模型要素类和表。
| Boolean |
派生输出
名称 | 说明 | 数据类型 |
updated_target_feature_dataset | 已添加新要素类的要素数据集。 | 要素数据集 |
output_stops | Network Analyst 公共交通数据模型的 Stops 要素类。 | 要素类 |
output_line_variant_elements | Network Analyst 公共交通数据模型的 LineVariantElements 要素类。 | 要素类 |
output_calendars | Network Analyst 公共交通数据模型的 Calendars 表。 | 表 |
output_calendar_exceptions | Network Analyst 公共交通数据模型的 CalendarExceptions 表。 | 表 |
output_lines | Network Analyst 公共交通数据模型的 Lines 表。 | 表 |
output_line_variants | Network Analyst 公共交通数据模型的 LineVariants 表。 | 表 |
output_runs | Network Analyst 公共交通数据模型的 Runs 表。 | 表 |
output_schedule_elements | Network Analyst 公共交通数据模型的 ScheduleElements 表。 | 表 |
output_schedules | Network Analyst 公共交通数据模型的 Schedules 表。 | 表 |
代码示例
以下脚本演示了如何在 Python 窗口中使用 GTFSToNetworkDatasetTransitSources 工具。
fd_path = r"E:\TransitAnalysis\TransitNetwork.gdb\TransitNetwork"
arcpy.conversion.GTFSToNetworkDatasetTransitSources([r"E:\GTFS\Agency1", r"E:\GTFS\Agency2"], fd_path)
以下独立 Python 脚本演示了如何同时使用 GTFSToNetworkDatasetTransitSources 和 ConnectNetworkDatasetTransitSourcesToStreets 工具来创建已启用交通的网络数据集。
import os
import arcpy
arcpy.CheckOutExtension("network")
gtfs_folders = [
r"E:\GTFS\Agency1",
r"E:\GTFS\Agency2"
]
streets_orig = r"E:\Data\StreetData.gdb\Streets"
working_folder = r"E:\TransitAnalysis"
nd_template = os.path.join(working_folder, "TransitNetworkTemplate.xml")
gdb_name = "TransitNetwork.gdb"
out_gdb = os.path.join(working_folder, gdb_name)
fd_name = "TransitNetwork"
fd_path = os.path.join(out_gdb, fd_name)
streets = os.path.join(fd_path, "Streets")
nd_name = "TransitNetwork_ND"
nd_path = os.path.join(fd_path, nd_name)
# Create a file geodatabase and feature dataset to store the network dataset
arcpy.management.CreateFileGDB(working_folder, gdb_name)
arcpy.management.CreateFeatureDataset(out_gdb, fd_name, arcpy.SpatialReference(4326))
# Copy the streets data into the feature dataset so it can be used by the network dataset
# If the original streets are not in the same spatial reference as the feature dataset, you might
# need to use the Project tool instead of Copy.
arcpy.management.Copy(streets_orig, streets)
# Convert the GTFS dataset into public transit data model tables and feature classes
arcpy.conversion.GTFSToNetworkDatasetTransitSources(gtfs_folders, fd_path)
# Connect the transit stops to the streets and create the rest of the data model feature classes
# Use an expression to connect transit stops only to streets where pedestrians are allowed.
where = "PedestriansAllowed = 1"
arcpy.conversion.ConnectNetworkDatasetTransitSourcesToStreets(fd_path, streets, "100 meters", where)
# Create the network dataset from a template
arcpy.na.CreateNetworkDatasetFromTemplate(nd_template, fd_path)
# Build the network dataset
arcpy.na.BuildNetwork(nd_path)
环境
许可信息
- Basic: 是
- Standard: 是
- Advanced: 是