将网络数据集交通源连接至街道 (转换)

摘要

将交通停靠点连接到街道要素,以便在启用交通的网络数据集中使用。 此工具可创建 Network Analyst 公共交通数据模型所定义的 StopsOnStreetsStopConnectors 要素类,并可作为较大工作流的一部分运行,以创建和使用具有公共交通数据的网络数据集中所描述的交通网络数据集。

为了在网络数据集中构建逼真的公共交通行程模型,网络应允许行人步行到交通停靠点,搭乘公交车,然后步行到目的地。 该网络应包括公共交通数据和街道数据,并且交通停靠点和线路应以受控方式连接到街道。 行人应该只能在停靠点进入或离开公交线路,并且停靠点必须连接到街道。 此工具可确保此类连接。

此工具将创建一个 Stops 要素类的副本(该副本必须存在于目标要素数据集中),并根据指定的搜索距离和表达式将复制的 Stops 要素捕捉到输入街道要素。 然后此工具将在每个停靠点及其捕捉的副本之间生成一条直线,并在停靠点位置及其捕捉到街道要素的位置之间创建连接,从而创建 StopConnectors 要素。 可将折点添加到输入街道要素的捕捉停靠点位置,以确保良好的网络数据集连接。

可以使用停靠点的捕捉版本、连接线和街道要素上的折点来将交通停靠点连接到街道。
此图显示了如何将交通停靠点连接到网络数据集中的街道要素。 第 1 部分显示了交通线(蓝线)上的交通停靠点(橙色圆圈)。 第 2 部分显示了添加到最近街道要素(黑线)最近点的折点(绿色三角形)。 第 3 部分显示了捕捉到街道要素(紫色圆圈)的停靠点的副本。 第 4 部分显示了为将停靠点连接到街道而生成的连接线。 街道和交通线之间行人的行程将使用这些连接和网络数据集上的连接策略进行建模。

使用情况

  • 此工具中使用的目标要素数据集必须已经存在,并包含称为 Stops 的点要素类,以及 Network Analyst 公共交通数据模型中所描述的方案。 可使用 GTFS 转网络数据集交通源工具创建有效的 Stops 要素类。

  • 该工具会将目标要素数据集中的公共交通停靠点捕捉到街道要素。 与所有编辑操作一样,最好将所有要素包含在同一空间参考中,以避免可能的误差。 建议您确保目标要素数据集和输入街道要素具有相同的空间参考。

  • 运行该工具后,输入街道要素将被更改。 折点将添加到 StopsOnStreets 要素与街道相交的位置。 如果您不希望更改街道数据,请在运行此工具之前创建副本。

  • 如果输入 Stops 要素类包含父站点(GStopType 值为 1 的要素),则父站点将连接到街道,子停靠点将连接到父站点。 具有父站点的停靠点将不会直接连接到街道。

    具有父站点的停靠点
    这是一个具有父站点的停靠点。 停靠点(橙色圆圈)使用 ConnectorType 为 1 的连接线(灰线)连接到父站点(蓝色方形)。 父站点使用 ConnectorType 为 0 的连接线连接到街道。

  • 如果输入 Stops 要素类包含入站口(GStopType 值为 2 的要素),入站口将捕捉到街道,父站点将连接到入站口。 在这种情况下,入站口将与街道重叠,ConnectorType 值为 2 的 StopConnectors 线将父站点连接到入站口,ConnectorType 值为 1 的 StopConnectors 线将停靠点连接到父站点。

    具有明确定义的入站口的父站点。
    这是一个具有明确定义的入站口的父站点。 停靠点(橙色圆圈)使用 ConnectorType 为 1 的连接线(灰线)连接到父站点(蓝色方形)。 父站点使用 ConnectorType 为 2 的连接线连接到街道的入站口位置(绿色方形)。

  • 运行该工具后,Stops 要素类可能会更改。 GStopType 值为 2 的停靠点要素表示入站口,可以删除。 这些停靠点要素将包括在输出 StopsOnStreets 要素类中,用于对从街道,通过入站口,到停靠点的正确连接进行建模。 也可以删除在空间上与停靠点重合的父站点。

  • 在独立 Python 中运行此工具时,如果输入 Stops 要素类包含父站点或入站口,则可能会将警告消息 001059 打印到控制台。 此警告消息在预料之内,并不表示存在问题。

参数

标注说明数据类型
目标要素数据集

将创建启用交通的网络数据集的要素数据集。 此要素数据集必须已经存在,并包含称为 Stops 的点要素类,以及 Network Analyst 公共交通数据模型中所描述的方案。 可使用 GTFS 转网络数据集交通源工具创建有效的 Stops 要素类。

注:

运行该工具后,Stops 要素类可能会更改。 GStopType 值为 2 的停靠点要素表示入站口,可以删除。 这些停靠点要素将包括在输出 StopsOnStreets 要素类中,用于对从街道,通过入站口,到停靠点的正确连接进行建模。 也可以删除在空间上与停靠点重合的父站点。

Feature Dataset
输入街道要素

交通停靠点和交通线将连接到的街道的折线要素类。 此街道要素类应与您打算在启用交通的网络数据集中使用的要素类相同,以便对沿着街道行走的行人进行建模。 要运行此工具,要素类不需要位于目标要素数据集中;但是,在创建网络数据集时,要素类必须位于目标要素数据集中。

注:

运行该工具后,输入街道要素将被更改。 折点将添加到 StopsOnStreets 要素与街道相交的位置。 如果您不希望更改街道数据,请在运行此工具之前创建副本。

Feature Layer
搜索距离

用于将交通停靠点捕捉到输入街道要素的搜索距离。 超出搜索距离的停靠点不会被捕捉,也不会连接到街道。 较小的搜索距离可以确保停靠点不会捕捉到远处的街道,但是会增加停靠点在应进行捕捉时捕捉失败的可能性。 较大的搜索距离会增加停靠点可能的捕捉次数,但可能会导致误差,这些误差需要通过编辑街道数据来纠正。 如果在特定停靠点的搜索距离内没有找到街道要素,则输出 StopsOnStreets 要素将不会捕捉到街道,并将与 Stops 中的相应要素重合,这可能导致该位置的网络数据集中连接质量较差。

默认值是 100 米。

Linear Unit
表达式

用于选择输入街道要素记录子集的 SQL 表达式。 交通停靠点仅会捕捉到与此表达式匹配的街道要素。 例如,此表达式可以用于防止停靠点捕捉到禁止行人通行的街道。

SQL Expression

派生输出

标注说明数据类型
更新的目标要素数据集

已添加新要素类和现有要素类的要素数据集可能已更新。

Feature Dataset
更新后的输入街道要素

输入街道要素类,可能已由工具修改。

Feature Class
更新后的输入停靠点

位于目标要素数据集中的 Stops 要素类,可能已由工具修改。

Feature Class
街道上的输出停靠点

通过将 StopsOnStreets 要素的副本捕捉到输入街道要素创建的 Network Analyst 公共交通数据模型的 Stops 要素类。

Feature Class
输出停靠点连接器

通过在原始停靠点位置和捕捉到街道要素的位置之间绘制一条直线而创建的 Network Analyst 公共交通数据模型的 StopConnectors 要素类。

Feature Class

arcpy.conversion.ConnectNetworkDatasetTransitSourcesToStreets(target_feature_dataset, in_streets_features, search_distance, expression)
名称说明数据类型
target_feature_dataset

将创建启用交通的网络数据集的要素数据集。 此要素数据集必须已经存在,并包含称为 Stops 的点要素类,以及 Network Analyst 公共交通数据模型中所描述的方案。 可使用 GTFS 转网络数据集交通源工具创建有效的 Stops 要素类。

注:

运行该工具后,Stops 要素类可能会更改。 GStopType 值为 2 的停靠点要素表示入站口,可以删除。 这些停靠点要素将包括在输出 StopsOnStreets 要素类中,用于对从街道,通过入站口,到停靠点的正确连接进行建模。 也可以删除在空间上与停靠点重合的父站点。

Feature Dataset
in_streets_features

交通停靠点和交通线将连接到的街道的折线要素类。 此街道要素类应与您打算在启用交通的网络数据集中使用的要素类相同,以便对沿着街道行走的行人进行建模。 要运行此工具,要素类不需要位于目标要素数据集中;但是,在创建网络数据集时,要素类必须位于目标要素数据集中。

注:

运行该工具后,输入街道要素将被更改。 折点将添加到 StopsOnStreets 要素与街道相交的位置。 如果您不希望更改街道数据,请在运行此工具之前创建副本。

Feature Layer
search_distance

用于将交通停靠点捕捉到输入街道要素的搜索距离。 超出搜索距离的停靠点不会被捕捉,也不会连接到街道。 较小的搜索距离可以确保停靠点不会捕捉到远处的街道,但是会增加停靠点在应进行捕捉时捕捉失败的可能性。 较大的搜索距离会增加停靠点可能的捕捉次数,但可能会导致误差,这些误差需要通过编辑街道数据来纠正。 如果在特定停靠点的搜索距离内没有找到街道要素,则输出 StopsOnStreets 要素将不会捕捉到街道,并将与 Stops 中的相应要素重合,这可能导致该位置的网络数据集中连接质量较差。

默认值是 100 米。

Linear Unit
expression

用于选择输入街道要素记录子集的 SQL 表达式。 交通停靠点仅会捕捉到与此表达式匹配的街道要素。 例如,此表达式可以用于防止停靠点捕捉到禁止行人通行的街道。

SQL Expression

派生输出

名称说明数据类型
updated_target_feature_dataset

已添加新要素类和现有要素类的要素数据集可能已更新。

Feature Dataset
updated_in_streets_features

输入街道要素类,可能已由工具修改。

Feature Class
updated_in_stops

位于目标要素数据集中的 Stops 要素类,可能已由工具修改。

Feature Class
output_stops_on_streets

通过将 StopsOnStreets 要素的副本捕捉到输入街道要素创建的 Network Analyst 公共交通数据模型的 Stops 要素类。

Feature Class
output_stop_connectors

通过在原始停靠点位置和捕捉到街道要素的位置之间绘制一条直线而创建的 Network Analyst 公共交通数据模型的 StopConnectors 要素类。

Feature Class

代码示例

ConnectNetworkDatasetTransitSourcesToStreets 示例 1(Python 窗口)

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

fd_path = r"E:\TransitAnalysis\TransitNetwork.gdb\TransitNetwork"
streets = os.path.join(fd_path, "Streets")
where = "PedestriansAllowed = 1"
arcpy.transit.ConnectPublicTransitDataModelToStreets(fd_path, streets, "100 meters", where)
ConnectNetworkDatasetTransitSourcesToStreets 示例 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)

环境

此工具不使用任何地理处理环境。