Copier les entités source traversées (Network Analyst)

Synthèse

Crée deux classes d'entités et une table, qui ensemble contiennent les informations liées aux tronçons, jonctions et tournants traversés pendant la résolution d'une couche d'analyse de réseau.

Pour en savoir plus sur la sortie de l'outil Copier les entités source traversées

Utilisation

  • L'outil résout la couche d'analyse de réseau en entrée si ça n'est pas déjà fait. La couche d’analyse est résolue à nouveau si des changements ont été apportés aux entrées depuis sa dernière résolution.

  • Les entités en entrées traversées peuvent être générées pour les couches d'analyse réseau suivantes :

    • Itinéraire
    • Zone de desserte
    • Ressource la plus proche
    • Calcul d'itinéraire de véhicule
    • Livraison sur le dernier kilomètre

    Les entités en entrées traversées ne peuvent pas être générées pour les couches suivantes :

    • matrice de coût OD
    • Emplacement-allocation

  • En plus des points qui représentent les jonctions réseau traversées, la classe d’entités des jonctions en sortie comprend aussi les points qui représentent les éléments suivants :

    • les interruptions ponctuelles traversées ;
    • les points d'entrée et de sortie des interruptions linéaires et polygonales traversées ;
    • les arrêts desservis dans une analyse d’itinéraires ;
    • les installations desservies et les fins de pause dans une analyse de la zone de desserte ;
    • les installations desservies et les incidents dans une analyse de ressource la plus proche ;
    • les ordres et dépôts desservis, ainsi que les pauses, dans une analyse de tournée de véhicules.
    • les ordres et dépôts desservis dans une analyse de livraison sur le dernier kilomètre.

  • Le système de coordonnées des classes d’entités en sortie peut être contrôlé en spécifiant le paramètre d’environnement Système de coordonnées en sortie ou en spécifiant un jeu de classes d’entités dans une géodatabase comme valeur pour le paramètre Localisation en sortie. Si le paramètre d’environnement Système de coordonnées en sortie n’est pas spécifié ou si la valeur du paramètre Localisation en sortie n’est pas un jeu de classes d’entités, les classes d’entités en sortie possèdent le même système de coordonnées que la couche d’analyse réseau en entrée.

  • L’outil ne réussit alors pas à analyser les couches Livraison sur le dernier kilomètre qui ne produisent pas des feuilles de route et n’utilisent pas de formes d’itinéraire, car le résultat de traversée n’est pas généré.

Paramètres

ÉtiquetteExplicationType de données
Couche d’analyse de réseau en entrée

Couche d'analyse réseau à partir de laquelle les entités en entrée traversées seront copiées. Si la couche d'analyse de réseau n'a pas de résultat valide, elle sera résolue pour en produire un.

Network Analyst Layer
Emplacement en sortie

Espace de travail dans lequel la table et deux classes d’entités en sortie seront enregistrées.

Workspace; Feature Dataset
Nom de classe d'entités de tronçon

Nom de la classe d'entités qui contiendra des informations sur les entités tronçons en entrée traversées. Si la couche d’analyse de réseau résolue ne traverse aucune entité tronçon, une classe d’entités vide est créée.

String
Nom de classe d'entités de jonction

Nom de la classe d'entités qui contiendra les informations liées aux entités tronçons en entrée traversées, notamment les jonctions système et les points pertinents provenant de la couche d'analyse de réseau en entrée. Si la couche d’analyse de réseau résolue ne traverse aucune jonction, une classe d’entités vide est créée.

String
Nom de table de tournant

Nom de la table qui contiendra des informations sur les entités tournants globaux et tournants traversées qui proportionnent les coûts pour les tronçons sous-jacents. Si la couche d’analyse de réseau résolue ne traverse aucun tournant, une table vide est créée. Les tournants restreints n’étant jamais traversés, ils ne sont jamais inclus dans la sortie.

String

Sortie obtenue

ÉtiquetteExplicationType de données
Entités tronçons

Classe d’entités contenant les tronçons du jeu de données réseau qui ont fait l’objet d’un cheminement dans l’analyse de réseau.

Feature Class
Entités jonction

Classe d’entités contenant les jonctions du jeu de données réseau qui ont fait l’objet d’un cheminement dans l’analyse de réseau.

Feature Class
Table de tournant

Table contenant les tournants du jeu de données réseau qui ont fait l’objet d’un cheminement dans l’analyse de réseau.

Table
Couche d'analyse de réseau en entrée modifiée

Couche d’analyse de réseau résolue.

Network Analyst Layer

arcpy.management.CopyTraversedSourceFeatures(input_network_analysis_layer, output_location, edge_feature_class_name, junction_feature_class_name, turn_table_name)
NomExplicationType de données
input_network_analysis_layer

Couche d'analyse réseau à partir de laquelle les entités en entrée traversées seront copiées. Si la couche d'analyse de réseau n'a pas de résultat valide, elle sera résolue pour en produire un.

Network Analyst Layer
output_location

Espace de travail dans lequel la table et deux classes d’entités en sortie seront enregistrées.

Workspace; Feature Dataset
edge_feature_class_name

Nom de la classe d'entités qui contiendra des informations sur les entités tronçons en entrée traversées. Si la couche d’analyse de réseau résolue ne traverse aucune entité tronçon, une classe d’entités vide est créée.

String
junction_feature_class_name

Nom de la classe d'entités qui contiendra les informations liées aux entités tronçons en entrée traversées, notamment les jonctions système et les points pertinents provenant de la couche d'analyse de réseau en entrée. Si la couche d’analyse de réseau résolue ne traverse aucune jonction, une classe d’entités vide est créée.

String
turn_table_name

Nom de la table qui contiendra des informations sur les entités tournants globaux et tournants traversées qui proportionnent les coûts pour les tronçons sous-jacents. Si la couche d’analyse de réseau résolue ne traverse aucun tournant, une table vide est créée. Les tournants restreints n’étant jamais traversés, ils ne sont jamais inclus dans la sortie.

String

Sortie obtenue

NomExplicationType de données
edge_features

Classe d’entités contenant les tronçons du jeu de données réseau qui ont fait l’objet d’un cheminement dans l’analyse de réseau.

Feature Class
junction_features

Classe d’entités contenant les jonctions du jeu de données réseau qui ont fait l’objet d’un cheminement dans l’analyse de réseau.

Feature Class
turn_table

Table contenant les tournants du jeu de données réseau qui ont fait l’objet d’un cheminement dans l’analyse de réseau.

Table
modified_input_network_analysis_layer

Couche d’analyse de réseau résolue.

Network Analyst Layer

Exemple de code

Exemple 1 d’utilisation de l’outil CopyTraversedSourceFeatures (fenêtre Python)

Le script de fenêtre Python suivant montre comment utiliser la fonction CopyTraversedSourceFeatures pour écrire dans des classes d’entités et une table dans un espace de travail temporaire les tronçons, les jonctions et les tournants traversés provenant d’une couche d’analyse de réseau Itinéraires.

arcpy.na.CopyTraversedSourceFeatures("Route", "C:/Data/Output.gdb",
                                     "TraversedEdges",
                                     "TraversedJunctions",
                                     "TraversedTurns")
Exemple 2 d'utilisation de l'outil Copier les entités source traversées (workflow)

Le script Python autonome suivant illustre l’utilisation de l’outil CopyTraversedSourceFeatures pour trouver les rues communes aux itinéraires entre les centroïdes des secteurs de recensement et la caserne de pompiers la plus proche. Ces résultats permettent d’identifier les rues les plus fréquemment utilisées pendant les situations d’urgence.

# 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"
    impedance = "TravelTime"
    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.MakeClosestFacilityLayer(network, layer_name,
                                                    impedance, "TRAVEL_FROM")

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