Récapitulatif
Provides access to analysis properties from a vehicle routing problem Network Analyst layer. The GetSolverProperties function is used to obtain a VehicleRoutingProblemSolverProperties object from a vehicle routing problem Network Analyst layer.
Discussion
The VehicleRoutingProblemSolverProperties object provides read and write access to all the analysis properties of a vehicle routing problem Network Analyst layer. The object can be used to modify the desired analysis properties of the vehicle routing problem layer, and the corresponding layer can be re-solved to determine the appropriate results. A new vehicle routing problem layer can be created using the Make Vehicle Routing Problem Layer geoprocessing tool. Obtaining the VehicleRoutingProblemSolverProperties object from a new vehicle routing problem layer allows you to reuse the existing layer for subsequent analyses rather than create a new layer for each analysis, which can be slow.
After modifying the properties of the VehicleRoutingProblemSolverProperties object, the corresponding layer can be immediately used with other functions and geoprocessing tools. There is no refresh or update of the layer required to honor the changes modified through the object.
Propriétés
Propriété | Explication | Type de données |
attributeParameters (Lecture/écriture) | Permet d'obtenir ou de définir les attributs paramétrés à utiliser dans l'analyse. La propriété retourne un dictionnaire Python. La clé de dictionnaire est un tuple à deux valeurs comprenant le nom de l'attribut et le nom du paramètre. La valeur de chaque élément du dictionnaire correspond à la valeur du paramètre. Les attributs de réseau paramétrés permettent de modéliser un aspect dynamique de la valeur d'un attribut. Par exemple, un tunnel avec une restriction de hauteur de 12 pieds peut être modélisé à l'aide d'un paramètre. Dans ce cas, la hauteur du véhicule en pieds doit être spécifiée en tant que valeur de paramètre. Si la hauteur du véhicule est supérieure à 12 pieds, cette restriction prend la valeur True, ce qui restreint le passage par le tunnel. De la même façon, un pont peut comporter un paramètre pour spécifier une restriction de poids. Toute tentative de modification de la propriété attributeParameters en place ne permet pas de mettre à jour les valeurs. Vous devez à la place toujours utiliser un nouvel objet dictionnaire pour définir des valeurs pour la propriété. Les deux blocs de code suivants montrent la différence entre ces deux approches.
| Dictionary |
capacityCount (Lecture/écriture) | Permet d'obtenir ou de définir le nombre de dimensions de contrainte de capacité requises pour décrire les limites pertinentes des véhicules. | Integer |
defaultDate (Lecture/écriture) | Permet d'obtenir ou de définir la date implicite pour les valeurs de champs de temps dont la date n'est pas spécifiée avec l'heure. Si un champ horaire pour un objet d'ordre, tel que TimeWindowStart1, a une valeur d'heure uniquement, la date est supposée être la valeur de propriété defaultDate. Par exemple, si un ordre a une valeur TimeWindowStart1 de 9h00 et si la valeur defaultDate est définie sur datetime.date(2012, 3, 6), la valeur de temps entière pour le champ est 9h00, le 6 mars 2012. La date par défaut n'a aucun effet sur les valeurs de champs horaires qui ont déjà une date. Le jour de la semaine peut aussi être spécifié en tant que date par défaut à l'aide des dates suivantes :
Par exemple, pour spécifier que la date implicite pour les valeurs de champs horaires doit être mardi, précisez la valeur de propriété comme 1/2/1900. | DateTime |
distanceAttribute (Lecture/écriture) | Permet d'obtenir ou de définir l'attribut de coût de distance utilisé pour définir la longueur le long des éléments du réseau. | String |
distanceFieldUnits (Lecture/écriture) | Permet d'obtenir ou de définir les unités de distance utilisées par les champs de distance des sous-couches et des tables de la couche d'analyse (classes d'analyse de réseau). L'unité n'a pas besoin d'être la même que celle de l'attribut de coût de réseau spécifiée en tant que valeur de propriété timeAttribute. Voici une liste des valeurs possibles :
| String |
excessTransitTimeImportance (Lecture/écriture) | Permet d'obtenir ou définir l'importance de la réduction du temps de transit excessif. Le temps de transit excessif correspond à la quantité de temps dépassant le temps nécessaire pour effectuer le trajet direct entre une paire d'ordres. Le temps excessif découle de pauses ou de trajets vers d'autres ordres ou dépôts entres des visites à des ordres appariés. Voici une liste des valeurs possibles :
| String |
outputPathShape (Lecture/écriture) | Permet d'obtenir ou de définir le type de forme pour les entités d'itinéraires générées en sortie par le solveur. Voici une liste des valeurs possibles :
| String |
restrictions (Lecture/écriture) | Permet d'obtenir ou de définir une liste des attributs de restriction appliqués pour l'analyse. Une liste vide, [], indique qu'aucun attribut de restriction n'est utilisé pour l'analyse. | String |
solverName (Lecture seule) | Renvoie le nom du solveur qui est référencé par la couche ArcGIS Network Analyst utilisée pour obtenir l'objet des propriétés du solveur. La propriété renvoie toujours la valeur de chaîne Solveur de tournée de véhicules lorsque l'accès se fait à partir d'un objet VehicleRoutingProblemSolverProperties. | String |
timeAttribute (Lecture/écriture) | Permet d'obtenir ou de définir l'attribut de coût de réseau basé sur le temps utilisé pour définir le temps de traversée des éléments du réseau. Cet attribut de coût est réduit au minimum par le solveur lorsqu'il recherche la solution. | String |
timeFieldUnits (Lecture/écriture) | Permet d'obtenir ou de définir l'unité de temps utilisée par les champs temporels des sous-couches et des tables de la couche d'analyse (classes d'analyse de réseau). L'unité n'a pas besoin d'être la même que celle de l'attribut de coût de réseau spécifiée en tant que valeur de propriété timeAttribute. Voici une liste des valeurs possibles :
| String |
timeWindowViolationImportance (Lecture/écriture) | Permet d'obtenir ou de définir l'importance du respect des fenêtres horaire sans entraîner de violations. Une infraction de fenêtre horaire se produit quand un itinéraire arrive à un ordre, un dépôt ou une borne après la fermeture d'une fenêtre horaire. La violation est le laps de temps écoulé entre la fin de la fenêtre horaire et l'heure d'arrivée d'une tournée. Voici une liste des valeurs possibles :
| String |
useHierarchy (Lecture/écriture) | Contrôle l'utilisation de l'attribut de hiérarchie lors de l'analyse. Voici une liste des valeurs possibles :
| String |
uTurns (Lecture/écriture) | Permet d'obtenir ou de définir la stratégie qui indique comment les demi-tours aux jonctions qui pourraient survenir pendant la traversée du réseau entre différents arrêts sont gérés par le solveur. Voici une liste des valeurs possibles :
| String |
Vue d'ensemble des méthodes
Méthode | Explication |
applyTravelMode (travel_mode) | Updates the analysis properties of a network analyst layer based on a travel mode object. The updated network analyst layer can then be solved to complete the analysis. |
Méthodes
applyTravelMode (travel_mode)
Paramètre | Explication | Type de données |
travel_mode | A variable that references a travel mode object derived from a network dataset. A list of travel mode objects can be obtained by calling the arcpy.na.GetTravelModes function. | Object |
When a network analyst layer is created, it is assigned default values for all of its analysis properties. The individual analysis properties can be updated using a solver properties object obtained from the network analyst layer. A travel mode stores a predefined set of analysis settings that help to perform a particular analysis, such as a walking time travel mode that stores the analysis settings required to perform a time-based walking analysis.
Using the applyTravelMode method, all the analysis settings that are defined in a travel mode can be applied at once. After the analysis properties are updated, the network analyst layer can be solved to complete the analysis.
If there is an error when updating the solver properties, such as when the provided travel mode references properties that don't exist on the current network dataset or references properties that are no longer applicable to the network dataset that was used to create the network analyst layer corresponding to the solver properties object, no exceptions are raised. The method will execute successfully, but you will get errors when you try to solve such a network analyst layer.
If the travel_mode parameter does not reference a travel mode object or a string, a TypeError exception is raised. If the travel_mode parameter references a string and the string cannot be internally converted to a valid string representation of a travel mode object, a ValueError exception is raised.
Exemple de code
VehicleRoutingProblemSolverProperties example 1
The script shows how to update the Distance Attribute, Default Date, U-Turns at Junctions, and Output Shape Type properties for an existing vehicle routing problem layer in the ArcMap table of contents. It assumes that a vehicle routing problem layer called Store Delivery Routes has been created in a new map document based on the tutorial network dataset of the San Francisco region.
#Get the vehicle routing problem layer object from a layer named
#"Store Delivery Routes" in the table of contents
vrpLayer = arcpy.mapping.Layer("Store Delivery Routes")
#Get the solver properties object from the vehicle routing problem layer
solverProps = arcpy.na.GetSolverProperties(vrpLayer)
#Update the properties for the vehicle routing problem layer using the
#solver properties object
solverProps.distanceAttribute = "Meters"
#Set the default date to be Monday
solverProps.defaultDate = datetime.date(1900,1,1)
solverProps.uTurns = "NO_UTURNS"
solverProps.outputPathShape = "STRAIGHT_LINES"
ApplyTravelMode example 2 (workflow)
This script shows how to find routes for a fleet of trucks using the Trucking Time travel mode.
#Import modules
import os
import arcpy
#Define variables
workspace = "C:/data/SanDiego.gdb"
output_folder = "C:/data/output"
nds = os.path.join(workspace, "Transportation", "Streets_ND")
orders = os.path.join(workspace, "Orders")
depots = os.path.join(workspace, "TruckDepots")
routes = os.path.join(workspace, "Drivers")
analysis_layer_name = "TruckRoutes"
#Set environment variables
arcpy.env.overwriteOutput = True
#Check out the network analyst extension
arcpy.CheckOutExtension("network")
#Create a new closest facility analysis layer
make_layer_result = arcpy.na.MakeVehicleRoutingProblemLayer(nds, analysis_layer_name,
"TravelTime")
analysis_layer = make_layer_result.getOutput(0)
#Add orders, depots and routes to the analysis layer using default field mappings
sub_layer_names = arcpy.na.GetNAClassNames(analysis_layer)
order_layer_name = sub_layer_names["Orders"]
depot_layer_name = sub_layer_names["Depots"]
route_layer_name = sub_layer_names["Routes"]
arcpy.na.AddLocations(analysis_layer, order_layer_name, orders, "#", "#")
arcpy.na.AddLocations(analysis_layer, depot_layer_name, depots, "#", "#")
arcpy.na.AddLocations(analysis_layer, route_layer_name, routes, "#", "#")
#Get the Trucking Time travel mode from the network dataset
travel_modes = arcpy.na.GetTravelModes(nds)
trucking_mode = travel_modes["Trucking Time"]
#Apply the travel mode to the analysis layer
solver_properties = arcpy.na.GetSolverProperties(analysis_layer)
solver_properties.applyTravelMode(trucking_mode)
#Solve the analysis layer skipping any invalid orders and save the result as a layer file
arcpy.na.Solve(analysis_layer, "SKIP")
output_layer = os.path.join(output_folder, analysis_layer_name + ".lyr")
arcpy.management.SaveToLayerFile(analysis_layer, output_layer, "RELATIVE")
arcpy.AddMessage("Completed")