GTFS 转网络数据集交通源 (转换)

描述

用于将一个或多个通用交通数据规范 (GTFS) 公共交通数据集转换为一组要素类和表,以在创建网络数据集时使用。输出要素类和表使用 Network Analyst 公共交通数据模型定义的格式表示交通停靠点、线和时间表,可使用网络数据集中的公共交通赋值器进行解释。

此工具生成的交通数据模型要素类和表如下:

  • Stops
  • LineVariantElements
  • Calendars
  • CalendarExceptions
  • Lines
  • LineVariants
  • Runs
  • ScheduleElements
  • Schedules

此工具的输出可以用作将网络数据集交通源连接至街道工具的输入,从而为启用交通的网络数据集准备所有必要的输入。创建此类网络数据集的完整工作流将在创建和使用具有公共交通数据的网络数据集中介绍。

使用方法

  • 所有输入 GTFS 数据集中的数据都将合并到相同的输出表和要素类集中。使用多个输入 GTFS 数据集的典型动机是对都会区进行建模,在都会区中,同一地理区域有多个交通服务提供商运营。

  • 该工具将对每个输入 GTFS 数据集执行一些验证,以检查常见的数据问题。发现问题后,该工具会发出警告并跳过处理该数据集。工具输出将仅包括已成功处理的输入 GTFS 数据集的数据。如果已成功处理部分 GTFS 数据集,且由于数据问题而跳过了其他数据集,则可以通过再次运行该工具,并将追加到现有表参数设置为 True 来修复数据问题并将已修复的 GTFS 数据集追加到现有工具输出中。

  • 每个输入 GTFS 数据集必须包含 stops.txtroutes.txttrips.txtstop_times.txt 文件,以及 calendar.txtcalendar_dates.txt 文件,或二者兼而有之。如果存在 frequencies.txt 文件,则会使用该文件。

  • 虽然 GTFS 允许 stop_times.txt 文件中的 arrival_timedeparture_time 字段使用空白值,但是公共交通评估员在网络数据集中使用的 Network Analyst 公共交通数据模型需要确切的时间。如果输入 GTFS 数据集的 stop_times.txt 文件中并非所有 arrival_timedeparture_time 字段都具有显示值,则将插值空白停止时间参数设置为 True 来估计该数据集的到达和离开时间。

  • 该工具可使用 GTFS stops.txt 文件中的 stop_latstop_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.txtroutes.txttrips.txtstop_times.txt 文件,以及 calendar.txtcalendar_dates.txt 文件,或二者兼而有之。

Folder
target_feature_dataset

将创建启用交通的网络数据集的要素数据集。此工具创建的 StopsLineVariantElements 要素类将放置在此要素数据集中,此工具创建的输出表将放置在此要素数据集的父地理数据库中。

要素数据集可以位于文件地理数据库或企业级地理数据库中,并且可以包含任何空间参考。如果目标要素数据集位于企业级地理数据库中,则不得对其进行版本化。目标要素数据集不应包含在已具有包含公共交通数据模型要素类的其他要素数据集的地理数据库中。

Feature Dataset
interpolate
(可选)

指定在创建公共交通数据模型表时,是否在 GTFS stop_times.txt 文件中 arrival_timedeparture_time 字段中内插空白值。

  • INTERPOLATE将使用简单的线性插值法内插空白值。原始 GTFS 数据不会被更改。如果原始数据中没有空白值,则不会进行插值。
  • NO_INTERPOLATE将不会内插空白值。如果在输入 GTFS 数据中找到空白值,则该工具将发出警告且不会处理 GTFS 数据集。这是默认设置。
Boolean
append
(可选)

指定是否将输入 GTFS 数据集追加到目标要素数据集及其父地理数据库中的现有公共交通数据模型要素类和表。

  • APPEND数据将被追加到现有要素类和表。
  • NO_APPEND将覆盖现有要素类和表。这是默认设置。
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 表。

代码示例

GTFSToNetworkDatasetTransitSources 示例 1(Python 窗口)

以下脚本演示了如何在 Python 窗口中使用 GTFSToNetworkDatasetTransitSources 工具。

fd_path = r"E:\TransitAnalysis\TransitNetwork.gdb\TransitNetwork"
arcpy.conversion.GTFSToNetworkDatasetTransitSources([r"E:\GTFS\Agency1", r"E:\GTFS\Agency2"], fd_path)
GTFSToNetworkDatasetTransitSources 示例 2(独立脚本)

以下独立 Python 脚本演示了如何同时使用 GTFSToNetworkDatasetTransitSourcesConnectNetworkDatasetTransitSourcesToStreets 工具来创建已启用交通的网络数据集。

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: 是

相关主题