arcpy.na.CopyTraversedSourceFeatures(input_network_analysis_layer, output_location, edge_feature_class_name, junction_feature_class_name, turn_table_name)
|
名前
|
説明
|
データ タイプ
|
|
input_network_analysis_layer
|
通過したソース フィーチャのコピー元になるネットワーク解析レイヤー。 ネットワーク解析レイヤーに有効な結果がない場合は、結果を得るためにレイヤーが解析されます。
|
Network Analyst Layer
|
|
output_location
|
出力テーブルと 2 つのフィーチャクラスが保存されるワークスペース。
|
Workspace; Feature Dataset
|
|
edge_feature_class_name
|
通過したエッジ ソース フィーチャに関する情報が入るフィーチャクラスの名前。 解析されたネットワーク解析レイヤーがエッジ フィーチャを通過しない場合は、空のフィーチャクラスが作成されます。
|
String
|
|
junction_feature_class_name
|
通過したジャンクション ソース フィーチャに関する情報が入るフィーチャクラスの名前。これには、システム ジャンクションと、入力ネットワーク解析レイヤーからの関連ポイントが含まれます。 解析されたネットワーク解析レイヤーがジャンクションを通過しない場合は、空のフィーチャクラスが作成されます。
|
String
|
|
turn_table_name
|
基本エッジのコストを増減する、通過したグローバル ターンおよびターン フィーチャに関する情報が入るテーブルの名前。 解析されたネットワーク解析レイヤーがターンを通過しない場合は、空のテーブルが作成されます。 規制ターンは通過されないため、出力に含まれることはありません。
|
String
|
派生した出力
|
名前
|
説明
|
データ タイプ
|
|
edge_features
|
ネットワーク解析で通過したネットワーク データセットのエッジを含むフィーチャクラス。
|
Feature Class
|
|
junction_features
|
ネットワーク解析で通過したネットワーク データセットのジャンクションを含むフィーチャクラス。
|
Feature Class
|
|
turn_table
|
ネットワーク解析で通過したネットワーク データセットのターンを含むテーブル。
|
Table
|
|
modified_input_network_analysis_layer
|
解析されたネットワーク解析レイヤー。
|
Network Analyst Layer
|
コードのサンプル
CopyTraversedSourceFeatures の例 1 (Python ウィンドウ)
次の Python ウィンドウ スクリプトは、CopyTraversedSourceFeatures 関数を使用して通過したエッジ、ジャンクション、およびターンをルート ネットワーク解析レイヤーから、メモリー内ワークスペースのフィーチャクラスとテーブルに書き込む方法を示しています。
arcpy.na.CopyTraversedSourceFeatures("Route", "C:/Data/Output.gdb",
"TraversedEdges",
"TraversedJunctions",
"TraversedTurns")
CopyTraversedSourceFeatures の例 2 (ワークフロー)
次のスタンドアロン Python スクリプトは、CopyTraversedSourceFeatures を使用して、国勢調査地区の重心から最寄りの消防署までのルートに共通する道路を見つける方法を示しています。 これらの結果は、どの道路が最も頻繁に使用される緊急時の経路かを示すために役立ちます。
# Name: CopyTraversedSourceFeatures_ex02.py
# Description: The scenario shows how to find the streets that are common to the
# routes between the closest fire station and the census tract
# centroids. These streets can be used to identify critical points
# in case of an emergency.
# Requirements: Network Analyst extension
# Import system modules
import os
import arcpy
from arcpy import env
try:
# Set environment settings
output_dir = "C:/Data"
# The NA layer's data will be saved to the workspace specified here
env.workspace = os.path.join(output_dir, "Output.gdb")
env.overwriteOutput = True
env.qualifiedFieldNames = False
# Set local variables
input_gdb = "C:/Data/SanFrancisco.gdb"
output_gdb = "C:/Data/Output.gdb"
network = os.path.join(input_gdb, "Transportation", "Streets_ND")
layer_name = "EmergencyRoutes"
travel_mode = "Driving Time"
facilities = os.path.join(input_gdb, "Analysis", "FireStations")
incidents = os.path.join(input_gdb, "Analysis", "TractCentroids")
edge_frequency = os.path.join(output_gdb, "EdgeFrequency")
critical_streets = os.path.join(output_gdb, "CriticalStreets")
# Create a new closest facility analysis layer.
result_object = arcpy.na.MakeClosestFacilityAnalysisLayer(
network, layer_name, travel_mode, "FROM_FACILITIES"
)
# Get the layer object from the result object. The closest facility layer can
# now be referenced using the layer object.
layer_object = result_object.getOutput(0)
# Get the names of all the sublayers within the closest facility layer.
sublayer_names = arcpy.na.GetNAClassNames(layer_object)
# Stores the layer names that we will use later
facilities_layer_name = sublayer_names["Facilities"]
incidents_layer_name = sublayer_names["Incidents"]
# Load fire station features as facilities
arcpy.na.AddLocations(layer_object, facilities_layer_name, facilities)
# Load tract centroids as incidents. Map the ID field from Tract
# Centroids as the name for incidents using field mappings
field_mappings = arcpy.na.NAClassFieldMappings(
layer_object, incidents_layer_name
)
field_mappings['Name'].mappedFieldName = "ID"
arcpy.na.AddLocations(
layer_object, incidents_layer_name, incidents, field_mappings
)
# Solve the closest facility layer and copy the travered source features to
# the output geodatabase. Use default names for the output feature
# classes and table. Retrieve the first output, which is the traversed edges.
traversed_edges = arcpy.na.CopyTraversedSourceFeatures(
layer_object, output_gdb
).getOutput(0)
# Some streets might be traversed by more than one route. Streets traversed
# by many routes are the most critical emergency routes. Count the number of
# routes using each street.
arcpy.analysis.Frequency(
traversed_edges, edge_frequency, ["SourceOID", "SourceName"]
)
# The resulting edge features from CopyTraversedSourceFeatures may include
# clipped versions of the original street features because the Closest
# Facility route only traveled across part of the street feature. Select
# the complete street features from the original street feature class and
# copy them to output.
# Get the full path to the network dataset's streets feature class by
# describing the network dataset.
network_desc = arcpy.Describe(network)
edge_sources = network_desc.edgeSources
for es in edge_sources:
if es.name.lower() == "streets":
streets_source = os.path.join(os.path.dirname(network), es.name)
break
# Select the relevant streets based on overlap with the results from
# CopyTraversedSourceFeatures
streets_layer = arcpy.management.MakeFeatureLayer(
streets_source, "StreetsLayer"
)
arcpy.management.SelectLayerByLocation(
streets_layer, "SHARE_A_LINE_SEGMENT_WITH", traversed_edges
)
# Add the frequency information to the output feature class using JoinField
arcpy.management.JoinField(
streets_layer, "ObjectID", edge_frequency, "SourceOID", "FREQUENCY"
)
# Save the selected features to disk
arcpy.management.CopyFeatures(streets_layer, critical_streets)
# Delete the Frequency field from the street feature class
arcpy.management.DeleteField(streets_layer, "FREQUENCY")
print("Script completed successfully")
except Exception as e:
# If an error occurred, print line number and error message
import traceback, sys
tb = sys.exc_info()[2]
print("An error occurred on line %i" % tb.tb_lineno)
print(str(e))