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 resuelta. 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
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 traza poligonal. Si la capa de análisis de red no tiene un resultado válido, la capa se resolverá para producir una. | ArcGIS 10.1 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 cualquier 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 cualquier giro, se crea una tabla vacía. Puesto que los giros restringidos nunca se trazan, nunca se incluyen en la salida. | String |
Ejemplo 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 a clases de entidad y tablas en un espacio de trabajo en memoria.
import arcpy
arcpy.na.CopyTraversedSourceFeatures("Route","in_memory",
"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 de centroides de distrito censal de 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 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)