Hacer una capa de la matriz de coste OD (Network Analyst)

Nivel de licencia:BasicStandardAdvanced

Resumen

Crea una capa de análisis de red de matriz de coste origen-destino (OD) y establece sus propiedades de análisis. Una capa de análisis de matriz de coste OD es útil para representar una matriz de costes que oscilan desde un conjunto de ubicaciones de origen hasta un conjunto de ubicaciones de destino.

Uso

Sintaxis

MakeODCostMatrixLayer_na (in_network_dataset, out_network_analysis_layer, impedance_attribute, {default_cutoff}, {default_number_destinations_to_find}, {accumulate_attribute_name}, {UTurn_policy}, {restriction_attribute_name}, {hierarchy}, {hierarchy_settings}, {output_path_shape}, {time_of_day})
ParámetroExplicaciónTipo de datos
in_network_dataset

El dataset de red en el que se realizará el análisis de matriz de coste OD.

Network Dataset Layer
out_network_analysis_layer

Nombre de la capa de análisis de red de matriz de coste OD que se creará.

String
impedance_attribute

El atributo de coste que se usará como impedancia en el análisis.

String
default_cutoff
(Opcional)

Valor de impedancia predeterminado en el cual detener la búsqueda de destinos para un origen determinado. Si la impedancia acumulada supera el valor límite, el trazado poligonal se detiene. El valor predeterminado se puede invalidar especificando el valor límite en los orígenes.

Double
default_number_destinations_to_find
(Opcional)

Cantidad predeterminada de destinos a encontrar para cada origen. Se puede invalidar el valor predeterminado especificando un valor para la propiedad TargetDestinationCount en los orígenes.

Long
accumulate_attribute_name
[accumulate_attribute_name,...]
(Opcional)

Lista de los atributos de coste que se acumularán durante el análisis. Estos atributos de acumulación se usan específicamente de referencia; el solucionador utiliza los atributos de coste especificados por el parámetro de atributos Impedancia para calcular la ruta.

Para cada atributo de coste acumulado, se agrega una propiedad Total_[Impedancia] a las rutas generadas por el solucionador.

String
UTurn_policy
(Opcional)

Política de giro en U en los cruces. Permitir giros en U implica que el solucionador puede dar la vuelta en un cruce y regresar por la misma calle. Debido a que los cruces representan intersecciones de calles y callejones sin salida, los diferentes vehículos pueden ser capaces de dar la vuelta en algunos cruces, pero no en otros. Ello depende de que el cruce sea una intersección o un callejón sin salida. Para acomodar, el parámetro de la política del giro en U se especifica implícitamente por la cantidad de bordes que se conectan en el cruce, que se conoce como valencia de cruce. Los valores aceptables para este parámetro se enumeran a continuación; cada uno seguido de una descripción de su significado en términos de valencia de cruce.

  • ALLOW_UTURNSSe permiten los giros en U en los cruces con cualquier cantidad de bordes adyacentes. Este es el valor predeterminado.
  • NO_UTURNSLos giros en U están prohibidos en todos los cruces, independientemente de la valencia de cruce. Tenga en cuenta, sin embargo, que los giros en U seguirán estando permitidos en las ubicaciones de red aunque haya elegido esta configuración; sin embargo, también puede establecer la propiedad CurbApproach de cada ubicación de red individual para prohibir los giros en U en ella.
  • ALLOW_DEAD_ENDS_ONLYLos giros en U están prohibidos en todos los cruces, excepto los que tienen solo un borde adyacente (una calle sin salida).
  • ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLYLos giros en U están prohibidos en los cruces donde se encuentran dos bordes adyacentes pero están permitidos en las intersecciones (cruces con tres o más bordes adyacentes) o calles sin salida (cruces con exactamente un borde adyacente). A menudo, las redes tienen cruces extraños en medio de segmentos de carretera. Esta opción evita que los vehículos hagan giros en U en estas ubicaciones.
SugerenciaSugerencia:

Si necesita una política más definida respecto a la política de giros en U, considere agregar un evaluador de retraso de giro global con un atributo de coste de red, o ajustar su configuración si existe, y prestar especial atención a la configuración de los giros de 180 grados. Asimismo, examine la configuración de la propiedad CurbApproach de las ubicaciones de la red.

String
restriction_attribute_name
[restriction_attribute_name,...]
(Opcional)

Lista de atributos de restricción que se aplicarán durante el análisis.

String
hierarchy
(Opcional)
  • USE_HIERARCHY Usa el atributo de jerarquía para el análisis. Utilizar una jerarquía hace que el solucionador prefiera bordes de orden superior en lugar de bordes de orden inferior. Las soluciones jerárquicas son más rápidas y se pueden utilizar para simular la preferencia de un conductor que prefiere viajar por autovías en lugar de carreteras locales cuando es posible, incluso si eso significa un viaje más largo. Esta opción es válida solo si el dataset de red de entrada tiene atributos de jerarquía.
  • NO_HIERARCHYNo usa el atributo de jerarquía para el análisis. No utilizar una jerarquía produce una ruta exacta para el dataset de red.

El parámetro no se utiliza si no se definen atributos de jerarquía en el dataset de red utilizado para realizar el análisis. En tales casos, utilice "#" como el valor de parámetro.

Boolean
hierarchy_settings
(Opcional)

HerenciaHerencia:

Antes de la versión 10, este parámetro le permitía cambiar los rangos de jerarquía para su análisis de los rangos de jerarquía predeterminados establecidos en el dataset de red. En la versión 10, este parámetro ya no es compatible y se debe especificar como una cadena de caracteres vacía. Si desea cambiar los rangos de jerarquía para su análisis, actualice los rangos de jerarquía predeterminados en el dataset de red.

Network Analyst Hierarchy Settings
output_path_shape
(Opcional)
  • NO_LINESNo se generará ninguna forma para las rutas de salida. Esto resulta útil cuando tiene una gran cantidad de orígenes y destinos y sólo le interesa la tabla de matriz de coste OD (y no las formas de línea de salida).
  • STRAIGHT_LINESLa forma de la ruta de salida será una línea recta simple entre cada par origen-destino.

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 las rutas son diferentes, y no el trazado poligonal subyacente de la red.

String
time_of_day
(Opcional)

Indica la hora de salida de los orígenes.

Si eligió un atributo de impedancia basado 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, 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
Por ejemplo, para especificar que viajar debería empezar a 5:00 p.m. el martes, especifique el valor de parámetro como 1/2/1900 5:00 p.m.

Date

Ejemplo de código

Ejemplo 1 de MakeODCostMatrixLayer (ventana de Python)

Ejecutar la herramienta utilizando solo los parámetros requeridos.

import arcpy
arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/Paris.gdb"
arcpy.na.MakeODCostMatrixLayer("Transportation/ParisNet","DrivetimeCosts",
                               "Drivetime")
Ejemplo 2 de MakeODCostMatrixLayer (ventana de Python)

Ejecutar la herramienta utilizando todos los parámetros.

import arcpy
arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/Paris.gdb"
arcpy.na.MakeODCostMatrixLayer("Transportation/ParisNet","DrivetimeCosts",
                               "Drivetime",10,20,["Meters","Drivetime"],
                               "NO_UTURNS",["Oneway"],"USE_HIERARCHY","",
                               "NO_LINES")
Ejemplo 3 de MakeODCostMatrixLayer (flujo de trabajo)

La siguiente secuencia de comandos de Python independiente muestra cómo se puede utilizar la herramienta MakeODCostMatrixLayer para crear una matriz de coste origen-destino para la entrega de productos desde el depósito hasta todas las tiendas dentro de un tiempo de viaje de 10 minutos.

# Name: MakeODCostMatrixLayer_Workflow.py
# Description: Create an origin-destination cost matrix for delivery of goods 
#              from the warehouses to all stores within a 10-minute drive time 
#              and save the results to a layer file on disk. Such a matrix can   
#              be used as an input for logistics, delivery and routing analyses.
# 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/Paris.gdb"
    env.overwriteOutput = True
    
    #Set local variables
    inNetworkDataset = "Transportation/ParisMultimodal_ND"
    outNALayerName = "WarehouseToStoreDrivetimeMatrix"
    impedanceAttribute = "Drivetime"
    searchTolerance = "1000 Meters"
    accumulateAttributeName = ["Meters"]
    inOrgins = "Analysis/Warehouses"
    inDestinations = "Analysis/Stores"
    outLayerFile = "C:/data/output" + "/" + outNALayerName + ".lyr"
    
    #Create a new OD Cost matrix layer. We wish to find all stores within a 10 
    #minute cutoff. Apart from finding the drive time to the stores, we also 
    #want to find the total distance. So we will accumulate the "Meters" 
    #impedance attribute.
    outNALayer = arcpy.na.MakeODCostMatrixLayer(inNetworkDataset, outNALayerName,
                                                impedanceAttribute, 10, "",
                                                accumulateAttributeName)
    
    #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["Origins"]
    destinationsLayerName = subLayerNames["Destinations"]
    
    #Load the warehouse locations as origins using a default field mappings and
    #a search tolerance of 1000 Meters.
    arcpy.na.AddLocations(outNALayer, originsLayerName, inOrgins, "",
                          searchTolerance)
    
    #Load the store locations as destinations and map the NOM field from stores
    #features as Name property using field mappings
    fieldMappings = arcpy.na.NAClassFieldMappings(outNALayer, destinationsLayerName)
    fieldMappings["Name"].mappedFieldName = "NOM"
    arcpy.na.AddLocations(outNALayer, destinationsLayerName, inDestinations, 
                          fieldMappings, searchTolerance)
    
    #Solve the OD cost matrix layer
    arcpy.na.Solve(outNALayer)
    
    #Save the solved OD cost matrix 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