Copiar Entidades de origen de trazado poligonal (Network Analyst)

Resumen

Crea dos clases de entidad y una tabla, que juntas contengan información sobre los bordes, cruces y giros que se trazan al resolver una capa de análisis de red.

Más información sobre la salida de la herramienta Copiar entidades de origen de trazado poligonal

Uso

  • La herramienta resuelve la capa de entrada de análisis de red si aún no se ha resuelto. La capa de análisis se resuelve si se ha realizado algún cambio en cualquiera de las entradas desde la última resolución.

  • Las entidades de origen de trazado poligonal se pueden generar para las siguientes capas de análisis de red:

    • Ruta
    • Área de servicio
    • Instalación más cercana
    • Problema de generación de rutas para vehículos

    Las entidades de origen de trazado poligonal no se pueden generar para las siguientes capas:

    • Matriz de coste OD
    • Ubicación y asignación

  • La clase de entidad de cruces de salida no solo incluye puntos que representan cruces de red de trazado poligonal, también incluye puntos que representan los siguientes:

    • Las barreras de punto de trazado poligonal
    • Los puntos de entrada y salida de línea de trazado poligonal y barreras de polígono
    • Paradas visitadas en un análisis de ruta
    • Instalaciones y extremos de los cortes visitados en un análisis de área de servicio
    • Instalaciones e incidentes visitados en un análisis de instalación más cercana
    • órdenes, depósitos y cortes visitados en un problema de generación de rutas para vehículos

    Más información sobre la salida de la herramienta Copiar entidades de origen de trazado poligonal

  • El sistema de coordenadas para las clases de entidad de salida se puede controlar especificando el Sistema de coordenadas de salida de la configuración del entorno o especificando un dataset de entidades en una geodatabase como el valor para el parámetro Ubicación de salida. Si no se especifica la configuración del entorno del Sistema de coordenadas de salida o la ubicación de salida no es un dataset de entidades, las clases de entidad de salida tienen el mismo sistema de coordenadas que la capa de entrada de análisis de red.

Sintaxis

arcpy.na.CopyTraversedSourceFeatures(input_network_analysis_layer, output_location, edge_feature_class_name, junction_feature_class_name, turn_table_name)
ParámetroExplicaciónTipo de datos
input_network_analysis_layer

La capa de análisis de red desde la que se copiarán las entidades de origen de trazado poligonal. Si la capa de análisis de red no tiene un resultado válido, la capa se resolverá para producir uno.

Network Analyst Layer
output_location

El espacio de trabajo donde se guardarán la tabla de salida y las dos clases de entidad.

Workspace; Feature Dataset
edge_feature_class_name

El nombre de la clase de entidad que contendrá información sobre las entidades de origen de eje trazado. Si la capa de análisis de red resuelta no trace en forma poligonal cualquier entidad de eje, se crea una clase de entidad vacía.

String
junction_feature_class_name

El nombre de la clase de entidad que contendrá información sobre las entidades de fuente de unión de trazado poligonal, incluyendo los cruces del sistema y puntos relevantes de la capa de entrada de análisis de red. Si la capa de análisis de red resuelta no traza en forma poligonal ningún cruce, se crea una clase de entidad vacía.

String
turn_table_name

El nombre de la tabla que contendrá información sobre los giros globales de trazado poligonal y entidades de giro que escalen el coste de los bordes subyacentes. Si la capa de análisis de red resuelta no traza en forma poligonal ningún giro, se crea una tabla vacía. Puesto que los giros restringidos nunca se trazan, nunca se incluyen en la salida.

String

Salida derivada

NombreExplicaciónTipo de datos
edge_features

Una clase de entidad que contiene los ejes del dataset de red que se atravesaron en el análisis de red.

Clase de entidad
junction_features

Una clase de entidad que contiene los cruces del dataset de red que se atravesaron en el análisis de red.

Clase de entidad
turn_table

Una tabla que contiene los giros del dataset de red que se atravesaron en el análisis de red.

Tabla
modified_input_network_analysis_layer

La capa de análisis de red resuelta.

Capa de Network Analyst

Muestra de código

Ejemplo 1 de CopyTraversedSourceFeatures 1 (ventana de Python)

La siguiente secuencia de comandos de la ventana de Python muestra cómo utilizar la herramienta CopyTraversedSourceFeatures para escribir los ejes de trazado poligonal, cruces y giros desde una capa de análisis de red de Ruta en las clases de entidad y la tabla de un espacio de trabajo almacenado en memoria.

arcpy.na.CopyTraversedSourceFeatures("Route", "C:/Data/Output.gdb",
                                     "TraversedEdges",
                                     "TraversedJunctions",
                                     "TraversedTurns")
CopyTraversedSourceFeatures ejemplo 2 (flujo de trabajo)

La siguiente secuencia de comandos de Python independiente muestra cómo se puede utilizar CopyTraversedSourceFeatures para buscar las calles que son comunes a las rutas desde los centroides de distrito censal hasta la estación de bomberos más cercana. Estos resultados ayudan a identificar qué calles son emergencias utilizadas más frecuentemente.

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

Información de licenciamiento

  • Basic: Requiere Network Analyst
  • Standard: Requiere Network Analyst
  • Advanced: Requiere Network Analyst

Temas relacionados