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.
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 proceden de dos clases de entidad, se puede solicitar la herramienta dos veces utilizando la opción APPEND.
Para eliminar los objetos de análisis de red existentes antes de cargar otros nuevos, utilice la opción CLEAR.
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.
Sintaxis
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})
Parámetro | Explicación | Tipo 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 | 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 clase de entidad o tabla que será la fuente para los nuevos objetos de análisis de red. | Table View |
field_mappings (Opcional) | Los valores para las propiedades de los objetos de análisis de red. Las propiedades se pueden establecer como una constante o se pueden asignar a un campo desde la clase de entidad de entrada o tabla. 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 los campos de ubicación de red en lugar de la geometría del cuadro de diálogo de la herramienta. 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. | 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 de entrada o la tabla. | Field |
search_criteria [[Source, SnapType],...] (Opcional) | Las fuentes del dataset de red en las que se buscará para encontrar las ubicaciones y las partes de la geometría (también conocidas como tipos de alineación) que se utilizarán. 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 para cada fuente de red. El tipo de alineación se especifica mediante la palabra clave SHAPE, MIDDLE, END o NONE.
Para especificar varios tipos de alineación para una única fuente de red, utilice una combinación de las palabras clave de tipo de alineación separadas por un guión bajo. Por ejemplo, MIDDLE_END especifica que las ubicaciones se pueden alinear hacia el medio o el final de la fuente de red. Cuando se agregan ubicaciones de red de línea o polígono, solo se utiliza el tipo de alineación SHAPE, incluso si se especifican otros tipos de alineación. Las fuentes de redes que no se incluyan en esta lista utilizarán su tipo de alineación predeterminado. Lo más seguro es incluir todas las fuentes de redes en la lista y establecer de forma explícita el tipo de alineación para cada una. El valor predeterminado es SHAPE para todas las fuentes de red, excepto los cruces del sistema, que tiene un valor predeterminado de NONE. | Value Table |
match_type (Opcional) | Especifica cómo se asignarán las ubicaciones de red.
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. | Boolean |
append (Opcional) | Especifica si se incorporarán nuevos objetos de análisis de red a los objetos existentes.
| Boolean |
snap_to_position_along_network (Opcional) | Especifica si se alinearán las ubicaciones de red a lo largo del dataset de red o con un desplazamiento especificado desde el dataset de red.
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. | 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. | Linear Unit |
exclude_restricted_elements (Opcional) | Especifica si se excluirán los elementos de red restringidos.
| Boolean |
search_query [[Source, Expression],...] (Opcional) | Una consulta que restringirá la búsqueda a un subconjunto de entidades dentro de la clase de entidad de origen. Esto resulta útil si desea excluir entidades que puedan resultar inadecuadas para una ubicación de red. Por ejemplo, si está cargando centroides de polígonos y no desea buscar en carreteras locales, puede definir una consulta que busque solo en carreteras principales. 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 la expresión SQL para todas las fuentes de red. La sintaxis de la expresión SQL difiere levemente según el tipo de clase de entidad de origen de la red. Por ejemplo, si está consultando clases de entidad de origen almacenadas en geodatabases corporativas o de archivos, o shapefiles, encierre los nombres de campo entre comillas dobles: "CFCC". Si no desea especificar una consulta para una fuente en particular, utilice "#" como el valor para la expresión SQL o excluya el nombre de la fuente y la expresión SQL del valor de parámetro. Si no desea especificar una consulta para todas las fuentes de red, utilice "#" como valor de parámetro. Por ejemplo, el valor de parámetro [["Streets","\"CFCC\" = 'A15'"], ["Streets_ND_Junctions",""]] especifica una expresión SQL para la clase de entidad de origen Streets, pero no especifica ninguna expresión para la clase de entidad de origen Streets_ND_Junctions. Tenga en cuenta que las comillas dobles utilizadas para encerrar el nombre del campo CFCC se separan mediante barras invertidas para evitar un error de análisis del intérprete de Python. De forma predeterminada, no se utiliza ninguna consulta. | Value Table |
Salida derivada
Nombre | Explicación | Tipo de datos |
output_layer | La capa de análisis de red actualizada. | Capa de Network Analyst |
Muestra de código
Ejecutar la herramienta utilizando solo los parámetros requeridos.
hospitals = "C:/Data/SanFrancisco.gdb/Analysis/Hospitals"
arcpy.na.AddLocations("Route", "Stops", hospitals, "", "")
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", ""]])
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.
# 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 = layer_object.listLayers(origins_layer_name)[0]
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
Información de licenciamiento
- Basic: Sí
- Standard: Sí
- Advanced: Sí