Agregar ubicaciones (Network Analyst)
Resumen
Agrega objetos de análisis de red a una capa de análisis de red. Los objetos se agregan a subcapas específicas como Paradas y Barreras. Los objetos se introducen como entidades o registros.
Uso
-
Se puede ejecutar esta herramienta varias veces para incorporar objetos de análisis de red a la misma subcapa. Por ejemplo, si Paradas de una capa de Ruta proviene de dos clases de entidad, se puede solicitar la herramienta dos veces, utilizando la opción APPEND.
-
Si desea eliminar los objetos de análisis de red existentes antes de cargar los nuevos, use 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
Parámetro | Explicación | Tipo de datos |
in_network_analysis_layer |
Capa de análisis de red en la que se incorporará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 es la fuente para los nuevos objetos de análisis de red. | Table View |
field_mappings |
Sets the values for the properties of the network analysis objects. Properties can be set to a constant or mapped to a field from the input feature class or table. El valor de parámetro se especifica como una lista de tres valores separados por punto y coma que contiene el nombre de la propiedad, el nombre de campo y el valor predeterminado. Debe especificar el nombre de campo o el valor predeterminado para una propiedad. Por ejemplo, el valor de parámetro "Name Address #; Attr_Minutes # 2" especifica que la propiedad Name (nombre) se asigna desde el campo Address (dirección) y que la propiedad Attr_Minutes debe tener un valor constante de 2, cuando se agreguen las entidades de entrada. Si una propiedad específica no se asigna a un campo, tiene un valor predeterminado o no está incluida en el valor de parámetro, tendrá la asignación de campos predeterminada. Si desea usar la asignación de campos predeterminada para todas las propiedades, utilice el valor de parámetro #. If both the Field and the Default Value are not specified for a property, the resulting network analysis objects will have null values for that property. 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. Para ubicaciones de punto como Paradas o Incidentes, asigne las propiedades SourceID, SourceOID, PosAlong y SideOfEdge y, para las ubicaciones de polígono o línea como Barreras de polígono, asigne la propiedad Ubicaciones. Agregar los objetos de análisis de red usando los campos de ubicación de red es mucho más rápido que cargarlos mediante la geometría. 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 para las propiedades de ubicación de red restantes a fin de evitar un error de ejecución de la herramienta. | Network Analyst Field Map |
search_tolerance |
The search tolerance for locating the input features on the network. Features that are outside the search tolerance are left unlocated. The parameter includes a value and units for the tolerance. El parámetro no se utiliza cuando se agregan ubicaciones a las subcapas Barreras de línea o Barreras de polígono. En tales casos, utilice "#" como el valor de parámetro. | 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 tabla. | Field |
search_criteria [[Source, SnapType],...] (Opcional) |
Specifies which sources in the network dataset will be searched when finding locations and what portions of geometry (also known as snap types) will be used. 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 las palabras clave "SHAPE", "MIDDLE", "END" o "NONE". Por ejemplo, cuando se buscan ubicaciones, el valor de parámetro [["Streets","SHAPE"],["Streets_ND_Junctions","NONE"]] especifica que se puede buscar en la forma de la fuente Streets (calles) pero no en la fuente Streets_ND_Junctions (calles y cruces). 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. When adding line or polygon network locations, only the Shape snap type is used even if other snap types are specified. | Value Table |
match_type (Opcional) |
The parameter is not used when adding locations to the Line Barriers or Polygon Barriers sublayers. In such cases, use "#" as the parameter value. | Boolean |
append (Opcional) |
Specifies whether or not to append new network analysis objects to existing objects.
| Boolean |
snap_to_position_along_network (Opcional) |
Specifies that you want to snap the network locations along the network dataset or at some specified offset from the network dataset.
The parameter is not used when adding locations to the Line Barriers or Polygon Barriers sublayers. In such cases, use "#" as the parameter value. | Boolean |
snap_offset (Opcional) |
When snapping a point to the network, you can apply an offset distance. An offset distance of zero means the point will be coincident with the network feature (typically a line). To offset the point from the network feature, enter an offset distance. The offset is in relation to the original point location. That is, if the original point was on the left side, its new location will be offset to the left. If it was originally on the right side, its new location will be offset to the right. The parameter is not used when adding locations to the Line Barriers or Polygon Barriers sublayers. In such cases, use "#" as the parameter value. | Long |
exclude_restricted_elements (Opcional) |
| Boolean |
search_query [[Source, Expression],...] (Opcional) | Specifies a query to restrict the search to a subset of the features within a source feature class. This is useful if you don't want to find features that may be unsuited for a network location. For example, if you are loading centroids of polygons and don't want to locate on local roads, you can define a query that searches for major roads only. 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 de archivos o de ArcSDE, shapefiles o SDC, encierre los nombres de campo entre comillas dobles: "CFCC". Si está consultando clases de entidad de origen almacenadas en geodatabases personales, encierre los campos entre corchetes: [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, use "#" como el 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 (calles) pero ninguna expresión para la clase de entidad de origen Streets_ND_Junctions (calles y cruces). 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. | Value Table |
Ejemplo de código
Ejecutar la herramienta utilizando sólo los parámetros requeridos
import arcpy arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/SanFrancisco.gdb" arcpy.AddLocations_na("Route","Stops","Analysis/Hospital","","")
Ejecutar la herramienta utilizando todos los parámetros
import arcpy arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/SanFrancisco.gdb" arcpy.AddLocations_na("Route","Stops","Analysis/Hospital", "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",""]])
La siguiente secuencia de comandos de Python independiente muestra cómo utilizar la herramienta AddLocations para cargar orígenes y destinos en la capa de Matriz de coste OD.
# Name: AddLocations_Workflow.py # Description: The scenario shows how to calculate a travel time matrix between # store features. Use the Add Locations tool to load origins and # destinations into an OD Cost Matrix layer.Since the origins and # destinations are same in this case, the origins are first loaded # from the store features using their geometry and the destinations # are loaded from the origins using network location fields to # speed up the load times. # Requirements: Network Analyst Extension #Import system modules 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" outNALayer = "StoreTravelTimeMatrix" impedanceAttribute = "TravelTime" inFeatures = "Analysis/Stores" searchTolerance = "500 Meters" searchQuery = [["Streets",'"FREEWAY" = 0'],["Streets_ND_Junctions",""]] originsLayer = outNALayer + "/" + "Origins" fieldMappings = "Name Name #; SourceID SourceID #;SourceOID SourceOID #;" \ + "PosAlong PosAlong #;SideOfEdge SideOfEdge #" outLayer = "C:/data/output" + "/" + outNALayer + ".lyr" #Create a new OD cost matrix analysis layer. For this scenario, the default #value for all the remaining parameters statisfies the analysis requirements arcpy.MakeODCostMatrixLayer_na(inNetworkDataset, outNALayer, impedanceAttribute) #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. #The OD cost matrix layer created previously is referred using its name. arcpy.AddLocations_na(outNALayer,"Origins",inFeatures,"",searchTolerance, search_query = searchQuery) #Load origins as destinations using the network locations fields from #origins. This is much faster than loading destinations from the store #features using their geometry as their network locations have already been #calculated while loading them origins. arcpy.AddLocations_na(outNALayer,"Destinations",originsLayer,fieldMappings, "") #Solve the od cost matrix layer. Halt the execution if there is an #invalid location arcpy.Solve_na(outNALayer,"HALT") #Save the solved na layer as a layer file on disk with relative paths arcpy.SaveToLayerFile_management(outNALayer,outLayer,"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)