Zusammenfassung
Fügt einem Netzwerkanalyse-Layer Eingabe-Features oder Datensätze hinzufügt. Die Eingaben werden bestimmten Sublayern, z. B. Stopps und Barrieren, hinzugefügt.
Verwendung
Dieses Werkzeug kann wiederholt ausgeführt werden, um Netzwerkanalyse-Objekte an den gleichen Sublayer anzufügen. Beispiel: Wenn die Stopps für einen Routen-Layer aus zwei Feature-Classes stammen, kann das Werkzeug zweimal aufgerufen werden. Verwenden Sie hierfür die Option APPEND.
Um die vorhandenen Netzwerkanalyse-Objekte vor dem Laden der neuen Objekte zu löschen, verwenden Sie die Option CLEAR.
Dieses Werkzeug wird erheblich schneller ausgeführt, wenn die im Netzwerk-Dataset als Netzwerkquellen verwendeten Feature-Classes über einen gültigen und aktuellen räumlichen Index verfügen.
Syntax
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})
Parameter | Erklärung | Datentyp |
in_network_analysis_layer | Der Netzwerkanalyse-Layer, dem die Netzwerkanalyse-Objekte hinzugefügt werden. | Network Analyst Layer |
sub_layer | Der Sublayer des Netzwerkanalyse-Layers, dem die Netzwerkanalyse-Objekte hinzugefügt werden. | String |
in_table | Die Feature-Class oder Tabelle, die die Quelle der neuen Netzwerkanalyse-Objekte darstellt. | Table View |
field_mappings (optional) | Die Werte für die Eigenschaften der Netzwerkanalyse-Objekte. Eigenschaften können über die Eingabe-Feature-Class oder -Tabelle auf eine Konstante eingestellt oder einem Feld zugeordnet werden. Zum Angeben des Parameterwertes wird ein NAClassFieldMappings-Objekt verwendet, das aus der NAClassFieldMappings-Class abgerufen wurde. Das NAClassFieldMappings-Objekt ist eine Sammlung von NAClassFieldMap-Objekten, die Sie in die Lage versetzt, die Standardwerte festzulegen oder einen Feldnamen aus den Eingabe-Features für die Eigenschaften des Netzwerkanalyse-Objekts zuzuordnen. Wenn die Daten, die Sie laden, Netzwerkstandorte oder Standortbereiche auf Grundlage des für die Analyse verwendeten Netzwerk-Datasets enthalten, müssen Sie die Netzwerkstandortfelder aus den Eingabe-Features den Netzwerkstandorteigenschaften zuordnen. Die Angabe der Netzwerkstandortfelder in den Feldzuordnungen entspricht der Verwendung des Parameters Netzwerkstandortfelder statt Geometrie verwenden aus dem Werkzeugdialogfeld. Vorsicht:Wenn Sie die Feldzuordnung für einzelne Netzwerkstandorteigenschaften angeben, müssen Sie auch die Feldzuordnungen für die verbleibenden Netzwerkstandorteigenschaften angeben, um Werkzeugausführungsfehler zu vermeiden. | Network Analyst Class FieldMap |
search_tolerance (optional) | Die Suchtoleranz, die zur Ermittlung der Eingabe-Features im Netzwerk verwendet werden soll. Features, die sich außerhalb der Suchtoleranz befinden, bleiben unverortet. Der Parameter umfasst einen Wert und die Einheiten für die Toleranz. Die Standardeinstellung ist 5,000 Meter. Der Parameter wird beim Hinzufügen von Standorten zu Sublayern mit Linien- oder Polygongeometrie wie Linien-Barrieren und Polygon-Barrieren nicht verwendet. | Linear Unit |
sort_field (optional) | Das Feld, in dem die Netzwerkanalyse-Objekte sortiert werden, wenn sie dem Netzwerkanalyse-Layer hinzugefügt werden. Standardmäßig ist es das Feld ObjectID in der Eingabe-Feature-Class oder der Tabelle. | Field |
search_criteria [[Source, SnapType],...] (optional) | Die Quellen im Netzwerk-Dataset, die beim Ermitteln der Standorte durchsucht werden sollen, und die Teile der Geometrie (auch als Fangtypen bezeichnet), die verwendet werden sollen. Der Parameterwert wird als Liste mit geschachtelten Listen angegeben. Die geschachtelte Liste besteht aus zwei Werten, die den Namen und den Fangtyp für jede Netzwerkquelle angeben. Der Fangtyp wird anhand der Schlüsselwörter SHAPE, MIDDLE, END oder NONE angegeben.
Um mehrere Fangtypen für eine einzelne Netzwerkquelle anzugeben, verwenden Sie eine Kombination der Fangtypen-Schlüsselwörter getrennt durch einen Unterstrich. MIDDLE_END gibt beispielsweise an, dass die Standorte in der Mitte oder am Ende der Netzwerkquelle gefangen werden können. Beim Hinzufügen von Netzwerkstandorten für Linien oder Polygone, wird auch bei Angabe anderer Fangtypen nur der Fangtyp SHAPE verwendet. Alle nicht in dieser Liste aufgeführten Netzwerkquellen verwenden den Standard-Fangtyp. Es ist am sichersten, alle Netzwerkquellen in der Liste einzuschließen und den Fangtyp jeweils explizit festzulegen. Der Standardwert für alle Netzwerkquellen lautet SHAPE. Hiervon ausgenommen sind Systemknoten, für die der Standardwert NONE lautet. | Value Table |
match_type (optional) | Gibt an, wie die Netzwerkstandorte abgeglichen werden.
Der Parameter wird beim Hinzufügen von Standorten zu Sublayern mit Linien- oder Polygongeometrie wie Linien-Barrieren und Polygon-Barrieren nicht verwendet. | Boolean |
append (optional) | Gibt an, ob neue Netzwerkanalyse-Objekte an vorhandene Objekte angehängt werden sollen.
| Boolean |
snap_to_position_along_network (optional) | Gibt an, ob die Netzwerkstandorte entlang des Netzwerk-Datasets oder mit einem gewählten Abstand vom Netzwerk-Dataset gefangen werden sollen.
Der Parameter wird beim Hinzufügen von Standorten zu Sublayern mit Linien- oder Polygongeometrie wie Linien-Barrieren und Polygon-Barrieren nicht verwendet. | Boolean |
snap_offset (optional) | Beim Fangen eines Punktes im Netzwerk kann ein Fangversatz festgelegt werden. Ein Fangversatz von 0 bedeutet, dass der Punkt lagegleich mit dem Netzwerk-Feature (üblicherweise eine Linie) gefangen wird. Wenn der Punkt nicht auf dem Netzwerk-Feature liegen soll, geben Sie einen Fangversatz ein. Der Versatz bezieht sich auf die ursprüngliche Punktposition. Wenn sich der ursprüngliche Punkt also auf der linken Seite befunden hat, ist die neue Position nach links versetzt. Wenn er sich ursprünglich auf der rechten Seite befunden hat, ist die neue Position nach rechts versetzt. Der Parameter wird beim Hinzufügen von Standorten zu Sublayern mit Linien- oder Polygongeometrie wie Linien-Barrieren und Polygon-Barrieren nicht verwendet. Die Standardeinstellung ist 5 Meter. Dieser Parameter wird jedoch ignoriert, wenn snap_to_position_along_network auf NO_SNAP festgelegt ist. | Linear Unit |
exclude_restricted_elements (optional) | Gibt an, ob eingeschränkte Netzwerkelemente ausgeschlossen werden.
| Boolean |
search_query [[Source, Expression],...] (optional) | Eine Abfrage, mit der die Suche auf eine Teilmenge der Features innerhalb einer Quell-Feature-Class beschränkt wird. Dies empfiehlt sich, wenn Sie Features ausschließen möchten, die für einen Netzwerkstandort ungeeignet sind. Wenn Sie zum Beispiel Schwerpunkte von Polygonen laden und diese nicht auf Ortsstraßen verorten möchten, können Sie eine Abfrage definieren, die nur nach Hauptstraßen sucht. Der Parameterwert wird als Liste mit geschachtelten Listen angegeben. Die geschachtelte Liste besteht aus zwei Werten, die den Namen und den SQL-Ausdruck für alle Netzwerkquellen angeben. Die Syntax für den SQL-Ausdruck hängt vom Typ der Quell-Feature-Class im Netzwerk ab. Wenn Sie beispielsweise Quell-Feature-Classes abfragen, die in File- oder Enterprise-Geodatabases oder in Shapefiles gespeichert sind, schließen Sie Feldnamen in doppelte Anführungszeichen ein: "CFCC". Wenn Sie keine Abfrage für eine bestimmte Quelle angeben möchten, verwenden Sie "#" als Wert für den SQL-Ausdruck, oder schließen Sie den Quellennamen und den SQL-Ausdruck aus dem Parameterwert aus. Wenn Sie nicht für alle Netzwerkquellen eine Abfrage angeben möchten, verwenden Sie "#" als Parameterwert. Der Parameterwert [["Streets","\"CFCC\" = 'A15'"], ["Streets_ND_Junctions",""]] gibt beispielsweise einen SQL-Ausdruck für die Quell-Feature-Class Streets und keinen Ausdruck für die Quell-Feature-Class Streets_ND_Junctions an. Beachten Sie, dass die doppelten Anführungszeichen, in die der Feldname CFCC eingeschlossen ist, mit umgekehrten Schrägstrichen als Escape-Zeichen versehen werden, um einen Analysefehler des Python-Interpreters zu vermeiden. Standardmäßig werden keine Abfragen verwendet. | Value Table |
Abgeleitete Ausgabe
Name | Erklärung | Datentyp |
output_layer | Der aktualisierte Netzwerkanalyse-Layer. | Network Analyst-Layer |
Codebeispiel
Ausführen des Werkzeugs, wenn nur die erforderlichen Parameter verwendet werden.
hospitals = "C:/Data/SanFrancisco.gdb/Analysis/Hospitals"
arcpy.na.AddLocations("Route", "Stops", hospitals, "", "")
Führen Sie das Werkzeug unter Verwendung aller Parameter aus.
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", ""]])
Mit dem folgenden eigenständigen Python-Skript wird veranschaulicht, wie das Werkzeug AddLocations verwendet werden kann, um von den Ladenstandorten aus das nächstgelegene Lager zu ermitteln.
# 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))
Umgebungen
Lizenzinformationen
- Basic: Ja
- Standard: Ja
- Advanced: Ja