Agregar ubicaciones (Network Analyst)

Nivel de licencia:BasicStandardAdvanced

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

Sintaxis

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

Establece 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.

Un objeto NAClassFieldMappings obtenido de la clase NAClassFieldMappings se utiliza 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 la 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ónPrecaució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 Class FieldMap
search_tolerance

La tolerancia de búsqueda para ubicar 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 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)

Especifica en qué fuentes del dataset de red se buscará para encontrar las ubicaciones y qué partes de la geometría (también conocidas como tipos de alineación) 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 las palabras clave SHAPE, MIDDLE, END o NONE.

  • SHAPE: el punto localizará el punto más cercano de un elemento en esta fuente de redes.
  • MIDDLE: el punto localizará el punto medio más cercano de un elemento en esta fuente de redes.
  • END: el punto localizará el punto extremo más cercano de un elemento en esta fuente de redes.
  • NONE: el punto no localizará en los elementos de esta fuente de redes.
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.

Cuando se agregan ubicaciones de red de línea o polígono, solo se utiliza el tipo de alineación Forma, 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.

Value Table
match_type
(Opcional)
  • MATCH_TO_CLOSESTHace concordar las nuevas ubicaciones de red con la fuente de red más cercana entre todas las fuentes que tienen un tipo de alineación especificado en los criterios de búsqueda. Esta es la opción predeterminada.
  • PRIORITYHace concordar las nuevas ubicaciones de red con la primera fuente de red que tiene un tipo de alineación especificado en los criterios de búsqueda. Las fuentes se buscan en el orden de prioridad y la búsqueda se detiene cuando se encuentra la ubicación dentro de la tolerancia de búsqueda.

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.

Boolean
append
(Opcional)

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

  • APPENDAgrega los nuevos objetos de análisis de red al conjunto de objetos existentes en la subcapa seleccionada.
  • CLEARElimina los objetos de análisis de red existentes y los reemplaza con los nuevos objetos.
Boolean
snap_to_position_along_network
(Opcional)

Especifica que desea alinear las ubicaciones de red a lo largo del dataset de red o con un desplazamiento especificado desde el dataset de red.

  • NO_SNAP Las geometrías de las ubicaciones de red están basadas en las geometrías de las entidades de entrada. Esto es útil si desea utilizar la aproximación a borde que requiere que las ubicaciones de red sepan en qué lado del eje se encuentran.
  • SNAP Si tiene entidades de puntos, el punto se alineará a la red y no podrá utilizar aproximación a borde. Esto es útil si no le interesa cómo un vehículo se acerca a una parada. Si las entidades de entrada son líneas o polígonos, utilice este valor de parámetro.

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.

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 las subcapas Barreras de línea o Barreras de polígono. En tales casos, utilice "#" como el valor de parámetro.

Linear unit
exclude_restricted_elements
(Opcional)
  • EXCLUDEEspecifica que las ubicaciones de red sólo se colocan en porciones trazables 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 las ubicaciones de red con esta opción, asegúrese de haber agregado todas las barreras de restricción a la capa de entrada de análisis de red 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.
  • INCLUDEEspecifica que las ubicaciones de red se colocan en todos los elementos de la red. Las ubicaciones de red que se agregan con esta opción pueden ser inalcanzables durante el proceso de resolución si se colocan en elementos restringidos.
Boolean
search_query
[[Source, Expression],...]
(Opcional)

Especifica una consulta para restringir la búsqueda a un subconjunto de entidades dentro de la clase de entidad de origen. Esto resulta útil si no desea encontrar 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 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

Ejemplo 1 de AddLocations (ventana de Python)

Ejecutar la herramienta utilizando solo los parámetros requeridos.

import arcpy
arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/SanFrancisco.gdb"
arcpy.na.AddLocations("Route","Stops","Analysis/Hospital","","")
Ejemplo 2 de AddLocations (ventana de Python)

Ejecutar la herramienta utilizando todos los parámetros.

import arcpy
arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/SanFrancisco.gdb"
arcpy.na.AddLocations("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",""]])
Ejemplo 3 de AddLocations (flujo de trabajo)

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 the 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"
    outNALayerName = "StoreTravelTimeMatrix"
    impedanceAttribute = "TravelTime"
    inFeatures = "Analysis/Stores"
    searchTolerance = "500 Meters"
    searchQuery = [["Streets",'"FREEWAY" = 0'],["Streets_ND_Junctions",""]]
    odOrigins = "Origins"
    outLayerFile = "C:/data/output" + "/" + outNALayerName + ".lyr"
    
    #Create a new OD cost matrix analysis layer. For this scenario, the default 
    #value for all the remaining parameters statisfies the analysis requirements
    outNALayer = arcpy.na.MakeODCostMatrixLayer(inNetworkDataset, outNALayerName,
                                   impedanceAttribute)
    
    #Get the layer object from the result object. The OD cost matrix layer can 
    #now be referenced using the layer object.
    outNALayer = outNALayer.getOutput(0)
    
    #Get the names of all the sublayers within the OD cost matrix layer.
    subLayerNames = arcpy.na.GetNAClassNames(outNALayer)
    #Stores the layer names that we will use later
    originsLayerName = subLayerNames[odOrigins]
    destinationsLayerName = subLayerNames["Destinations"]
    
    #Get the origin layer object from within the OD cost matrix layer
    #The first layer returned by ListLayers is the OD cost matrix layer itself
    #which we don't want to use.
    for layer in arcpy.mapping.ListLayers(outNALayer)[1:]:
        if layer.datasetName == odOrigins:
            originsLayer = layer
            break
    else:
        raise Exception("Failed to get the origins layer object.")
    
    #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.na.AddLocations(outNALayer,originsLayerName,inFeatures,"",
                          searchTolerance, exclude_restricted_elements = "EXCLUDE",
                          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.
    #Create a field mappings object that supports network location fields from 
    #origins layer using the candidate fields from origins
    originsLayer = arcpy.management.MakeFeatureLayer(originsLayer,
                                                     outNALayerName+originsLayerName)
    candidateFields = arcpy.ListFields(originsLayer.getOutput(0))
    fieldMappings = arcpy.na.NAClassFieldMappings(outNALayer,
                                                  destinationsLayerName, True,
                                                  candidateFields)
    arcpy.na.AddLocations(outNALayer,destinationsLayerName,originsLayer,
                          fieldMappings,"")
    
    #Solve the od cost matrix layer. Halt the execution if there is an 
    #invalid location 
    arcpy.na.Solve(outNALayer,"HALT")
    
    #Save the solved na layer as a layer file on disk with relative paths
    arcpy.management.SaveToLayerFile(outNALayer,outLayerFile,"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)

Entornos

Temas relacionados

Información sobre licencias

ArcGIS for Desktop Basic: Sí
ArcGIS for Desktop Standard: Sí
ArcGIS for Desktop Advanced: Sí
5/10/2014