Resumen
Crea una capa de análisis de red de instalación más cercana y establece sus propiedades de análisis. Una capa de análisis de ubicación de instalaciones más cercanas es útil para determinar las instalaciones más cercanas a un incidente según el modo de viaje. La capa se puede crear utilizando un dataset de red local o un servicio alojado en línea o en un portal.
Uso
Después de crear la capa de análisis con esta herramienta, puede agregarle objetos de análisis de red usando la herramienta Agregar ubicaciones, resolver el análisis usando la herramienta Resolver y guardar los resultados en el disco usando la herramienta Guardar en archivo de capa.
Al utilizar esta herramienta en modelos de geoprocesamiento, si el modelo se ejecuta como herramienta, la capa de análisis de red de salida debe convertirse en parámetro de modelo; de lo contrario, la capa de salida no se agrega al contenido del mapa.
En ArcGIS Pro, los datos de las capas de análisis de red se almacenan en el disco en las clases de entidad de geodatabase de archivos. Al crear una capa de análisis de red en un proyecto, los datos de la capa se crearán en un nuevo dataset de entidades en el entorno de Espacio de trabajo actual. Al crear una capa de análisis de red en un script de Python, primero debe definir explícitamente el entorno del espacio de trabajo en la geodatabase de archivos donde desea que se almacenen los datos de la capa utilizando arcpy.env.workspace = "<path to file gdb>". Cuando se crea la capa, un dataset de entidades nuevo que contiene las clases de entidades de la subcapa correspondiente se agregará a esta geodatabase de archivos.
Sintaxis
arcpy.na.MakeClosestFacilityAnalysisLayer(network_data_source, {layer_name}, {travel_mode}, {travel_direction}, {cutoff}, {number_of_facilities_to_find}, {time_of_day}, {time_zone}, {time_of_day_usage}, {line_shape}, {accumulate_attributes}, {generate_directions_on_solve})
Parámetro | Explicación | Tipo de datos |
network_data_source | El servicio o dataset de red en el que se realizará el análisis de red. Utilice la dirección URL del portal para un servicio. | Network Dataset Layer;String |
layer_name (Opcional) | El nombre de la capa de análisis de red que se creará. | String |
travel_mode (Opcional) | El nombre del modo de viaje que se utilizará en el análisis. El modo de viaje representa un conjunto de parámetros de red como, por ejemplo, restricciones del viaje y las normas sobre cambios de sentido, que determina cómo un peatón, un coche, un camión u otro medio de transporte se desplaza por la red. Los modos de viaje se definen en su fuente de datos de red. También puede utilizar como entrada del parámetro un objeto arcpy.na.TravelMode y una cadena que contenga la representación JSON válida de un modo de viaje. | String |
travel_direction (Opcional) | Especifica la dirección de viaje entre las instalaciones e incidentes.
La dirección del viaje puede influir en las instalaciones encontradas si la red contiene calles de sentido único o impedancias basadas en la dirección del viaje. Por ejemplo, se puede tardar 10 minutos en viajar desde un determinado incidente hasta una instalación concreta, pero el viaje podría alargarse hasta los 15 minutos si se viajara en la dirección opuesta, desde la instalación hasta el incidente, debido a la presencia de calles de sentido único o a las condiciones del tráfico. | String |
cutoff (Opcional) | El valor de impedancia en el que se debe detener la búsqueda de instalaciones para un determinado incidente, expresado en las unidades del atributo de impedancia que se utiliza en el travel_mode elegido. Este valor límite se puede invalidar por incidente, especificando valores límite individuales en la subcapa de incidentes en el caso de travel_direction='TO_FACILITIES' o por instalación, especificando valores límite individuales en la subcapa de instalaciones en el caso de travel_direction='FROM_FACILITIES'. De forma predeterminada, no se utiliza ningún valor límite en el análisis. | Double |
number_of_facilities_to_find (Opcional) | El número de instalaciones más próximas que se buscarán por incidente. Se puede invalidar este valor predeterminado especificando un valor individual para la propiedad TargetFacilityCount en la subcapa de incidentes. El número predeterminado de instalaciones a encontrar es uno. | Long |
time_of_day (Opcional) | Especifica la hora y la fecha en la cual deben comenzar y terminar las rutas. La interpretación de este valor depende de si time_of_day_usage se ha configurado como hora de inicio o fin de la ruta. Si eligió un atributo de impedancia con base en el tráfico, la solución se generará dadas las condiciones de tráfico dinámicas a la hora del día que se especifica a continuación. Una fecha y hora se puede especificar como 14/5/2012 10:30 a.m. En lugar de usar una fecha determinada, también se puede especificar un día de la semana utilizando las siguientes fechas:
| Date |
time_zone (Opcional) | Especifica la zona horaria para el parámetro time_of_day.
| String |
time_of_day_usage (Opcional) | Indica si el valor del parámetro time_of_day representa la hora de llegada o salida de las rutas.
| String |
line_shape (Opcional) | Especifica el tipo de forma para las entidades de ruta que son la salida del análisis. Sin importar el tipo de forma de salida elegido, la mejor ruta siempre se determina mediante la impedancia de red, nunca según la distancia euclidiana. Esto significa que solo las formas de la ruta son diferentes, no los elementos transitables subyacentes de la red.
| String |
accumulate_attributes [accumulate_attributes,...] (Opcional) | Lista de los atributos de coste que se acumularán durante el análisis. Estos atributos acumulados solo se utilizan como referencia; el solucionador solo utiliza el atributo de coste empleado en el modo de viaje indicado al solucionar el análisis. Para cada atributo de coste acumulado, se rellena una propiedad Total_[Impedance] en las entidades de salida del análisis de red. Este parámetro no está disponible si la fuente de datos de red es un servicio ArcGIS Online o si la fuente de datos de red es un servicio en una versión de Portal for ArcGIS que no admite la acumulación. | String |
generate_directions_on_solve (Opcional) | Especifica si se generarán indicaciones al ejecutar el análisis.
En el caso de un análisis en el que no sea necesario generar indicaciones paso a paso, use la opción predeterminada NO_DIRECTIONS para reducir bastante el tiempo que se tarda en resolver el análisis. | Boolean |
Salida derivada
Nombre | Explicación | Tipo de datos |
out_network_analysis_layer | La capa de análisis de red recién creada. | Capa de Network Analyst |
Muestra de código
Ejecutar la herramienta utilizando solo los parámetros requeridos.
network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeClosestFacilityAnalysisLayer(network, "ClosestFireStations")
Ejecutar la herramienta utilizando todos los parámetros.
network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeClosestFacilityAnalysisLayer(network, "ClosestHospitals",
"Driving Time", "TO_FACILITIES", 5, 3,
"1/1/1900 9:00 AM", "UTC", "START_TIME",
"ALONG_NETWORK", ["Meters", "TravelTime"])
En la siguiente secuencia independiente de comandos de Python se muestra cómo utilizar la herramienta MakeClosestFacilityAnalysisLayer para encontrar el almacén más cercano desde las ubicaciones de tienda.
# Name: MakeClosestFacilityAnalysisLayer_Workflow.py
# Description: Find the closest warehouse from the store locations and save the
# results to a layer file on disk.
# Requirements: Network Analyst Extension
#Import system modules
import arcpy
from arcpy import env
import os
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
#Set local variables
input_gdb = "C:/Data/Paris.gdb"
network = os.path.join(input_gdb, "Transportation", "ParisMultimodal_ND")
layer_name = "ClosestWarehouse"
travel_mode = "Driving Time"
facilities = os.path.join(input_gdb, "Analysis", "Warehouses")
incidents = os.path.join(input_gdb, "Analysis", "Stores")
output_layer_file = os.path.join(output_dir, layer_name + ".lyrx")
#Create a new closest facility analysis layer.
result_object = arcpy.na.MakeClosestFacilityAnalysisLayer(network,
layer_name, travel_mode, "TO_FACILITIES",
number_of_facilities_to_find=1)
#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 the warehouses as Facilities using the default field mappings and
#search tolerance
arcpy.na.AddLocations(layer_object, facilities_layer_name,
facilities, "", "")
#Load the stores as Incidents. Map the Name property from the NOM field
#using field mappings
field_mappings = arcpy.na.NAClassFieldMappings(layer_object,
incidents_layer_name)
field_mappings["Name"].mappedFieldName = "NOM"
arcpy.na.AddLocations(layer_object, incidents_layer_name, incidents,
field_mappings, "")
#Solve the closest facility layer
arcpy.na.Solve(layer_object)
#Save the solved closest facility layer as a layer file on disk
layer_object.saveACopy(output_layer_file)
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))
Entornos
Información de licenciamiento
- Basic: Sí
- Standard: Sí
- Advanced: Sí