Crear capa de análisis de ubicación de instalaciones más cercanas (Network Analyst)

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

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ámetroExplicaciónTipo 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.

  • TO_FACILITIESLa dirección de viaje desde los incidentes hasta las instalaciones. Las tiendas minoristas suelen utilizar esta configuración porque les preocupa el tiempo que tardan los compradores (incidentes) en llegar a la tienda (instalación). Esta es la opción predeterminada.
  • FROM_FACILITIESLa dirección de viaje desde las instalaciones hasta los incidentes. Los departamentos de bomberos suelen utilizar esta configuración porque les preocupa el tiempo que se tarda en viajar desde la estación de bomberos (instalación) hasta la ubicación de la emergencia (incidente).

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:

  • Hoy, 30/12/1899
  • Domingo, 31/12/1899
  • Lunes, 1/1/1900
  • Martes, 2/1/1900
  • Miércoles, 3/1/1900
  • Jueves, 4/1/1900
  • Viernes, 5/1/1900
  • Sábado, 6/1/1900

Date
time_zone
(Opcional)

Especifica la zona horaria para el parámetro time_of_day.

  • LOCAL_TIME_AT_LOCATIONSEl parámetro time_of_day hace referencia a la zona horaria en la cual se encuentran las instalaciones o los incidentes. Esta es la opción predeterminada.
    • Si time_of_day_usage está definido como START_TIME y la travel_direction está definida como FROM_FACILITIES, esta será la zona horaria de las instalaciones.
    • Si time_of_day_usage está definido como START_TIME y la travel_direction está definida como TO_FACILITIES, esta será la zona horaria de los incidentes.
    • Si time_of_day_usage está definido como END_TIME y la travel_direction está definida como FROM_FACILITIES, esta será la zona horaria de los incidentes.
    • Si time_of_day_usage está definido como END_TIME y la travel_direction está definida como TO_FACILITIES, esta será la zona horaria de las instalaciones.
  • UTCEl parámetro time_of_day hace referencia al tiempo universal coordinado (UTC). Seleccione esta opción si desea encontrar qué es lo más próximo en una hora específica, como en instante presente, pero no está seguro de la zona horaria en la que se encuentran las instalaciones o los incidentes.
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.

  • START_TIMEtime_of_day se interpreta como la hora de salida de la instalación o incidente. Esta es la opción predeterminada.Cuando se elige esta configuración, time_of_day indica que el solucionador debe encontrar la mejor ruta dada una hora de salida.
  • END_TIMEtime_of_day se interpreta como la hora de llegada a la instalación o incidente. Esta opción es útil si desea conocer a qué hora salir de una ubicación para que llegue al destino en la hora especificada en la time_of_day.
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.

  • ALONG_NETWORKLas rutas de salida tendrán la misma forma que las fuentes de red subyacentes. La salida incluye mediciones de ruta para la referenciación lineal. Las mediciones aumentan desde la primera parada y registran la impedancia acumulativa para alcanzar una posición determinada.
  • NO_LINESNo se generará ninguna forma para las rutas de salida.
  • STRAIGHT_LINESLa forma de la ruta de salida será una línea recta simple entre las paradas.
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.

  • DIRECTIONS Indica que las indicaciones paso a paso se generarán al resolver.
  • NO_DIRECTIONSIndica que las indicaciones paso a paso no se generarán al resolver. Esta es la opción predeterminada.

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

NombreExplicaciónTipo de datos
out_network_analysis_layer

La capa de análisis de red recién creada.

Capa de Network Analyst

Muestra de código

Ejemplo 1 de MakeClosestFacilityAnalysisLayer (ventana de Python)

Ejecutar la herramienta utilizando solo los parámetros requeridos.

network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeClosestFacilityAnalysisLayer(network, "ClosestFireStations")
Ejemplo 2 de MakeClosestFacilityAnalysisLayer (ventana de Python)

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"])
Ejemplo 3 de MakeClosestFacilityAnalysisLayer (secuencia de comandos independiente)

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

Información de licenciamiento

  • Basic: Sí
  • Standard: Sí
  • Advanced: Sí