Passierte Quell-Features kopieren (Network Analyst)

Zusammenfassung

Erstellt zwei Feature-Classes und eine Tabelle, die Informationen über die Kanten, Knoten und Kantenübergänge enthalten, die beim Berechnen eines Netzwerkanalyse-Layers durchlaufen werden.

Weitere Informationen über die Ausgabe des Werkzeugs "Passierte Quell-Features kopieren"

Verwendung

  • Das Werkzeug berechnet den Eingabe-Netzwerkanalyse-Layer, wenn dieser noch nicht berechnet wurde. Der Analyse-Layer wird erneut berechnet, wenn die Eingaben seit der letzten Berechnung geändert wurden.

  • Passierte Quell-Features können für die folgenden Netzwerkanalyse-Layer generiert werden:

    • Route
    • Einzugsgebiet
    • Closest-Facility
    • Vehicle Routing Problem

    Passierte Quell-Features können für die folgenden Layer nicht generiert werden:

    • Start-Ziel-Kostenmatrix
    • Location-Allocation

  • Die Ausgabe-Junctions-Feature-Class enthält nicht nur Punkte, die durchlaufene Netzwerkknoten darstellen, sondern auch Punkte für Folgendes:

    • Durchlaufene Punkt-Barrieren
    • Anfangs- und Endpunkte durchlaufener Linien- und Polygon-Barrieren
    • Durchlaufene Stopps in einer Routenanalyse
    • Durchlaufene Einrichtungen und das Ende von Pausen in einer Einzugsgebiet-Analyse
    • Durchlaufene Einrichtungen und Ereignisse in einer Analyse der nächstgelegenen Einrichtung
    • Durchlaufene Aufträge, Depots und Pausen in einem Vehicle Routing Problem

    Weitere Informationen über die Ausgabe des Werkzeugs "Passierte Quell-Features kopieren"

  • Das Koordinatensystem für die Ausgabe-Feature-Classes kann durch Angabe der Umgebungsvariablen Output Coordinate System oder eines Feature-Datasets in einer Geodatabase als Wert für den Parameter "Ausgabespeicherort" gesteuert werden. Wenn die Umgebungsvariable "Output Coordinate System" nicht angegeben wurde oder wenn der Parameter "Ausgabespeicherort" kein Feature-Dataset ist, haben die Ausgabe-Feature-Classes das gleiche Koordinatensystem wie der Eingabe-Netzwerkanalyse-Layer.

Syntax

arcpy.na.CopyTraversedSourceFeatures(input_network_analysis_layer, output_location, edge_feature_class_name, junction_feature_class_name, turn_table_name)
ParameterErklärungDatentyp
input_network_analysis_layer

Der Netzwerkanalyse-Layer, aus dem passierte Quell-Features kopiert werden. Wenn der Netzwerkanalyse-Layer kein gültiges Ergebnis aufweist, wird der Layer berechnet, um ein solches zu erzeugen.

Network Analyst Layer
output_location

Der Workspace, in dem die Ausgabetabelle und die zwei Feature-Classes gespeichert werden.

Workspace; Feature Dataset
edge_feature_class_name

Der Name der Feature-Class, die Informationen über die durchlaufenen Kanten-Quell-Features enthält. Wenn der berechnete Netzwerkanalyse-Layer keine Kanten-Features durchläuft, wird eine leere Feature-Class erstellt.

String
junction_feature_class_name

Der Name der Feature-Class, die Informationen über die passierten Knoten-Quell-Features enthält, einschließlich Systemknoten und relevanten Punkten aus dem Eingabe-Netzwerkanalyse-Layer. Wenn der berechnete Netzwerkanalyse-Layer keine Knoten durchläuft, wird eine leere Feature-Class erstellt.

String
turn_table_name

Der Name der Tabelle, die Informationen über die durchlaufenen globalen Kantenübergänge und Kantenübergangs-Features enthält, durch die Kosten für die zugrunde liegenden Kanten skaliert werden. Wenn der berechnete Netzwerkanalyse-Layer keine Kantenübergänge durchläuft, wird eine leere Tabelle erstellt. Da eingeschränkte Kantenübergange niemals durchlaufen werden, sind sie niemals in der Ausgabe enthalten.

String

Abgeleitete Ausgabe

NameErklärungDatentyp
edge_features

Eine Feature-Class mit den Netzwerk-Dataset-Kanten, die in der Netzwerkanalyse passiert wurden.

Feature-Class
junction_features

Eine Feature-Class mit den Netzwerk-Dataset-Knoten, die in der Netzwerkanalyse passiert wurden.

Feature-Class
turn_table

Eine Tabelle mit den Netzwerk-Dataset-Kantenübergängen, die in der Netzwerkanalyse passiert wurden.

Tabelle
modified_input_network_analysis_layer

Der berechnete Netzwerkanalyse-Layer.

Network Analyst-Layer

Codebeispiel

CopyTraversedSourceFeatures – Beispiel 1 (Python-Fenster)

Das folgende Python-Skript veranschaulicht, wie Sie mit dem Werkzeug CopyTraversedSourceFeatures die durchlaufenen Kanten, Knoten und Kantenübergänge aus einem Routen-Netzwerkanalyse-Layer in eine Feature-Class und Tabelle in einem speicherresidenten Workspace schreiben.

arcpy.na.CopyTraversedSourceFeatures("Route", "C:/Data/Output.gdb",
                                     "TraversedEdges",
                                     "TraversedJunctions",
                                     "TraversedTurns")
CopyTraversedSourceFeatures – Beispiel 2 (Workflow)

Das folgende eigenständige Python-Skript veranschaulicht, wie Sie mit CopyTraversedSourceFeatures identische Straßen in den Routen von den Zählbezirksschwerpunkten zu den nächsten Feuerwachen suchen können. Anhand dieser Ergebnisse können Sie die Straßen ermitteln, die bei Notfällen am häufigsten genutzt werden.

# 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:
    #Check out Network Analyst license if available. Fail if the Network Analyst license is not available.
    if arcpy.CheckExtension("network") == "Available":
        arcpy.CheckOutExtension("network")
    else:
        raise arcpy.ExecuteError("Network Analyst Extension license is not available.")
    
    #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 and ensure that they are not
    #located on restricted portions of the network. Use default field mappings
    #and search tolerance
    arcpy.na.AddLocations(layer_object, facilities_layer_name, facilities, "",
                          "", exclude_restricted_elements="EXCLUDE")

    #Load tract centroids as incidents and ensure that they are not located on
    #restricted portions of the network. 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, "",
                          exclude_restricted_elements="EXCLUDE")

    #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))

Lizenzinformationen

  • Basic: Erfordert Network Analyst
  • Standard: Erfordert Network Analyst
  • Advanced: Erfordert Network Analyst

Verwandte Themen