描述
将交通停靠点连接到街道要素,以便在启用交通的网络数据集中使用。此工具可创建 Network Analyst 公共交通数据模型所定义的 StopsOnStreets 和 StopConnectors 要素类,并可作为较大工作流的一部分运行,以创建创建和使用具有公共交通数据的网络数据集中所描述的交通网络数据集。
为了在网络数据集中构建逼真的公共交通行程模型,网络应允许行人步行到交通停靠点,搭乘公交车,然后步行到目的地。该网络应包括公共交通数据和街道数据,并且交通停靠点和线路应以受控方式连接到街道。行人应该只能在停靠点进入或离开公交线路,并且停靠点必须连接到街道。此工具可确保此类连接。
此工具将创建一个 Stops 要素类的副本(该副本必须存在于目标要素数据集中),并根据指定的搜索距离和表达式将复制的 Stops 要素捕捉到输入街道要素。然后此工具将在每个停靠点及其捕捉的副本之间生成一条直线,并在停靠点位置及其捕捉到街道要素的位置之间创建连接,从而创建 StopConnectors 要素。可将折点添加到输入街道要素的捕捉停靠点位置,以确保良好的网络数据集连接。
使用方法
此工具中使用的目标要素数据集必须已经存在,并包含称为 Stops 的点要素类,以及 Network Analyst 公共交通数据模型中所描述的方案。可使用 GTFS 转网络数据集交通源工具创建有效的 Stops 要素类。
该工具会将目标要素数据集中的公共交通停靠点捕捉到街道要素。与所有编辑操作一样,最好将所有要素包含在同一空间参考中,以避免可能的误差。建议您确保目标要素数据集和输入街道要素具有相同的空间参考。
运行该工具后,输入街道要素将被更改。折点将添加到 StopsOnStreets 要素与街道相交的位置。如果您不希望更改街道数据,请在运行此工具之前创建副本。
如果输入 Stops 要素类包含父站点(GStopType 值为 1 的要素),则父站点将连接到街道,子停靠点将连接到父站点。具有父站点的停靠点将不会直接连接到街道。
如果输入 Stops 要素类包含入站口(GStopType 值为 2 的要素),入站口将捕捉到街道,父站点将连接到入站口。在这种情况下,入站口将与街道重叠,ConnectorType 值为 2 的 StopConnectors 线将父站点连接到入站口,ConnectorType 值为 1 的 StopConnectors 线将停靠点连接到父站点。
运行该工具后,Stops 要素类可能会更改。GStopType 值为 2 的停靠点要素表示入站口,可以删除。这些停靠点要素将包括在输出 StopsOnStreets 要素类中,用于对从街道,通过入站口,到停靠点的正确连接进行建模。也可以删除在空间上与停靠点重合的父站点。
在独立 Python 中运行此工具时,如果输入 Stops 要素类包含父站点或入站口,则可能会将警告消息 001059 打印到控制台。此警告消息在预料之内,并不表示存在问题。
语法
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 | 已添加新要素类和现有要素类的要素数据集可能已更新。 | 要素数据集 |
updated_in_streets_features | 输入街道要素类,可能已由工具修改。 | 要素类 |
updated_in_stops | 位于目标要素数据集中的 Stops 要素类,可能已由工具修改。 | 要素类 |
output_stops_on_streets | 通过将 Stops 要素的副本捕捉到输入街道要素创建的 Network Analyst 公共交通数据模型的 StopsOnStreets 要素类。 | 要素类 |
output_stop_connectors | 通过在原始停靠点位置和捕捉到街道要素的位置之间绘制一条直线而创建的 Network Analyst 公共交通数据模型的 StopConnectors 要素类。 | 要素类 |
代码示例
以下脚本演示了如何在 Python 窗口中使用 ConnectNetworkDatasetTransitSourcesToStreets 工具。
fd_path = r"E:\TransitAnalysis\TransitNetwork.gdb\TransitNetwork"
streets = os.path.join(fd_path, "Streets")
where = "PedestriansAllowed = 1"
arcpy.conversion.ConnectNetworkDatasetTransitSourcesToStreets(fd_path, streets, "100 meters", where)
以下独立 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: 是