Agregar ubicaciones (Network Analyst)

Resumen

Agrega entidades de entrada o las registra en una capa de análisis de red. Las entradas se agregan a subcapas específicas como paradas y barreras.

Obtener más información sobre la forma en que la herramienta Agregar ubicaciones sitúa las entradas de análisis en la red

Uso

  • Se puede ejecutar esta herramienta varias veces para incorporar objetos de análisis de red a la misma subcapa. Por ejemplo, si las paradas de una capa de ruta provienen de dos clases de entidad, se puede solicitar la herramienta dos veces, una para cada clase de entidad. La segunda vez, active el parámetro Incorporar (append = "APPEND" en Python).

  • Para eliminar los objetos de análisis de red existentes antes de cargar otros nuevos, desactive el parámetro Incorporar (append = "CLEAR" en Python).

  • Al ubicar entradas, el modo de viaje y las barreras existentes de la capa de análisis de red se tienen en cuenta. Por lo tanto, se recomienda que defina el modo de viaje del análisis y cargue las barreras antes de cargar otras entradas de análisis.

  • La herramienta se ejecuta considerablemente más rápido si las clases de entidad utilizadas como fuentes de red en el dataset de red tienen un índice espacial válido y actualizado.

  • Si su capa de análisis hace referencia a un servicio de portal, los campos de ubicación no se calculan hasta que no resuelva el análisis. Para estas capas, la herramienta Agregar ubicaciones incorpora las entradas a su capa de análisis sin calcular los campos de ubicación. Por lo tanto, algunos parámetros de la herramienta no rigen para estas capas y estarán ocultos en el cuadro de diálogo de la herramienta o se ignorarán en Python.

Parámetros

EtiquetaExplicaciónTipo de datos
Capa de análisis de red de entrada

La capa de análisis de red a la que se agregarán los objetos de análisis de red.

Network Analyst Layer
Subcapa

El nombre de la subcapa de la capa de análisis de red a la que se agregarán los objetos de análisis de red.

String
Ubicaciones de entrada

La tabla o clase de entidad que contiene las ubicaciones que se agregarán a la subcapa de análisis de red.

Table View
Asignaciones de campos
(Opcional)

La asignación entre los campos de entrada de la subcapa de análisis de red a la que está agregando ubicaciones y los campos de los datos de entrada o constantes especificadas.

Las subcapas de entrada de las capas de análisis de red tienen un conjunto de campos de entrada que puede modificar o rellenar según las necesidades del análisis. Al agregar ubicaciones a la subcapa, puede utilizar este parámetro para asignar valores de campo de la tabla de entrada a estos campos de la subcapa. También puede utilizar asignaciones de campo para especificar un valor predeterminado constante para cada propiedad.

Si no se especifican ni el valor de campo ni el valor predeterminado para una propiedad, los objetos de análisis de red resultantes tendrán valores nulos para esa propiedad.

En la documentación de cada capa hay disponible una lista completa de campos de entrada para cada subcapa de cada tipo de capa de análisis de red. Por ejemplo, examine los campos de entrada de la subcapa Paradas de la capa de ruta.

Si los datos que está cargando contienen ubicaciones de red o rangos de ubicaciones basados en el dataset de red utilizado para el análisis, elija la opción Usar campos de ubicación de red del menú desplegable. Agregar los objetos de análisis de red usando los campos de ubicación de red es más rápido que cargarlos mediante la geometría.

Más información sobre los campos de ubicación de red

Network Analyst Class FieldMap
Tolerancia de búsqueda
(Opcional)

La tolerancia de búsqueda que se utilizará para localizar las entidades de entrada en la red. Las entidades que se encuentran fuera de la tolerancia de búsqueda quedan no ubicadas. El parámetro incluye un valor y unidades para la tolerancia.

El valor predeterminado es 5.000 metros.

El parámetro no se utiliza cuando se agregan ubicaciones a subcapas con geometría de línea o polígono, como Barreras de línea y Barreras de polígono.

Este parámetro no se utiliza cuando la fuente de datos de red de la capa de análisis de red de entrada es un servicio del portal.

Linear Unit
Campo de ordenación
(Opcional)

El campo en el que se clasifican los objetos de análisis de red mientras se agregan a la capa de análisis de red. El valor predeterminado es el campo ObjectID en la clase de entidad o tabla de entrada.

Field
Criterios de búsqueda
(Opcional)

Las fuentes del dataset de red en las que se buscará al calcular las ubicaciones de red y las partes de la geometría (también conocidas como tipos de alineación) que se utilizarán. Por ejemplo, si el dataset de red hace referencia a clases de entidad separadas que representan calles y aceras, puede optar por ubicar entradas en calles pero no en aceras.

Las siguientes son las opciones de tipo de alineación disponibles para cada fuente de red:

  • SHAPE: el punto se ubicará en el punto más cercano de un elemento en esta fuente de red.
  • MIDDLE: el punto se ubicará en el punto medio más cercano de un elemento en esta fuente de red.
  • END: el punto se ubicará en el extremo más cercano de un elemento en esta fuente de red.
  • NONE: el punto no se ubicará en los elementos de esta fuente de red.

Las opciones END y MIDDLE se mantienen para la compatibilidad con versiones anteriores. Utilice la opción SHAPE para localizar sus entradas en una fuente de red en particular; de lo contrario, utilice NONE.

Cuando se calculan las ubicaciones para entidades poligonales o de línea, solo se utiliza el tipo de alineación SHAPE, incluso si se especifican otros tipos de alineación.

El valor predeterminado es SHAPE para todas las fuentes de red, excepto para los cruces de invalidación creados al ejecutar la herramienta Disolver red y los cruces de sistema, que tienen un valor predeterminado de NONE.

Este parámetro no se utiliza si la fuente de datos de red es un servicio del portal.

Value Table
Buscar el más cercano entre todas las clases
(Opcional)

Nota:

Este parámetro está disponible solo a través de Python.

Boolean
Incorporar a las ubicaciones existentes
(Opcional)

Especifica si se incorporarán nuevos objetos de análisis de red a los objetos existentes.

  • Activado: los nuevos objetos de análisis de red se incorporarán al conjunto de objetos existentes en la subcapa seleccionada. Esta es la opción predeterminada.
  • Desactivado: los objetos de análisis de red existentes se eliminarán y remplazarán por los nuevos objetos.
Boolean
Ajustar a la red
(Opcional)

Especifica si las entradas se alinearán con sus ubicaciones de red calculadas o si se representarán en su ubicación geográfica original.

Para usar la aproximación a borde en el análisis y así controlar qué lado de la carretera debe utilizar un vehículo para aproximarse a una ubicación, no alinee las entradas con sus ubicaciones de red, o bien utilice un desplazamiento de alineación para asegurarse de que el punto permanezca claramente a un lado de la carretera.

El parámetro no se utiliza cuando se agregan ubicaciones a subcapas con geometría de línea o polígono, como Barreras de línea y Barreras de polígono.

Este parámetro no se utiliza cuando la fuente de datos de red de la capa de análisis de red de entrada es un servicio del portal.

Nota:

Si, una vez agregadas las ubicaciones, cambia el modo de viaje de la capa de análisis de red o agrega o elimina barreras, las ubicaciones de red de los puntos afectados se recalculan automáticamente en el momento de la resolución para garantizar que sigan siendo válidas. Este proceso de recálculo automático no tendrá en cuenta ninguna configuración (por ejemplo, las consultas de búsqueda) utilizada anteriormente para calcular las ubicaciones de red. En su lugar, utiliza solamente la geometría de la entidad de entrada y el modo de viaje y las barreras de la capa de análisis de red. Para aumentar las probabilidades de elegir las mismas ubicaciones de red si las ubicaciones de red del punto se recalculan automáticamente, utilice este parámetro para alinear las entradas con las ubicaciones de red calculadas durante la ejecución de esta herramienta. De esta forma, la ubicación de red deseada se conservará en la geometría del punto de entrada.

  • Activado: las geometrías de las ubicaciones de red se alinearán con sus ubicaciones de red.
  • Desactivado: las geometrías de las ubicaciones de red se basarán en las geometrías de las entidades de entrada. Esta es la opción predeterminada.
Boolean
Desplazamiento del ajuste
(Opcional)

Cuando alinee un punto a la red, puede aplicar una distancia de desplazamiento. Una distancia de desplazamiento de cero significa que el punto coincidirá con la entidad de red (generalmente una línea). Para desplazar el punto desde la entidad de red, introduzca una distancia de desplazamiento. El desplazamiento se relaciona con la ubicación de punto original; esto es, si el punto original estaba en el lado izquierdo, su nueva ubicación se desplazará hacia la izquierda. Si estaba originalmente sobre el lado derecho, su nueva ubicación se desplazará hacia la derecha.

El valor predeterminado es 5 metros. Sin embargo, este parámetro no se tiene en cuenta si Ajustar a la red está desactivado.

El parámetro no se utiliza cuando se agregan ubicaciones a subcapas con geometría de línea o polígono, como Barreras de línea y Barreras de polígono.

Este parámetro no se utiliza cuando la fuente de datos de red de la capa de análisis de red de entrada es un servicio del portal.

Linear Unit
Excluir las porciones restringidas de la red
(Opcional)

Nota:

Este parámetro está disponible solo a través de Python.

Boolean
Consulta de búsqueda
(Opcional)

Define una consulta que restringirá la búsqueda a un subconjunto de entidades en la clase de entidad de origen. Esto resulta útil si no desea buscar en entidades que puedan resultar inadecuadas para el análisis. Por ejemplo, puede utilizar la consulta para excluir todas las entidades con una clase de carretera particular.

Se puede especificar una expresión SQL separada por clase de entidad de origen del dataset de red. De forma predeterminada, no se utiliza ninguna consulta para ningún origen.

Este parámetro no se utiliza si la fuente de datos de red es un servicio del portal.

La expresión SQL correspondiente a una fuente de red dada se especifica seleccionando el nombre de la fuente en la columna Nombre y utilizando el Constructor de expresiones SQL en la columna Consulta. Para obtener más información sobre la sintaxis SQL, consulte Referencia SQL para las expresiones de consulta utilizadas en ArcGIS.

No se aplicará ninguna consulta a ninguna fuente de red especificada explícitamente en el cuadro de diálogo de la herramienta.

Value Table

Salida derivada

EtiquetaExplicaciónTipo de datos
Capa de análisis de red de entrada actualizada

La capa de análisis de red actualizada.

Capa de Network Analyst

arcpy.na.AddLocations(in_network_analysis_layer, sub_layer, in_table, {field_mappings}, {search_tolerance}, {sort_field}, {search_criteria}, {match_type}, {append}, {snap_to_position_along_network}, {snap_offset}, {exclude_restricted_elements}, {search_query})
NombreExplicaciónTipo de datos
in_network_analysis_layer

La capa de análisis de red a la que se agregarán los objetos de análisis de red.

Network Analyst Layer
sub_layer

El nombre de la subcapa de la capa de análisis de red a la que se agregarán los objetos de análisis de red.

String
in_table

La tabla o clase de entidad que contiene las ubicaciones que se agregarán a la subcapa de análisis de red.

Table View
field_mappings
(Opcional)

La asignación entre los campos de entrada de la subcapa de análisis de red a la que está agregando ubicaciones y los campos de los datos de entrada o constantes especificadas.

Las subcapas de entrada de las capas de análisis de red tienen un conjunto de campos de entrada que puede modificar o rellenar según las necesidades del análisis. Al agregar ubicaciones a la subcapa, puede utilizar este parámetro para asignar valores de campo de la tabla de entrada a estos campos de la subcapa. También puede utilizar asignaciones de campo para especificar un valor predeterminado constante para cada propiedad.

Si no se especifican ni el valor de campo ni el valor predeterminado para una propiedad, los objetos de análisis de red resultantes tendrán valores nulos para esa propiedad.

En la documentación de cada capa hay disponible una lista completa de campos de entrada para cada subcapa de cada tipo de capa de análisis de red. Por ejemplo, examine los campos de entrada de la subcapa Paradas de la capa de ruta.

Se utiliza un objeto NAClassFieldMappings obtenido de la clase NAClassFieldMappings para especificar el valor del parámetro. El objeto NAClassFieldMappings es una colección de objetos NAClassFieldMap que le permite especificar los valores predeterminados o asignar un nombre de campo de las entidades de entrada para las propiedades del objeto de análisis de red. Si los datos que está cargando contienen ubicaciones de red o rangos de ubicaciones basados en el dataset de red utilizado para el análisis, asigne los campos de ubicación de red de las entidades de entrada para las propiedades de ubicación de red. Especificar los campos de ubicación de red en las asignaciones de campos es similar a utilizar el parámetro Usar campos de ubicación de red del cuadro de diálogo de la herramienta.

Más información sobre los campos de ubicación de red

Precaución:

Si especifica las asignaciones de campos para cualquiera de las propiedades de ubicación de red, debe especificar las asignaciones de campos correspondientes a las propiedades de ubicación de red restantes a fin de evitar un error de ejecución de la herramienta.

Network Analyst Class FieldMap
search_tolerance
(Opcional)

La tolerancia de búsqueda que se utilizará para localizar las entidades de entrada en la red. Las entidades que se encuentran fuera de la tolerancia de búsqueda quedan no ubicadas. El parámetro incluye un valor y unidades para la tolerancia.

El valor predeterminado es 5.000 metros.

El parámetro no se utiliza cuando se agregan ubicaciones a subcapas con geometría de línea o polígono, como Barreras de línea y Barreras de polígono.

Este parámetro no se utiliza cuando la fuente de datos de red de la capa de análisis de red de entrada es un servicio del portal.

Linear Unit
sort_field
(Opcional)

El campo en el que se clasifican los objetos de análisis de red mientras se agregan a la capa de análisis de red. El valor predeterminado es el campo ObjectID en la clase de entidad o tabla de entrada.

Field
search_criteria
[[Source, SnapType],...]
(Opcional)

Las fuentes del dataset de red en las que se buscará al calcular las ubicaciones de red y las partes de la geometría (también conocidas como tipos de alineación) que se utilizarán. Por ejemplo, si el dataset de red hace referencia a clases de entidad separadas que representan calles y aceras, puede optar por ubicar entradas en calles pero no en aceras.

Las siguientes son las opciones de tipo de alineación disponibles para cada fuente de red:

  • SHAPE: el punto se ubicará en el punto más cercano de un elemento en esta fuente de red.
  • MIDDLE: el punto se ubicará en el punto medio más cercano de un elemento en esta fuente de red.
  • END: el punto se ubicará en el extremo más cercano de un elemento en esta fuente de red.
  • NONE: el punto no se ubicará en los elementos de esta fuente de red.

Las opciones END y MIDDLE se mantienen para la compatibilidad con versiones anteriores. Utilice la opción SHAPE para localizar sus entradas en una fuente de red en particular; de lo contrario, utilice NONE.

Cuando se calculan las ubicaciones para entidades poligonales o de línea, solo se utiliza el tipo de alineación SHAPE, incluso si se especifican otros tipos de alineación.

El valor predeterminado es SHAPE para todas las fuentes de red, excepto para los cruces de invalidación creados al ejecutar la herramienta Disolver red y los cruces de sistema, que tienen un valor predeterminado de NONE.

Este parámetro no se utiliza si la fuente de datos de red es un servicio del portal.

El valor de parámetro se especifica como una lista con listas anidadas. La lista anidada está compuesta por dos valores que indican el nombre y el tipo de alineación de cada fuente de red. Por ejemplo, el valor de parámetro [["Streets","SHAPE"],["Streets_ND_Junctions","NONE"]] especifica que se puede buscar en la forma de la fuente Streets, pero no en la fuente Streets_ND_Junctions.

Las fuentes de redes que no se incluyan en esta lista utilizarán su tipo de alineación predeterminado. Se recomienda incluir todas las fuentes de redes en la lista y establecer de forma explícita el tipo de alineación de cada una.

En los datasets de red de geodatabase, los tipos de alineación se pueden especificar para cada subtipo de la fuente de red. Por ejemplo, si la red tiene un origen llamado Streets y ese origen tiene un subtipo llamado Local Streets, especifique el tipo de alineación de las calles locales que utilizan ["Streets : Local Streets", "SHAPE"].

Value Table
match_type
(Opcional)

Especifica cómo se asignarán las ubicaciones de red.

  • MATCH_TO_CLOSESTLas nuevas ubicaciones de red se harán coincidir con la fuente de red más cercana entre todas las fuentes que tengan un tipo de alineación especificado en los criterios de búsqueda. Esta es la opción predeterminada.
  • PRIORITYLas nuevas ubicaciones de red se harán coincidir con la primera fuente de red que tenga un tipo de alineación especificado en los criterios de búsqueda. La búsqueda de los orígenes se realiza en orden de prioridad y la búsqueda se detiene si la ubicación se encuentra dentro de la tolerancia de búsqueda.

El parámetro no se utiliza cuando se agregan ubicaciones a subcapas con geometría de línea o polígono, como Barreras de línea y Barreras de polígono.

Este parámetro no se utiliza cuando la fuente de datos de red de la capa de análisis de red de entrada es un servicio del portal.

Boolean
append
(Opcional)

Especifica si se incorporarán nuevos objetos de análisis de red a los objetos existentes.

  • APPENDLos nuevos objetos de análisis de red se incorporarán al conjunto de objetos existentes en la subcapa seleccionada. Esta es la opción predeterminada.
  • CLEARLos objetos de análisis de red existentes se eliminarán y remplazarán por los nuevos objetos.
Boolean
snap_to_position_along_network
(Opcional)

Especifica si las entradas se alinearán con sus ubicaciones de red calculadas o si se representarán en su ubicación geográfica original.

Para usar la aproximación a borde en el análisis y así controlar qué lado de la carretera debe utilizar un vehículo para aproximarse a una ubicación, no alinee las entradas con sus ubicaciones de red, o bien utilice un desplazamiento de alineación para asegurarse de que el punto permanezca claramente a un lado de la carretera.

El parámetro no se utiliza cuando se agregan ubicaciones a subcapas con geometría de línea o polígono, como Barreras de línea y Barreras de polígono.

Este parámetro no se utiliza cuando la fuente de datos de red de la capa de análisis de red de entrada es un servicio del portal.

Nota:

Si, una vez agregadas las ubicaciones, cambia el modo de viaje de la capa de análisis de red o agrega o elimina barreras, las ubicaciones de red de los puntos afectados se recalculan automáticamente en el momento de la resolución para garantizar que sigan siendo válidas. Este proceso de recálculo automático no tendrá en cuenta ninguna configuración (por ejemplo, las consultas de búsqueda) utilizada anteriormente para calcular las ubicaciones de red. En su lugar, utiliza solamente la geometría de la entidad de entrada y el modo de viaje y las barreras de la capa de análisis de red. Para aumentar las probabilidades de elegir las mismas ubicaciones de red si las ubicaciones de red del punto se recalculan automáticamente, utilice este parámetro para alinear las entradas con las ubicaciones de red calculadas durante la ejecución de esta herramienta. De esta forma, la ubicación de red deseada se conservará en la geometría del punto de entrada.

  • NO_SNAP Las geometrías de las ubicaciones de red se basarán en las geometrías de las entidades de entrada. Esta es la opción predeterminada.
  • SNAPLas geometrías de las ubicaciones de red se alinearán con sus ubicaciones de red.
Boolean
snap_offset
(Opcional)

Cuando alinee un punto a la red, puede aplicar una distancia de desplazamiento. Una distancia de desplazamiento de cero significa que el punto coincidirá con la entidad de red (generalmente una línea). Para desplazar el punto desde la entidad de red, introduzca una distancia de desplazamiento. El desplazamiento se relaciona con la ubicación de punto original; esto es, si el punto original estaba en el lado izquierdo, su nueva ubicación se desplazará hacia la izquierda. Si estaba originalmente sobre el lado derecho, su nueva ubicación se desplazará hacia la derecha.

El parámetro no se utiliza cuando se agregan ubicaciones a subcapas con geometría de línea o polígono, como Barreras de línea y Barreras de polígono.

El valor predeterminado es 5 metros. Sin embargo, este parámetro no se tiene en cuenta si snap_to_position_along_network tiene el valor NO_SNAP.

El parámetro no se utiliza cuando se agregan ubicaciones a subcapas con geometría de línea o polígono, como Barreras de línea y Barreras de polígono.

Este parámetro no se utiliza cuando la fuente de datos de red de la capa de análisis de red de entrada es un servicio del portal.

Linear Unit
exclude_restricted_elements
(Opcional)

Especifica si se excluirán los elementos de red restringidos.

  • EXCLUDELas ubicaciones de red solo se colocarán en porciones transitables de la red. Esto evita situar ubicaciones de red sobre elementos a los que no puede acceder debido a restricciones o barreras. Antes de agregar ubicaciones de red con esta opción, asegúrese de que ha agregado todas las barreras de restricción a la capa de análisis de red de entrada para obtener los resultados esperados. Este parámetro no se aplica cuando se agregan objetos de barrera. En tales casos, utilice "#" como el valor de parámetro. Esta es la opción predeterminada.
  • INCLUDELas ubicaciones de red se colocarán en todos los elementos de la red. Las ubicaciones de red que se agregan con este parámetro pueden ser inalcanzables durante el proceso de resolución si se colocan en elementos restringidos.

Este parámetro no se utiliza cuando la fuente de datos de red de la capa de análisis de red de entrada es un servicio del portal.

Boolean
search_query
[[Source, Expression],...]
(Opcional)

Define una consulta que restringirá la búsqueda a un subconjunto de entidades en la clase de entidad de origen. Esto resulta útil si no desea buscar en entidades que puedan resultar inadecuadas para el análisis. Por ejemplo, puede utilizar la consulta para excluir todas las entidades con una clase de carretera particular.

Se puede especificar una expresión SQL separada por clase de entidad de origen del dataset de red. De forma predeterminada, no se utiliza ninguna consulta para ningún origen.

Este parámetro no se utiliza si la fuente de datos de red es un servicio del portal.

El valor de parámetro se especifica como una lista de listas anidadas. Las listas anidada están compuestas por dos valores que indican el nombre y la expresión SQL de todas las fuentes de red. Para obtener más información sobre la sintaxis SQL, consulte Referencia SQL para las expresiones de consulta utilizadas en ArcGIS.

No se aplicará ninguna consulta a ninguna fuente de red no incluida en esta lista. Del mismo modo, una expresión especificada como una cadena vacía también se interpretará como sin consulta.

Por ejemplo, el valor del parámetro [["Streets", "\"CFCC\" = 'A15'"], ["Streets_ND_Junctions", ""]] especifica una consulta correspondiente a la clase de entidad de origen Streets para ubicar entradas solamente en calles donde el campo CFCC tiene un valor de A15. No se aplica ninguna consulta a la clase de entidad de origen Streets_ND_Junctions.

Value Table

Salida derivada

NombreExplicaciónTipo de datos
output_layer

La capa de análisis de red actualizada.

Capa de Network Analyst

Muestra de código

Ejemplo 1 de AddLocations (ventana de Python)

Ejecutar la herramienta utilizando solo los parámetros requeridos.

hospitals = "C:/Data/SanFrancisco.gdb/Analysis/Hospitals"
arcpy.na.AddLocations("Route", "Stops", hospitals, "", "")
Ejemplo 2 de AddLocations (ventana de Python)

Ejecutar la herramienta utilizando todos los parámetros.

hospitals = "C:/Data/SanFrancisco.gdb/Analysis/Hospitals"
arcpy.na.AddLocations("Route", "Stops", hospitals,
                      "Name Name #;Attr_Minutes VisitTime 0;CurbApproach # 0",
                      "2 Miles", "FID",
                      [["Streets", "SHAPE"], ["Streets_ND_Junctions", "NONE"]],
                      "MATCH_TO_CLOSEST", "CLEAR", "SNAP", "10 Feet", "EXCLUDE",
                      [["Streets", '"FREEWAY" = 0'],
                      ["Streets_ND_Junctions", ""]])
Ejemplo 3 de AddLocations (flujo de trabajo)

En la siguiente secuencia de comandos independiente de Python se muestra cómo se puede utilizar la herramienta AddLocations para cargar orígenes y destinos en la capa de Matriz de coste OD.

Heredado:

La función GetNASublayer se puede utilizar para recuperar las subcapas de una capa de análisis de red. Se introdujo en ArcGIS Pro 2.7. En versiones de software anteriores, la mejor forma de recuperar un objeto de subcapa de una capa de análisis de red era utilizar el método listLayers del objeto de análisis de red Layer utilizando el nombre de subcapa como comodín.

# Name: AddLocations_Workflow.py
# Description: Calculate a travel time matrix between stores. Use the Add
#               Locations tool to load origins and destinations into an OD Cost
#               Matrix layer. Since the origins and destinations are the same in
#               this case, the origins are first loaded from the stores feature
#               class using geometry, and the destinations are loaded from the
#               origins using network location fields in order to speed up the
#               load times.
# 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 inputs and outputs
    input_gdb = "C:/Data/SanFrancisco.gdb"
    network = os.path.join(input_gdb, "Transportation", "Streets_ND")
    layer_name = "StoreTravelTimeMatrix"
    travel_mode = "Driving Time"
    stores = os.path.join(input_gdb, "Analysis", "Stores")
    search_tolerance = "500 Meters"
    search_query = [["Streets", '"FREEWAY" = 0'], ["Streets_ND_Junctions", ""]]
    output_layer_file = os.path.join(output_dir, layer_name + ".lyrx")

    # Create a new OD cost matrix analysis layer. For this scenario, the default
    # value for all the remaining parameters statisfies the analysis requirements
    result_object = arcpy.na.MakeODCostMatrixAnalysisLayer(network, layer_name,
                                                    travel_mode)

    # Get the layer object from the result object. The OD cost matrix layer can
    # now be referenced using the layer object.
    layer_object = result_object.getOutput(0)

    # Get the names of all the sublayers within the OD layer.
    sublayer_names = arcpy.na.GetNAClassNames(layer_object)
    # Store the layer names for later use
    origins_layer_name = sublayer_names["Origins"]
    destinations_layer_name = sublayer_names["Destinations"]

    # Load store features as origins using the geometry of store features.
    # Ensure that the stores are not located on freeways by using a search query.
    arcpy.na.AddLocations(layer_object, origins_layer_name, stores, "",
                          search_tolerance,
                          exclude_restricted_elements="EXCLUDE",
                          search_query=search_query)

    # Because we want our origins and destinations to be the same, load the
    # origins as destinations using the network locations fields. Loading using
    # existing network location fields is much faster than loading using geometry
    # because the network locations have already been calculated.
    # Create a field mappings object that supports network location fields using
    # the candidate fields from origins
    origins_sublayer = arcpy.na.GetNASublayer(layer_object, "Origins")
    candidate_fields = arcpy.ListFields(origins_sublayer)
    field_mappings = arcpy.na.NAClassFieldMappings(layer_object,
                                                  destinations_layer_name, True,
                                                  candidate_fields)
    arcpy.na.AddLocations(layer_object, destinations_layer_name,
                            origins_sublayer, field_mappings, "")

    # Solve the od cost matrix layer. Halt the execution if there is an
    # invalid location
    arcpy.na.Solve(layer_object, "HALT")

    # Save the solved OD cost matrix 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

Casos especiales

Información de licenciamiento

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

Temas relacionados