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. Si, par exemple, les arrêts d’une couche d’itinéraire proviennent de deux classes d’entités, l’outil peut être appelé deux fois grâce à l’option APPEND.
Pour supprimer les objets d’analyse de réseau existants avant d’en charger de nouveaux, utilisez l’option CLEAR.
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.
Syntaxe
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 | Sous-couche de la couche d'analyse de réseau auquel les objets d'analyse de réseau seront ajoutés. | String |
in_table | Classe d’entités ou table qui sera la source des nouveaux objets d’analyse de réseau. | Table View |
field_mappings (Facultatif) | Valeurs des propriétés des objets d’analyse du réseau. Les propriétés peuvent être définies sur une constante ou mappées à un champ de la table ou de la classe d'entités en entrée. Un objet NAClassFieldMappings obtenu auprès 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 du réseau dans les mappages de champs est similaire à l'utilisation du paramètre Utiliser les champs de localisation du réseau au lieu de la géométrie à partir de la boîte de dialogue de l'outil. 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. | 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 sur 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 de localisations et parties de la géométrie (types de capture) qui seront utilisées. La valeur de paramètre est spécifiée sous forme de liste avec des listes imbriquées. La liste imbriquée se compose de deux valeurs indiquant le nom et le type de capture de chaque source de données du réseau. Le type de capture est spécifié à l'aide du mot-clé SHAPE, MIDDLE, END ou NONE.
Pour spécifier plusieurs types de capture pour une seule source de données du réseau, utilisez la combinaison des mots-clés de type de capture séparée par un trait de soulignement. Par exemple, MIDDLE_END indique que les localisations peuvent être capturées au milieu ou à la fin de la source de données du réseau. Lorsque vous ajoutez des localisations réseau de type ligne ou polygone, seul le type de capture SHAPE est utilisé même si d'autres types de capture sont spécifiés. 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 plus sûr 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. La valeur par défaut est SHAPE pour toutes les sources de réseau, à l’exception des jonctions système dont la valeur par défaut est NONE. | 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. | 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) | Spécifie si les localisations de réseau seront capturées le long du jeu de données réseau ou à un décalage spécifié du jeu de données 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. | 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. | Linear Unit |
exclude_restricted_elements (Facultatif) | Détermine si des éléments de réseau restreints sont à exclure.
| Boolean |
search_query [[Source, Expression],...] (Facultatif) | 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 voulez exclure des entités ne convenant pas à une localisation de réseau. Par exemple, si vous chargez des centroïdes de polygones et ne souhaitez pas localiser sur les routes secondaires, vous pouvez définir une requête qui recherche des routes principales uniquement. La valeur de paramètre est spécifiée sous forme de liste avec des listes imbriquées. La liste imbriquée se compose de deux valeurs indiquant le nom et l’expression SQL de toutes les sources de réseau. La syntaxe de l'expression SQL diffère légèrement en fonction du type de la classe d'entités de la source de données du réseau. Par exemple, lorsque vous interrogez des classes d’entités source stockées dans des géodatabases fichier ou d’entreprise ou encore des shapefiles, placez le nom des champs entre guillemets doubles : "CFCC". Si vous ne souhaitez pas spécifier de requête pour une source en particulier, utilisez "#" comme valeur pour l'expression SQL ou excluez le nom de la source et l'expression SQL de la valeur de paramètre. Si vous ne souhaitez pas spécifier de requête pour aucune des sources de données du réseau, utilisez "#" comme valeur de paramètre. Par exemple, la valeur de paramètre [["Streets","\"CFCC\" = 'A15'"], ["Streets_ND_Junctions",""]] spécifie une expression SQL pour la classe d’entités source Streets et aucune expression pour la classe d’entités source Streets_ND_Junctions. Notez que les guillemets doubles qui entourent le nom de champ CFCC sont désactivés à l’aide d’une barre oblique inverse afin d’éviter toute erreur d’analyse de la part de l’interpréteur Python. Par défaut, aucune requête n’est utilisée. | 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.
# 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 = layer_object.listLayers(origins_layer_name)[0]
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 ?