Résumé
Ajoute des enregistrements ou entités en entrée à une couche d’analyse de réseau. Les entrées sont ajoutées à des sous-couches spécifiques telles que Arrêts et Interruptions.
Utilisation
Cet outil peut être exécuté à plusieurs reprises pour ajouter des objets d'analyse de réseau à la même sous-couche. Par exemple, si les arrêts d’une couche d’itinéraire proviennent de deux classes d’entités, l’outil peut être appelé deux fois, une par classe d’entités. La deuxième fois, activez le paramètre Append (Ajouter) (append = "APPEND" dans Python).
Pour supprimer les objets d’analyse de réseau existants avant d’en charger de nouveaux, désactivez le paramètre Append (Ajouter) (append = "CLEAR" dans Python).
Lors de la localisation des entrées, le mode de déplacement de la couche d’analyse de réseau et les interruptions existantes sont pris en compte. Il est par conséquent recommandé de définir le mode de déplacement pour l’analyse et de charger les interruptions avant de charger les autres entrées de l’analyse.
Cet outil s'exécute beaucoup plus rapidement si les classes d'entités utilisées en tant que sources de données du réseau dans le jeu de données réseau ont un index spatial valide et à jour.
Si la couche d’analyse référence un service de portail, les champs de localisation ne sont pas calculés avant l’analyse. Pour ces couches, l’outil Ajouter des localisations ajoute les entrées à la couche d’analyse sans calculer les champs de localisation. Par conséquent, certains paramètres de l’outil ne s’appliquent pas à ces couches et sont masqués dans la boîte de dialogue de l’outil, ou ignorés dans Python.
Syntaxe
arcpy.na.AddLocations(in_network_analysis_layer, sub_layer, in_table, {field_mappings}, {search_tolerance}, {sort_field}, {search_criteria}, {match_type}, {append}, {snap_to_position_along_network}, {snap_offset}, {exclude_restricted_elements}, {search_query})
Paramètre | Explication | Type de données |
in_network_analysis_layer | La couche d'analyse de réseau à laquelle les objets d'analyse de réseau seront ajoutés. | Network Analyst Layer |
sub_layer | Nom de la sous-couche de la couche d’analyse de réseau à laquelle les objets d’analyse de réseau seront ajoutés. | String |
in_table | Classes d’entités ou table contenant les localisations à ajouter à la sous-couche d’analyse de réseau. | Table View |
field_mappings (Facultatif) | L’appariement entre les champs en entrée de la sous-couche d’analyse de réseau à laquelle vous ajoutez des emplacements et les champs dans vos données en entrée ou les constantes spécifiées. Les sous-couches en entrée des couches d’analyse de réseau comportent un ensemble de champs en entrée que vous pouvez modifier ou renseigner en fonction des besoins de votre analyse. Lorsque vous ajoutez des emplacements à la sous-couche, vous pouvez utiliser ce paramètre pour apparier les valeurs de champ de votre table en entrée à ces champs dans la sous-couche. Vous pouvez également utiliser des appariements de champs afin de spécifier une valeur par défaut constante pour chaque propriété. Si les valeurs Field (Champ) et Default (Par défaut) ne sont pas spécifiées pour une propriété, les objets d’analyse de réseau obtenus ont des valeurs nulles pour cette propriété. Une liste complète de champs en entrée pour chaque sous-couche pour chaque type de couche d’analyse de réseau est disponible dans la documentation de chaque couche. Par exemple, examinez les champs en entrée de la sous-couche Arrêts de la couche Route. Un objet NAClassFieldMappings issu de la classe NAClassFieldMappings permet de spécifier la valeur de paramètre. L’objet NAClassFieldMappings est une collection d’objets NAClassFieldMap qui permet de spécifier les valeurs par défaut ou d’apparier un nom de champ issu des entités en entrée pour les propriétés de l’objet d’analyse de réseau. Si les données que vous chargez contiennent des localisations de réseau ou des plages de localisation basées sur le jeu de données réseau utilisé pour l'analyse, mappez les champs de localisation du réseau de vos entités en entrée aux propriétés de localisation de réseau. La spécification des champs de localisation de réseau dans les appariements de champs est similaire à l’utilisation de l’option Use Network Location Fields (Utiliser les champs de localisation du réseau) dans la boîte de dialogue de l’outil. Pour en savoir plus sur les champs de localisation réseau Attention :Si vous spécifiez l’appariement de champ pour l’une des propriétés de localisation de réseau, vous devez spécifier les appariements de champs pour les propriétés de localisation de réseau restantes afin d’éviter une erreur d’exécution d’un outil. | Network Analyst Class FieldMap |
search_tolerance (Facultatif) | Tolérance de recherche utilisée pour la localisation des entités en entrée appartenant au réseau. Les entités qui se trouvent hors de la tolérance de recherche ne sont pas localisées. Le paramètre comprend une valeur et des unités de tolérance. La valeur par défaut est 5000 mètres. Le paramètre n’est pas utilisé lors de l’ajout d’emplacements aux sous-couches avec une géométrie de type ligne ou polygone, comme les interruptions linéaires et les interruptions polygonales. Ce paramètre n’est pas utilisé lorsque la source de données de réseau de la couche d’analyse de réseau en entrée est un service de portail. | Linear Unit |
sort_field (Facultatif) | Le champ dans lequel les objets d'analyse de réseau sont triés lorsqu'ils sont ajoutés à la couche d'analyse de réseau. La valeur par défaut est le champ ObjectID de la classe d’entités ou la table en entrée. | Field |
search_criteria [[Source, SnapType],...] (Facultatif) | Sources du jeu de données réseau qui feront partie de la recherche lors du calcul de localisations de réseau et parties de la géométrie (types de capture) qui seront utilisées. Par exemple, si le jeu de données réseau référence des classes d’entités distinctes représentant des rues et des trottoirs, vous pouvez choisir de localiser les entrées sur les rues mais pas sur les trottoirs. Les choix de type de capture disponibles pour chaque source de réseau sont les suivants :
Les options MIDDLE et END sont conservées en vue de la rétrocompatibilité. Utilisez l’option SHAPE pour localiser vos entrées sur une source de réseau spécifique ; sinon, utilisez l’option NONE. Lorsque vous calculez des localisations pour des entités linéaires ou surfaciques, seul le type de capture SHAPE est utilisé même si d'autres types de capture sont spécifiés. La valeur par défaut est SHAPE pour toutes les sources de réseau, sauf les jonctions de débrayage créées en exécutant l’outil Réseau de fusion et les jonctions de système, qui possèdent la valeur par défaut NONE. Ce paramètre n’est pas utilisé si la source de données du réseau est un service de portail. La valeur de paramètre est spécifiée sous forme de liste avec des listes imbriquées. Les listes imbriquées se composent de deux valeurs indiquant le nom et le type de capture de chaque source de données du réseau. Par exemple, la valeur de paramètre [["Streets","SHAPE"],["Streets_ND_Junctions","NONE"]] spécifie que la recherche peut porter sur la forme de la source Streets, mais non sur la source Streets_ND_Junctions. Les sources de données du réseau qui ne sont pas incluses dans cette liste utiliseront ce type de capture par défaut. Il est recommandé d’inclure toutes les sources de données du réseau dans votre liste et de définir explicitement le type de capture de chacune. Pour les jeux de données réseau de géodatabase, les types de capture peuvent être spécifiés pour chaque sous-type de la source de données du réseau. Par exemple, si le réseau possède une source nommée Streets et que cette source possède un sous-type nommé Local Streets, spécifiez le type de capture des rues locales avec l’option ["Streets : Local Streets", "SHAPE"]. | Value Table |
match_type (Facultatif) | Indique le mode d’appariement des localisations de réseau.
Le paramètre n’est pas utilisé lors de l’ajout d’emplacements aux sous-couches avec une géométrie de type ligne ou polygone, comme les interruptions linéaires et les interruptions polygonales. Ce paramètre n’est pas utilisé lorsque la source de données de réseau de la couche d’analyse de réseau en entrée est un service de portail. | Boolean |
append (Facultatif) | Spécifie si les nouveaux objets d’analyse de réseau seront ajoutés aux objets existants.
| Boolean |
snap_to_position_along_network (Facultatif) | Indique si les entrées seront capturées sur leurs localisations de réseau calculées ou représentées à leur localisation géographique d’origine. Pour utiliser l’approche du trottoir dans votre analyse afin de contrôler le côté de la route qu’un véhicule doit utiliser pour s’approcher d’une localisation, ne capturez pas les entrées sur leurs localisations de réseau, ou utilisez un décalage de capture pour garantir que le point reste clairement d’un côté de la route. Le paramètre n’est pas utilisé lors de l’ajout d’emplacements aux sous-couches avec une géométrie de type ligne ou polygone, comme les interruptions linéaires et les interruptions polygonales. Ce paramètre n’est pas utilisé lorsque la source de données de réseau de la couche d’analyse de réseau en entrée est un service de portail. Remarque :Si, après avoir ajouté des localisations, vous modifiez le mode de déplacement de la couche d’analyse de réseau, ou si vous ajoutez ou retirez des interruptions, les localisations de réseau des points affectés sont automatiquement recalculées lors du processus de calcul, ce qui garantit leur validité. Ce processus de recalcul automatique ne tient pas compte des paramètres, tels que les requêtes de recherche, utilisés précédemment lors du calcul des localisations de réseau. Il n’utilise que la géométrie de l’entité en entrée, ainsi que le mode de déplacement et les interruptions de la couche d’analyse de réseau. Pour augmenter la probabilité que les mêmes localisations de réseau soient choisies en cas de recalcul automatique des localisations de réseau du point, utilisez ce paramètre pour capturer les entrées sur les localisations de réseau calculées lors de l’exécution de cet outil. Ainsi, la localisation de réseau voulue sera conservée dans la géométrie du point en entrée.
| Boolean |
snap_offset (Facultatif) | Lors de la capture d'un point sur le réseau, vous avez la possibilité d'appliquer une valeur de décalage. Une valeur de décalage de zéro indique que le point sera coïncident avec l'entité de réseau (généralement une ligne). Pour décaler le point à partir de l'entité de réseau, entrez une valeur de décalage. Le décalage est relatif à l'emplacement du point d'origine ; autrement dit, si le point d'origine se trouvait du côté gauche, son nouvel emplacement sera décalé vers la gauche. De même, s'il se trouvait du côté droit, il sera décalé vers la droite. Le paramètre n’est pas utilisé lors de l’ajout d’emplacements aux sous-couches avec une géométrie de type ligne ou polygone, comme les interruptions linéaires et les interruptions polygonales. La valeur par défaut est 5 mètres. Ce paramètre est toutefois ignoré sauf si le paramètre snap_to_position_along_network est défini sur NO_SNAP. Le paramètre n’est pas utilisé lors de l’ajout d’emplacements aux sous-couches avec une géométrie de type ligne ou polygone, comme les interruptions linéaires et les interruptions polygonales. Ce paramètre n’est pas utilisé lorsque la source de données de réseau de la couche d’analyse de réseau en entrée est un service de portail. | Linear Unit |
exclude_restricted_elements (Facultatif) | Détermine si des éléments de réseau restreints sont à exclure.
Ce paramètre n’est pas utilisé lorsque la source de données de réseau de la couche d’analyse de réseau en entrée est un service de portail. | Boolean |
search_query [[Source, Expression],...] (Facultatif) | Définit une requête visant à restreindre la recherche à un sous-ensemble d’entités dans une classe d’entités source. Ceci s’avère utile si vous ne voulez pas trouver d’entités pouvant ne pas convenir à votre analyse. Par exemple, vous pouvez utiliser la requête pour exclure toutes les entités avec une classe routière particulière. Une expression SQL distincte peut être spécifiée par classe d’entités source du jeu de données réseau. Par défaut, aucune requête n’est utilisée pour une source. Ce paramètre n’est pas utilisé si la source de données du réseau est un service de portail. La valeur de paramètre est spécifiée sous forme de liste de listes imbriquées. Les listes imbriquées se composent de deux valeurs indiquant le nom et l’expression SQL de toutes les sources de réseau. Pour plus d'informations sur la syntaxe SQL, reportez-vous à la rubrique Référence SQL pour les expressions de requête utilisées dans ArcGIS. Aucune requête ne sera appliquée à une source de réseau non incluse dans cette liste. De même, une expression spécifiée comme chaîne vide sera également interprétée comme ne faisant pas l’objet d’une requête. Par exemple, la valeur de paramètre [["Streets", "\"CFCC\" = 'A15'"], ["Streets_ND_Junctions", ""]] spécifie une requête pour la classe d’entités source Streets afin de localiser uniquement les entrées sur les rues où le champ CFCC possède la valeur A15. Aucune requête n’est appliquée à la classe d’entités source Streets_ND_Junctions. | Value Table |
Sortie dérivée
Nom | Explication | Type de données |
output_layer | Couche d’analyse de réseau mise à jour. | Couche Network Analyst |
Exemple de code
Exécute l'outil uniquement avec les paramètres requis.
hospitals = "C:/Data/SanFrancisco.gdb/Analysis/Hospitals"
arcpy.na.AddLocations("Route", "Stops", hospitals, "", "")
Exécutez l'outil avec tous les paramètres.
hospitals = "C:/Data/SanFrancisco.gdb/Analysis/Hospitals"
arcpy.na.AddLocations("Route", "Stops", hospitals,
"Name Name #;Attr_Minutes VisitTime 0;CurbApproach # 0",
"2 Miles", "FID",
[["Streets", "SHAPE"], ["Streets_ND_Junctions", "NONE"]],
"MATCH_TO_CLOSEST", "CLEAR", "SNAP", "10 Feet", "EXCLUDE",
[["Streets", '"FREEWAY" = 0'],
["Streets_ND_Junctions", ""]])
Le script Python autonome suivant illustre comment utiliser l'outil AddLocations pour charger les origines et les destinations dans une couche de matrice de coût OD.
Héritage :
La fonction GetNASublayer peut être utilisée pour extraire les sous-couches d’une couche d’analyse de réseau. Elle a été introduite dans ArcGIS Pro 2.7. Dans les versions précédentes, la meilleure manière d’extraire un objet de sous-couche d’une couche d’analyse de réseau consistait à utiliser la méthode listLayers de l’objet Layer d’analyse de réseau en utilisant le nom de la sous-couche en tant que caractère générique.
# Name: AddLocations_Workflow.py
# Description: Calculate a travel time matrix between stores. Use the Add
# Locations tool to load origins and destinations into an OD Cost
# Matrix layer. Since the origins and destinations are the same in
# this case, the origins are first loaded from the stores feature
# class using geometry, and the destinations are loaded from the
# origins using network location fields in order to speed up the
# load times.
# 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 inputs and outputs
input_gdb = "C:/Data/SanFrancisco.gdb"
network = os.path.join(input_gdb, "Transportation", "Streets_ND")
layer_name = "StoreTravelTimeMatrix"
travel_mode = "Driving Time"
stores = os.path.join(input_gdb, "Analysis", "Stores")
search_tolerance = "500 Meters"
search_query = [["Streets", '"FREEWAY" = 0'], ["Streets_ND_Junctions", ""]]
output_layer_file = os.path.join(output_dir, layer_name + ".lyrx")
# Create a new OD cost matrix analysis layer. For this scenario, the default
# value for all the remaining parameters statisfies the analysis requirements
result_object = arcpy.na.MakeODCostMatrixAnalysisLayer(network, layer_name,
travel_mode)
# Get the layer object from the result object. The OD cost matrix layer can
# now be referenced using the layer object.
layer_object = result_object.getOutput(0)
# Get the names of all the sublayers within the OD layer.
sublayer_names = arcpy.na.GetNAClassNames(layer_object)
# Store the layer names for later use
origins_layer_name = sublayer_names["Origins"]
destinations_layer_name = sublayer_names["Destinations"]
# Load store features as origins using the geometry of store features.
# Ensure that the stores are not located on freeways by using a search query.
arcpy.na.AddLocations(layer_object, origins_layer_name, stores, "",
search_tolerance,
exclude_restricted_elements="EXCLUDE",
search_query=search_query)
# Because we want our origins and destinations to be the same, load the
# origins as destinations using the network locations fields. Loading using
# existing network location fields is much faster than loading using geometry
# because the network locations have already been calculated.
# Create a field mappings object that supports network location fields using
# the candidate fields from origins
origins_sublayer = arcpy.na.GetNASublayer(layer_object, "Origins")
candidate_fields = arcpy.ListFields(origins_sublayer)
field_mappings = arcpy.na.NAClassFieldMappings(layer_object,
destinations_layer_name, True,
candidate_fields)
arcpy.na.AddLocations(layer_object, destinations_layer_name,
origins_sublayer, field_mappings, "")
# Solve the od cost matrix layer. Halt the execution if there is an
# invalid location
arcpy.na.Solve(layer_object, "HALT")
# Save the solved OD cost matrix 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
Rubriques connexes
Vous avez un commentaire à formuler concernant cette rubrique ?