Créer une couche emplacement-allocation (Network Analyst)
Récapitulatif
Crée une couche d'analyse de réseau emplacement-attribution et définit ses propriétés d'analyse. Une couche d'analyse d'emplacement-allocation est utile pour sélectionner un nombre donné de ressources dans un ensemble de localisations potentielles de manière qu'une demande soit allouée aux ressources de façon optimale et efficace.
Utilisation
Après avoir créé la couche d'analyse avec cet outil, vous pouvez y ajouter des objets d'analyse de réseau grâce à l'outil Ajouter des localisations, résoudre l'analyse à l'aide de l'outil Analyser et enregistrer les résultats sur le disque à l'aide de l'outil Enregistrer dans un fichier de couche.
Lors de l'utilisation de cet outil dans les modèles de géotraitement, si le modèle est exécuté en tant qu'outil, la couche d'analyse de réseau en sortie doit devenir un paramètre de modèle. Dans le cas contraire, la couche en sortie n'est pas ajoutée à la table des matières d'ArcMap.
Syntaxe
Paramètre | Explication | Type de données |
in_network_dataset |
Jeu d'entités réseau sur lequel l'analyse emplacement-allocation s'effectue. | Network Dataset Layer |
out_network_analysis_layer |
Nom de la couche d'analyse de réseau emplacement-allocation à créer. | String |
impedance_attribute |
L'attribut de coût à utiliser comme impédance dans l'analyse. | String |
loc_alloc_from_to (Facultatif) |
Précise la direction de déplacement entre ressources et points de demande lors du calcul des coûts du réseau.
Cette option peut affecter l'attribution des points de demande aux ressources d'un réseau avec des restrictions unilatérales et des impédances différentes selon la direction de déplacement. Par exemple, une ressource peut être située à 15 minutes de trajet en circulant du point de demande à la ressource, mais uniquement à 10 minutes en circulant en sens inverse. Les services des pompiers utilisent en général le paramètre Ressource vers la demande, car ils s'intéressent à la durée du trajet de la caserne de pompiers à l'emplacement de l'urgence. Un point de vente s'intéresse plus au temps nécessaire aux acheteurs pour atteindre le magasin ; par conséquent, les magasins utilisent en général l'option Demande vers la ressource. | String |
loc_alloc_problem_type (Facultatif) |
Type de problème à résoudre. Le choix du type de problème dépend du genre de ressource localisée. Différents genres de ressources ont des priorités et des contraintes différentes.
| String |
number_facilities_to_find (Facultatif) |
Spécifie le nombre des ressources que le solveur doit localiser. Les ressources présentant une propriété FacilityType de valeur Requis font toujours partie de la solution lorsque le nombre de ressources à rechercher est supérieur au nombre de ressources requises ; toutes les ressources à sélectionner supplémentaires sont choisies parmi les ressources candidates. Toute ressource ayant une propriété FacilityType de valeur Choix avant le calcul est traitée comme les ressources candidates lors de la recherche. La valeur du paramètre est prise en compte pour le type de problème MINIMIZE_FACILITIES, puisque le solveur détermine le nombre minimal de ressources à localiser pour optimiser la couverture. La valeur du paramètre est remplacée pour le type de problème TARGET_MARKET_SHARE, car le solveur recherche le nombre minimal de ressources requises pour capturer la part de marché spécifiée. | Long |
impedance_cutoff (Facultatif) |
La limite d'impédance spécifie l'impédance maximale à laquelle un point de demande peut être alloué à une ressource. L'impédance maximale est mesurée par le chemin de moindre coût le long du réseau. Si un point de demande est situé à l'extérieur de la limite, il reste non alloué. Cette propriété peut permettre de modéliser la distance maximale que les gens sont disposés à parcourir pour accéder à vos magasins ou la durée maximale autorisée pour un service des pompiers pour atteindre toute personne de la communauté. Les points de demande présentent une propriété Cutoff_[Impédance] qui, si elle est définie, remplace la propriété Limite d'impédance de la couche d'analyse. Vous pouvez par exemple déterminer que les habitants des zones rurales sont disposés à voyager jusqu'à 10 miles pour atteindre une ressource alors que les citadins sont uniquement disposés à voyager jusqu'à 2 miles. Vous pouvez modéliser ce comportement en définissant la valeur de limite d'impédance de la couche d'analyse sur 10 et en définissant la valeur Cutoff_Miles des points de demande sur 2 dans les zones urbaines. | Double |
impedance_transformation (Facultatif) |
Définit l'équation pour la transformation du coût du réseau entre les ressources et les points de demande. Cette propriété, associée avec le Paramètre d'impédance spécifie l'influence de l'impédance du réseau entre les ressources et les points de demande sur le choix de ressources du solveur.
Les points de demande disposent d'une propriété ImpedanceTransformation qui, si elle est définie, remplace la propriété Transformation d'impédance de la couche d'analyse. Vous pouvez déterminer une transformation d'impédance différente pour les résidents urbains et ruraux. Vous pouvez modéliser ceci en définissant la transformation d'impédance pour la couche d'analyse de manière à correspondre à celle des résidents ruraux et en définissant la transformation d'impédance pour les points de demande dans les zones urbaines de manière à correspondre à celle des citadins. | String |
impedance_parameter (Facultatif) |
Fournit une valeur de paramètre aux équations spécifiées dans le paramètre de transformation d'impédance. La valeur de paramètre est ignorée lorsque la transformation d'impédance est de type linéaire. Pour les transformations d'impédance de puissance et exponentielles, la valeur doit être non nulle. Les points de demande disposent d'une propriété ImpedanceParameter qui, si elle est définie, remplace la propriété Paramètre d'impédance de la couche d'analyse. Vous pouvez déterminer un paramètre d'impédance différent pour les résidents urbains et ruraux. Vous pouvez modéliser ceci en définissant la transformation d'impédance pour la couche d'analyse de manière à correspondre à celle des résidents ruraux et en définissant la transformation d'impédance pour les points de demande dans les zones urbaines de manière à correspondre à celle des citadins. | Double |
target_market_share (Facultatif) |
Spécifie la part de marché cible en pourcentage à résoudre lorsque le paramètre du type du problème d'emplacement-allocation a la valeur TARGET_MARKET_SHARE. Il s'agit du pourcentage de la pondération de demande totale à capturer par vos ressources de solution. Le solveur sélectionne le nombre minimal de ressources requis pour capturer la part de marché cible spécifiée par cette valeur numérique. | Double |
accumulate_attribute_name [accumulate_attribute_name,...] (Facultatif) |
Liste des attributs de coût à cumuler lors de l'analyse. Ces attributs de cumul sont destinés à servir à titre de référence uniquement ; le solveur utilise uniquement l'attribut de coût spécifié par le paramètre d'attribut Impédance de la couche d'analyse pour calculer l'itinéraire. For each cost attribute that is accumulated, a Total_[Impedance] property is added to the routes that are output by the solver. | String |
UTurn_policy (Facultatif) |
Restreint ou autorise les demi-tours aux jonctions qui pourraient survenir lors de la traversée du réseau entre des arrêts.
| String |
restriction_attribute_name [restriction_attribute_name,...] (Facultatif) |
Liste des attributs de restriction à appliquer lors de l'analyse. | String |
hierarchy (Facultatif) |
Le paramètre n'est pas utilisé si un attribut de hiérarchie n'est pas défini sur le jeu de données réseau utilisé pour l'analyse. Dans ces cas, utilisez "#" comme valeur de paramètre. | Boolean |
output_path_shape (Facultatif) |
| String |
Exemple de code
Exécute l'outil uniquement avec les paramètres requis
import arcpy arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/SanFrancisco.gdb" arcpy.MakeLocationAllocationLayer_na("Transportation/Streets_ND", "StoreLocations","Minutes")
Exécute l'outil avec tous les paramètres
import arcpy arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/SanFrancisco.gdb" arcpy.MakeLocationAllocationLayer_na("Transportation/Streets_ND","NewStores", "Minutes","DEMAND_TO_FACILITY", "MAXIMIZE_ATTENDANCE",3,5,"POWER",2,"", ["Minutes","Meters"],"ALLOW_UTURNS", ["Oneway"],"NO_HIERARCHY","STRAIGHT_LINES")
Le script Python autonome illustre l'utilisation de l'outil Créer une couche emplacement-attribution pour sélectionner les emplacements de magasin qui généreraient la plus grande activité pour une chaîne de magasins.
# Name: MakeLocationAllocationLayer_Workflow.py # Description: Choose the store locations that would generate the most business # for a retail chain. For this scenario we will perform the # location-allocation analysis using maximize attendance problem # type. # 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 = "NewStoreLocations" impedanceAttribute = "TravelTime" inFacilities = "Analysis/CandidateStores" inDemandPoints = "Analysis/TractCentroids" outLayerFile = "C:/data/output" + "/" + outNALayer + ".lyr" #Create a new location-allocation layer. In this case the demand travels to #the facility. We wish to find 3 potential store locations out of all the #candidate store locations using the maximize attendance model. arcpy.MakeLocationAllocationLayer_na(inNetworkDataset, outNALayer, impedanceAttribute,"DEMAND_TO_FACILITY", "MAXIMIZE_ATTENDANCE",3,5, "LINEAR") #Load the candidate store locations as facilities arcpy.AddLocations_na(outNALayer,"Facilities",inFacilities,"","") #Load the tract centroids as demand points arcpy.AddLocations_na(outNALayer,"Demand Points",inDemandPoints,"","") #Solve the location-allocation layer arcpy.Solve_na(outNALayer) #Save the solved location-allocation layer as a layer file on disk with #relative paths arcpy.SaveToLayerFile_management(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)