Générer une couche d’analyse des ressources les plus proches (Network Analyst)

Synthèse

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 AllSource, 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.

Paramètres

ÉtiquetteExplicationType de données
Source de données réseau

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
Nom de la couche
(Facultatif)

Nom de la couche d’analyse de réseau à créer.

String
Mode de déplacement
(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
Sens de déplacement
(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.

  • En direction des ressourcesLe sens de déplacement va des incidents aux ressources. Les points de vente de détail utilisent couramment ce paramètre, car ils s'intéressent au temps nécessaire aux acheteurs (incidents) pour atteindre le magasin (ressource). Il s’agit de l’option par défaut.
  • En s'éloignant des ressourcesLe sens de déplacement va des ressources aux incidents. Les services des pompiers utilisent généralement ce paramètre, car ils s'intéressent à la durée du trajet entre la caserne (ressource) et le site d'intervention (incident).
String
Limite
(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 la valeur Mode de déplacement. 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 paramètre Sens de déplacement est défini sur En direction des ressources, ou ressource par ressource par la spécification de valeurs de limites individuelles dans la sous-couche des ressources lorsque le paramètre Sens de déplacement est défini sur En s’éloignant des ressources. Par défaut, aucune limite n'est utilisée pour l'analyse.

Double
Nombre de ressources à rechercher
(Facultatif)

Nombre de ressources les plus proches à rechercher par incident. Cette valeur par défaut peut être remplacée par la spécification d’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
Heure du jour
(Facultatif)

Heure et date auxquelles les itinéraires commenceront ou se termineront. L'interprétation de cette valeur varie selon que le paramètre Utilisation de l'heure du jour est défini sur l'heure de début ou l'heure de fin de l'itinéraire.

Si vous choisissez 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.

Configurez votre analyse pour utiliser une des dates spéciales suivantes pour modéliser un jour de la semaine ou la date actuelle au lieu d’une date statique spécifique :

  • Aujourd’hui - 12/30/1899
  • Dimanche - 12/31/1899
  • Lundi - 1/1/1900
  • Mardi - 1/2/1900
  • Mercredi - 1/3/1900
  • Jeudi - 1/4/1900
  • Vendredi - 1/5/1900
  • Samedi - 1/6/1900

En savoir plus sur l’utilisation des dates et des heures et sur leur interprétation dans une analyse de réseau

Date
Fuseau horaire
(Facultatif)

Fuseau horaire du paramètre Time of Day (Heure du jour).

  • Heure locale des emplacementsLe paramètre Heure du jour se rapporte au fuseau horaire dans lequel se trouvent les ressources ou les incidents. Il s’agit de l’option par défaut.
    • Si le paramètre Utilisation de l’heure du jour est défini sur Heure de début et Sens de déplacement sur En s’éloignant des ressources, il s’agit du fuseau horaire des ressources.
    • Si le paramètre Utilisation de l’heure du jour est défini sur Heure de début et Sens de déplacement sur En direction des ressources, il s’agit du fuseau horaire des incidents.
    • Si le paramètre Utilisation de l’heure du jour est défini sur Heure de fin et Sens de déplacement sur En s’éloignant des ressources, il s’agit du fuseau horaire des incidents.
    • Si le paramètre Utilisation de l’heure du jour est défini sur Heure de fin et Sens de déplacement sur En direction des ressources, il s’agit du fuseau horaire des ressources.
  • UTCLe paramètre Time of Day (Heure du jour) est exprimé en UTC (Temps Universel Coordonné). Choisissez cette option si vous souhaitez rechercher la ressource la plus proche, à une heure donnée (maintenant, par exemple), sans toutefois connaître avec certitude le fuseau horaire dans lequel se trouvent les ressources ou pendant lequel se sont produits les incidents.
String
Utilisation de l'heure du jour
(Facultatif)

Indique si la valeur du paramètre Heure du jour représente l’heure de départ ou l’heure d’arrivée de l’itinéraire ou des itinéraires.

  • Heure de débutLa valeur du paramètre Heure du jour est interprétée comme heure de départ à partir de la ressource ou de l’incident. Il s’agit de l’option par défaut.Lorsque ce paramètre est choisi, le paramètre Heure du jour indique que le solveur trouvera le meilleur itinéraire en fonction d’une heure de départ donnée.
  • Heure de finLa valeur du paramètre Heure du jour est interprétée comme heure d’arrivée à la ressource ou à l’incident.Cette option est utile si vous souhaitez savoir à quelle heure partir d’un emplacement afin d’arriver à destination au moment spécifié dans le paramètre Heure du jour.
String
Forme linéaire
(Facultatif)

Indique le type de forme qui sera utilisé pour les entités itinéraires générées par l’analyse.

Quel que soit le type de forme en sortie spécifié, 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.

  • Le long du réseauLes itinéraires en sortie ont la forme exacte des sources de données du réseau sous-jacentes. La sortie comprend des mesures d’itinéraire pour le référencement linéaire. Les mesures augmentent à partir du premier arrêt et enregistrent l'impédance cumulée pour atteindre une position donnée.
  • Aucune ligneAucune forme n’est créée pour les itinéraires en sortie.
  • Lignes droitesLa forme d'itinéraire en sortie est une ligne droite unique entre les arrêts.
String
Attributs d'accumulation
(Facultatif)

Liste des attributs de coût à cumuler lors de l’analyse. Ces attributs accumulés servent uniquement de référence. Le solveur n’utilise que 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
Générer des feuilles de route lors du calcul
(Facultatif)

Indique si des feuilles de route sont générées.

  • Activé : une feuille de route détaillée sera générée lors de la résolution.
  • Désactivé : aucune feuille de route détaillée ne sera générée lors de la résolution. Il s’agit de l’option par défaut.

Dans le cas d’une analyse pour laquelle la création d’une feuille de route détaillée n’est pas nécessaire, laisser cette option désactivée permet de gagner du temps.

Boolean
Ignorer les localisations non valides lors de l’analyse
(Facultatif)

Détermine si les emplacements en entrée non valides sont ignorés. En règle générale, les emplacements ne sont pas valides si ils ne peuvent pas être localisés sur le réseau. Lorsque les emplacements non valides sont ignorés, le solveur les ignore et tente de réaliser l’analyse avec les emplacements restants.

  • Activé : les emplacements en entrée non valides sont ignorés et seuls les emplacements valides sont utilisés. Il s’agit de l’option par défaut.
  • Activé : tous les emplacements en entrée sont utilisés. Les localisations non valides provoquent l’échec de l’analyse.
Boolean

Sortie obtenue

ÉtiquetteExplicationType de données
Couche Network Analyst

La couche d’analyse de réseau nouvellement créée.

Network Analyst Layer

arcpy.management.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}, {ignore_invalid_locations})
NomExplicationType 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.

  • TO_FACILITIESLe sens de déplacement va des incidents aux ressources. Les points de vente de détail utilisent couramment ce paramètre, car ils s'intéressent au temps nécessaire aux acheteurs (incidents) pour atteindre le magasin (ressource). Il s’agit de l’option par défaut.
  • FROM_FACILITIESLe sens de déplacement va des ressources aux incidents. Les services des pompiers utilisent généralement ce paramètre, car ils s'intéressent à la durée du trajet entre la caserne (ressource) et le site d'intervention (incident).

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 la valeur travel_mode. 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 travel_direction = 'TO_FACILITIES' ou ressource par ressource par la spécification de valeurs de limites individuelles dans la sous-couche des ressources lorsque 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. Cette valeur par défaut peut être remplacée par la spécification d’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)

Heure et date auxquelles les itinéraires commenceront ou se termineront. 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 choisissez 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.

Configurez votre analyse pour utiliser une des dates spéciales suivantes pour modéliser un jour de la semaine ou la date actuelle au lieu d’une date statique spécifique :

  • Aujourd’hui - 12/30/1899
  • Dimanche - 12/31/1899
  • Lundi - 1/1/1900
  • Mardi - 1/2/1900
  • Mercredi - 1/3/1900
  • Jeudi - 1/4/1900
  • Vendredi - 1/5/1900
  • Samedi - 1/6/1900

En savoir plus sur l’utilisation des dates et des heures et sur leur interprétation dans une analyse de réseau

Date
time_zone
(Facultatif)

Spécifie le fuseau horaire du paramètre time_of_day.

  • LOCAL_TIME_AT_LOCATIONSLe paramètre time_of_day se rapporte au fuseau horaire dans lequel se situent les ressources ou les incidents. Il s’agit de l’option par défaut.
    • Si time_of_day_usage est défini sur START_TIME et travel_direction sur FROM_FACILITIES, il s’agit du fuseau horaire des ressources.
    • Si time_of_day_usage est défini sur START_TIME et travel_direction sur TO_FACILITIES, il s’agit du fuseau horaire des incidents.
    • Si time_of_day_usage est défini sur END_TIME et travel_direction sur FROM_FACILITIES, il s’agit du fuseau horaire des incidents.
    • Si time_of_day_usage est défini sur END_TIME et travel_direction sur TO_FACILITIES, il s’agit du fuseau horaire des ressources.
  • UTCLe paramètre time_of_day est exprimé en temps universel coordonné (UTC). Choisissez cette option si vous souhaitez rechercher la ressource la plus proche, à une heure donnée (maintenant, par exemple), sans toutefois connaître avec certitude le fuseau horaire dans lequel se trouvent les ressources ou pendant lequel se sont produits les incidents.
String
time_of_day_usage
(Facultatif)

Indique si la valeur du paramètre time_of_day représente l’heure de départ ou l’heure d'arrivée de l’itinéraire ou des itinéraires.

  • START_TIMELa valeur du paramètre time_of_day est interprétée comme heure de départ à partir de la ressource ou de l’incident. Il s’agit de l’option par défaut.Lorsque ce paramètre est choisi, le paramètre time_of_day indique que le solveur trouvera le meilleur itinéraire en fonction d’une heure de départ donnée.
  • END_TIMELa valeur du paramètre time_of_day est interprétée comme heure d’arrivée à la ressource ou à l’incident.Cette option est utile si vous souhaitez savoir à quelle heure partir d’un emplacement afin d’arriver à destination au moment spécifié dans le paramètre time_of_day.
String
line_shape
(Facultatif)

Indique le type de forme qui sera utilisé pour les entités itinéraires générées par l’analyse.

Quel que soit le type de forme en sortie spécifié, 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.

  • ALONG_NETWORKLes itinéraires en sortie ont la forme exacte des sources de données du réseau sous-jacentes. La sortie comprend des mesures d’itinéraire pour le référencement linéaire. Les mesures augmentent à partir du premier arrêt et enregistrent l'impédance cumulée pour atteindre une position donnée.
  • NO_LINESAucune forme n’est créée pour les itinéraires en sortie.
  • STRAIGHT_LINESLa forme d'itinéraire en sortie est une ligne droite unique entre les arrêts.
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 n’utilise que 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.

  • DIRECTIONSUne feuille de route détaillée sera générée lors de la résolution.
  • NO_DIRECTIONSAucune feuille de route détaillée ne sera générée lors de la résolution. Il s’agit de l’option par défaut.

Dans le cas d’une analyse pour laquelle la création d’une feuille de route détaillée n’est pas nécessaire, l’utilisation de l’option NO_DIRECTIONS par défaut permet de gagner du temps.

Boolean
ignore_invalid_locations
(Facultatif)

Détermine si les emplacements en entrée non valides sont ignorés. En règle générale, les emplacements ne sont pas valides si ils ne peuvent pas être localisés sur le réseau. Lorsque les emplacements non valides sont ignorés, le solveur les ignore et tente de réaliser l’analyse avec les emplacements restants.

  • SKIPLes emplacements en entrée non valides sont ignorés et seuls les emplacements valides sont utilisés. Il s’agit de l’option par défaut.
  • HALTTous les emplacements en entrée sont utilisés. Les localisations non valides provoquent l’échec de l’analyse.
Boolean

Sortie obtenue

NomExplicationType de données
out_network_analysis_layer

La couche d’analyse de réseau nouvellement créée.

Network Analyst Layer

Exemple de code

Exemple 1 d'utilisation de l'outil Générer une couche d'analyse des ressources les plus proches (fenêtre Python)

Exécute l’outil uniquement avec les paramètres requis.

network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeClosestFacilityAnalysisLayer(network, "ClosestFireStations")
Exemple 2 d’utilisation de l’outil Générer une couche d’analyse des ressources les plus proches (fenêtre Python)

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"])
Exemple 3 d'utilisation de l'outil MakeClosestFacilityAnalysisLayer (script autonome)

Le script Python autonome suivant montre comment il est possible d’utiliser la fonction MakeClosestFacilityAnalysisLayer pour trouver l’entrepôt le plus proche des points de vente implantés.

# 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))