Passierte Quell-Features kopieren (Network Analyst)

Lizenzstufe:BasicStandardAdvanced

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

Syntax

CopyTraversedSourceFeatures_na (input_network_analysis_layer, output_location, edge_feature_class_name, junction_feature_class_name, turn_table_name)
ParameterErläuterungDatentyp
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 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

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.

import arcpy
arcpy.na.CopyTraversedSourceFeatures("Route","in_memory",
                                     "TraversedEdges",
                                     "TraversedJunctions",
                                     "TraversedTurns")
CopyTraversedSourceFeatures – Beispiel 2 (Arbeitsablauf)

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 the Network Analyst extension license
    arcpy.CheckOutExtension("Network")

    #Set environment settings
    env.workspace = "C:/data/SanFrancisco.gdb"
    env.overwriteOutput = True
    
    #Set local variables
    inNetworkDataset = "Transportation/Streets_ND"
    outNALayerName = "EmergencyRoutes"
    impedanceAttribute = "TravelTime"
    inFacilities = "Analysis/FireStations"
    inIncidents = "Analysis/TractCentroids"
    edgeFrequency = "in_memory/EdgeFrequency"
    outLayerFile = "C:/data/output" + "/" + outNALayerName + ".lyr"
    outFeatures = "CriticalStreets"
    
    #Create a new closest facility analysis layer. For this scenario, the default 
    #value for all the remaining parameters statisfies the analysis requirements
    outNALayer = arcpy.na.MakeClosestFacilityLayer(inNetworkDataset, outNALayerName,
                                                   impedanceAttribute, "TRAVEL_FROM")
    
    #Get the layer object from the result object. The closest facility layer can 
    #now be referenced using the layer object.
    outNALayer = outNALayer.getOutput(0)
    
    #Get the names of all the sublayers within the closest facility layer.
    subLayerNames = arcpy.na.GetNAClassNames(outNALayer)
    #Stores the layer names that we will use later
    facilitiesLayerName = subLayerNames["Facilities"]
    incidentsLayerName = subLayerNames["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(outNALayer,facilitiesLayerName,inFacilities,"", "",
                          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
    fieldMappings = arcpy.na.NAClassFieldMappings(outNALayer, incidentsLayerName)
    fieldMappings['Name'].mappedFieldName = "ID"
    arcpy.na.AddLocations(outNALayer,incidentsLayerName, inIncidents,
                          fieldMappings,"", exclude_restricted_elements = "EXCLUDE")
    
    #Solve the closest facility layer and copy the travered source features to a
    #temporary in-memory workspace. Use default names for the output feature
    #classes and table. Get only the first output which are the edges traversed.
    traversedEdges = arcpy.na.CopyTraversedSourceFeatures(outNALayer,
                                                          "in_memory").getOutput(0)
    
    #Calculate the frequency of SourceOID in the traversed edges
    arcpy.analysis.Frequency(traversedEdges, edgeFrequency,
                             ["SourceOID", "SourceName"])
    
    #Get the full path to the streets feature class by describing the network
    #dataset referenced by the network analysis layer. 
    network = arcpy.Describe(outNALayer.dataSource)
    edgeSources = network.edgeSources
    for es in edgeSources:
        if es.name.lower() == "streets":
            streetsSource = os.path.join(os.path.dirname(network.catalogPath),
                                         es.name)
            break
    else:
        raise Exception("Failed to detrmine the path for the streets feature class")
    
    #Join the frequency field to the streets feature class. In order to speed up
    #the join select the streets that share a line segment with traversed streets.
    streetsLayer = "StreetsLayer"
    arcpy.management.MakeFeatureLayer(streetsSource,streetsLayer)
    arcpy.management.SelectLayerByLocation(streetsLayer, "SHARE_A_LINE_SEGMENT_WITH",
                                           traversedEdges)
    arcpy.management.JoinField(streetsLayer, "ObjectID", edgeFrequency,
                               "SourceOID", "FREQUENCY")
    
    #Copy the streets that have a frequency value to a new feature class.
    arcpy.management.SelectLayerByAttribute(streetsLayer, "SUBSET_SELECTION",
                                            "FREQUENCY IS NOT NULL")
    arcpy.management.CopyFeatures(streetsLayer,outFeatures)
    
    #Delete the Frequency field from the streets feature class
    arcpy.management.DeleteField(streetsLayer, "FREQUENCY")

    #Save the solved na layer as a layer file on disk with relative paths
    arcpy.management.SaveToLayerFile(outNALayer,outLayerFile,"RELATIVE")
    
    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 occured on line %i" % tb.tb_lineno
    print str(e)

Umgebung

Verwandte Themen

Lizenzierungsinformationen

ArcGIS for Desktop Basic: Erfordert Network Analyst
ArcGIS for Desktop Standard: Erfordert Network Analyst
ArcGIS for Desktop Advanced: Erfordert Network Analyst
9/11/2013