Résumé
Crée une couche d'analyse de réseau des ressources les plus proches et définit ses propriétés d'analyse. Une couche d'analyse de la ressource la plus proche est utile pour déterminer la ou les ressources les plus proches d'un incident en fonction d'un mode de déplacement spécifique. La couche peut être créée à l'aide d'un jeu de données réseau local ou d'un service hébergé en ligne ou sur un portail.
Utilisation
Après avoir créé la couche d'analyse avec cet outil, vous pouvez ajouter des objets d'analyse de réseau à l'aide de l'outil Ajouter des localisations, résoudre l'analyse à l'aide de l'outil Calculer et enregistrer les résultats sur le disque à l'aide de l'outil Enregistrer dans un fichier de couche.
Lorsque vous utilisez cet outil dans des 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 être convertie en paramètre de modèle. Dans le cas contraire, la couche en sortie n'est pas ajoutée au contenu de la carte.
Dans ArcGIS Pro, les données des couches d’analyse de réseau sont stockées sur disque dans des classes d’entités de géodatabase fichier. Lorsque vous créez une couche d’analyse de réseau dans un projet, les données de cette couche sont créées dans un nouveau jeu de classes d’entités dans l’environnement Espace de travail courant. Lorsque vous créez une couche d’analyse de réseau dans un script Python, vous devez commencer par définir de façon explicite l’environnement de l’espace de travail sur une géodatabase fichier dans laquelle vous voulez stocker les données de la couche à l’aide de arcpy.env.workspace = "<path to file gdb>". Lorsque la couche est créée, un nouveau jeu de données d'entité contenant les classes d'entités de sous-couche appropriées est ajouté à cette géodatabase fichier.
Syntaxe
MakeClosestFacilityAnalysisLayer(network_data_source, {layer_name}, {travel_mode}, {travel_direction}, {cutoff}, {number_of_facilities_to_find}, {time_of_day}, {time_zone}, {time_of_day_usage}, {line_shape}, {accumulate_attributes}, {generate_directions_on_solve})
Paramètre | Explication | Type de données |
network_data_source | Jeu de données réseau ou service sur lequel l'analyse du réseau est effectuée. Utilisez l'URL du portail pour un service. | Network Dataset Layer;String |
layer_name (Facultatif) | Nom de la couche d’analyse de réseau à créer. | String |
travel_mode (Facultatif) | Nom du mode de déplacement à utiliser dans l’analyse. Le mode de déplacement représente une collection de paramètres réseau, tels que des restrictions de circulation et des règles de demi-tour, qui détermine la façon dont un piéton, une voiture, un camion ou un autre mode de transport se déplace sur le réseau. Les modes de déplacement sont définis dans votre source de données de réseau. Vous pouvez aussi utiliser un objet arcpy.na.TravelMode et une chaîne contenant la représentation JSON valide d’un mode de déplacement en entrée du paramètre. | String |
travel_direction (Facultatif) | Spécifie la direction de déplacement entre des ressources et des incidents.
La direction du déplacement peut influencer les ressources trouvées si le réseau contient des rues à sens unique ou des impédances reposant sur la direction de déplacement. Par exemple, le trajet entre un incident donné et une ressource spécifique peut être de 10 minutes, tout en étant de 15 minutes dans l'autre sens, de la ressource à l'incident, en raison de rues à sens unique ou de conditions de circulation différentes. | String |
cutoff (Facultatif) | Valeur d'impédance à laquelle la recherche de ressources est arrêtée pour un incident donné, dans les unités de l'attribut d'impédance utilisé par le travel_mode choisi. Cette limite peut être remplacée incident par incident par la spécification de valeurs de limites individuelles dans la sous-couche des incidents lorsque le travel_direction='TO_FACILITIES' ou ressource par ressource par la spécification de valeurs de limites individuelles dans la sous-couche des ressources lorsque le travel_direction='FROM_FACILITIES'Par défaut, aucune limite n'est utilisée pour l'analyse. | Double |
number_of_facilities_to_find (Facultatif) | Nombre de ressources les plus proches à rechercher par incident. Vous pouvez remplacer cette valeur par défaut en spécifiant une valeur individuelle pour la propriété TargetFacilityCount dans la sous-couche des incidents. Le nombre par défaut de ressources à trouver est de un. | Long |
time_of_day (Facultatif) | Spécifie l'heure et la date auxquelles les itinéraires doivent commencer ou se terminer. L'interprétation de cette valeur varie selon que le paramètre time_of_day_usage est défini sur l'heure de début ou l'heure de fin de l'itinéraire. Si vous avez choisi un attribut d'impédance basé sur la circulation, l'analyse est effectuée selon des conditions de circulation dynamiques correspondant à l'heure du jour spécifiée ici. Une date et une heure peuvent être spécifiées sous la forme 5/14/2012 10:30 AM. Au lieu d'utiliser une date particulière, un jour de la semaine peut être spécifié à l'aide des dates suivantes :
| Date |
time_zone (Facultatif) | Spécifie le fuseau horaire du paramètre time_of_day.
| String |
time_of_day_usage (Facultatif) | Indique si la valeur du paramètre time_of_day représente l'heure d'arrivée ou l'heure de départ du ou des itinéraires.
| String |
line_shape (Facultatif) | Indique le type de forme pour les entités itinéraires générées par l'analyse. Indépendamment du type de forme en sortie choisi, le meilleur itinéraire est toujours déterminé par l'impédance du réseau, jamais par la distance euclidienne. Cela signifie que seules les formes d'itinéraire sont différentes, pas le parcours du réseau sous-jacent.
| String |
accumulate_attributes [accumulate_attributes,...] (Facultatif) | Liste des attributs de coût à cumuler lors de l’analyse. Ces attributs accumulés servent uniquement de référence. Le solveur utilise uniquement l’attribut de coût utilisé par le mode de déplacement désigné pour la réalisation de l’analyse. Pour chaque attribut de coût accumulé, une propriété Total_[Impédance] est renseignée dans les entités en sortie de l’analyse du réseau. Ce paramètre n’est pas disponible si la source de données réseau est un service ArcGIS Online ou si la source de données réseau est un service hébergé sur une version de Portal for ArcGIS qui ne prend pas en charge l’accumulation. | String |
generate_directions_on_solve (Facultatif) | Spécifie si une feuille de route sera générée lors de l’exécution de l’analyse.
Dans le cas d’une analyse pour laquelle la création d’une feuille de route détaillée n’est pas nécessaire, utiliser l’option NO_DIRECTIONS par défaut permet de gagner beaucoup de temps. | Boolean |
Sortie dérivée
Nom | Explication | Type de données |
out_network_analysis_layer | Couche d’analyse de réseau nouvellement créée. | Couche Network Analyst |
Exemple de code
Exécute l'outil uniquement avec les paramètres requis.
network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeClosestFacilityAnalysisLayer(network, "ClosestFireStations")
Exécutez l'outil avec tous les paramètres.
network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeClosestFacilityAnalysisLayer(network, "ClosestHospitals",
"Driving Time", "TO_FACILITIES", 5, 3,
"1/1/1900 9:00 AM", "UTC", "START_TIME",
"ALONG_NETWORK", ["Meters", "TravelTime"])
Le script Python autonome suivant illustre l'utilisation de l'outil MakeClosestFacilityAnalysisLayer pour trouver l'entrepôt le plus proche des emplacements de points de vente.
# Name: MakeClosestFacilityAnalysisLayer_Workflow.py
# Description: Find the closest warehouse from the store locations and save the
# results to a layer file on disk.
# Requirements: Network Analyst Extension
#Import system modules
import arcpy
from arcpy import env
import os
try:
#Check out Network Analyst license if available. Fail if the Network Analyst license is not available.
if arcpy.CheckExtension("network") == "Available":
arcpy.CheckOutExtension("network")
else:
raise arcpy.ExecuteError("Network Analyst Extension license is not available.")
#Set environment settings
output_dir = "C:/Data"
#The NA layer's data will be saved to the workspace specified here
env.workspace = os.path.join(output_dir, "Output.gdb")
env.overwriteOutput = True
#Set local variables
input_gdb = "C:/Data/Paris.gdb"
network = os.path.join(input_gdb, "Transportation", "ParisMultimodal_ND")
layer_name = "ClosestWarehouse"
travel_mode = "Driving Time"
facilities = os.path.join(input_gdb, "Analysis", "Warehouses")
incidents = os.path.join(input_gdb, "Analysis", "Stores")
output_layer_file = os.path.join(output_dir, layer_name + ".lyrx")
#Create a new closest facility analysis layer.
result_object = arcpy.na.MakeClosestFacilityAnalysisLayer(network,
layer_name, travel_mode, "TO_FACILITIES",
number_of_facilities_to_find=1)
#Get the layer object from the result object. The closest facility layer can
#now be referenced using the layer object.
layer_object = result_object.getOutput(0)
#Get the names of all the sublayers within the closest facility layer.
sublayer_names = arcpy.na.GetNAClassNames(layer_object)
#Stores the layer names that we will use later
facilities_layer_name = sublayer_names["Facilities"]
incidents_layer_name = sublayer_names["Incidents"]
#Load the warehouses as Facilities using the default field mappings and
#search tolerance
arcpy.na.AddLocations(layer_object, facilities_layer_name,
facilities, "", "")
#Load the stores as Incidents. Map the Name property from the NOM field
#using field mappings
field_mappings = arcpy.na.NAClassFieldMappings(layer_object,
incidents_layer_name)
field_mappings["Name"].mappedFieldName = "NOM"
arcpy.na.AddLocations(layer_object, incidents_layer_name, incidents,
field_mappings, "")
#Solve the closest facility layer
arcpy.na.Solve(layer_object)
#Save the solved closest facility layer as a layer file on disk
layer_object.saveACopy(output_layer_file)
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 occurred on line %i" % tb.tb_lineno)
print(str(e))
Environnements
Informations de licence
- Basic: Oui
- Standard: Oui
- Advanced: Oui
Vous avez un commentaire à formuler concernant cette rubrique ?