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ámetro | Explicación | Tipo 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
Nombre | Explicación | Tipo 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
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")
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