Standorte hinzufügen (Network Analyst)

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.

Weitere Informationen zur Suche nach Analyseeingaben im Netzwerk mithilfe des Werkzeugs Standorte hinzufügen

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, das heißt, für jede Feature-Class einmal. Aktivieren Sie beim zweiten Mal den Parameter Anhängen (append = "APPEND" in Python).

  • Um die vorhandenen Netzwerkanalyse-Objekte vor dem Laden der neuen Objekte zu löschen, deaktivieren Sie den Parameter Anhängen (append = "CLEAR" in Python).

  • Beim Verorten von Eingaben werden der Reisemodus des Netzwerkanalyse-Layers und vorhandene Barrieren berücksichtigt. Daher empfiehlt es sich, vor dem Laden anderer Analyseeingaben den Reisemodus für die Analyse festzulegen und Barrieren zu laden.

  • 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.

  • Wenn der Analyse-Layer einen Portal-Service referenziert, werden die Standortfelder erst beim Berechnen der Analyse berechnet. Für diese Layer fügt das Werkzeug Standorte hinzufügen die Eingaben dem Analyse-Layer ohne Berechnung der Standortfelder hinzu. Demzufolge gelten einige Werkzeugparameter für diese Layer nicht und werden im Dialogfeld des Werkzeugs ausgeblendet bzw. in Python ignoriert.

Syntax

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})
ParameterErklärungDatentyp
in_network_analysis_layer

Der Netzwerkanalyse-Layer, dem die Netzwerkanalyse-Objekte hinzugefügt werden.

Network Analyst Layer
sub_layer

Der Name des Sublayers des Netzwerkanalyse-Layers, dem die Netzwerkanalyse-Objekte hinzugefügt werden.

String
in_table

Die Feature-Class oder Tabelle, die die Positionen, die dem Netzwerkanalyse-Layer hinzugefügt werden sollen, enthält.

Table View
field_mappings
(optional)

Die Zuordnung zwischen den Eingabefeldern des Netzwerkanalyse-Sublayers, dem Sie Positionen hinzufügen, und den Feldern in Ihren Eingabedaten oder angegebenen Konstanten.

Eingabe-Sublayer des Netzwerkanalyse-Layers weisen eine Reihe von Eingabefeldern auf, die Sie ändern oder je nach Analyseanforderungen ausfüllen können. Wenn Sie Positionen zum Sublayer hinzufügen, können Sie mithilfe dieses Parameters diesen Feldern im Sublayer Feldwerte aus der Eingabetabelle zuordnen. Daneben können Sie den einzelnen Eigenschaften anhand von Feldzuordnungen auch konstante Standardwerte zuweisen.

Wenn weder der Feld- noch der Standardwert für eine Eigenschaft angegeben werden, enthalten die resultierenden Netzwerkanalyse-Objekte NULL-Werte für diese Eigenschaft.

Eine vollständige Liste der Eingabefelder für jeden Sublayer aller Netzwerkanalyse-Layer finden Sie in der Dokumentation zu den einzelnen Layern. Sie können zum Beispiel die Eingabefelder des Sublayers "Stopps" des Routen-Layers untersuchen.

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 der Option Netzwerkstandortfelder verwenden aus dem Werkzeugdialogfeld.

Weitere Informationen zu Netzwerkstandortfeldern

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.

Dieser Parameter wird nicht verwendet, wenn die Netzwerkdatenquelle des Eingabe-Netzwerkanalyse-Layers ein Portal-Service ist.

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 dies 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 Netzwerkstandorte durchsucht werden sollen, und die Teile der Geometrie (auch als Fangtypen bezeichnet), die verwendet werden sollen. Wenn das Netzwerk-Dataset beispielsweise separate Feature-Classes referenziert, die Straßen und Gehwege darstellen, können Sie die Eingaben auf Straßen, aber nicht auf Gehwegen verorten.

Im Folgenden werden die verfügbaren Auswahlmöglichkeiten an Fang-Typen für die einzelnen Netzwerkquellen aufgeführt:

  • SHAPE: Der Punkt befindet sich am nächsten Punkt eines Elements in dieser Netzwerkquelle.
  • MIDDLE: Der Punkt befindet sich am nächsten Mittelpunkt eines Elements in dieser Netzwerkquelle.
  • END: Der Punkt befindet sich am nächsten Endpunkt eines Elements in dieser Netzwerkquelle.
  • NONE: Der Punkt befindet sich nicht an Elementen in dieser Netzwerkquelle.

Die Optionen MIDDLE und END wurden aus Gründen der Abwärtskompatibilität beibehalten. Verwenden Sie die Option SHAPE, wenn Sie Ihre Eingaben in einer bestimmten Netzwerkquelle verorten möchten; verwenden Sie andernfalls NONE.

Beim Berechnen von Standorten für Linien- oder Polygon-Features wird auch bei Angabe anderer Fangtypen nur der Fangtyp SHAPE verwendet.

Der Standardwert für alle Netzwerkquellen lautet SHAPE; eine Ausnahme bilden Knoten vom Typ "Override", die durch Ausführung des Werkzeugs Netzelemente reduzieren ausgeführt wurden, und Systemknoten, deren Standardwert NONE lautet.

Dieser Parameter wird nicht verwendet, wenn die Netzwerkdatenquelle ein Portal-Service ist.

Der Parameterwert wird als Liste mit geschachtelten Listen angegeben. Die geschachtelten Listen bestehen aus zwei Werten, die den Namen und Fangtyp jeder Netzwerkquelle angeben. Der Parameterwert [["Streets","SHAPE"],["Streets_ND_Junctions","NONE"]] gibt zum Beispiel an, dass die Suche auf dem Shape der Quelle Streets und nicht auf der Quelle Streets_ND_Junctions verortet werden kann.

Alle Netzwerkquellen, die nicht in dieser Liste aufgeführt sind, verwenden den Standard-Fangtyp. Es wird empfohlen, dass Sie alle Netzwerkquellen in der Liste einschließen und den Fangtyp jeweils explizit festlegen.

Für Geodatabase-Netzwerk-Datasets können die Fangtypen für jeden Subtype der Netzwerkquelle festgelegt werden. Wenn die Netzwerkquelle beispielsweise Streets heißt und diese über den Subtype Local Streets verfügt, geben Sie mithilfe von ["Streets : Local Streets", "SHAPE"] den Fang-Typ für Wohnstraßen an.

Value Table
match_type
(optional)

Gibt an, wie die Netzwerkstandorte abgeglichen werden.

  • MATCH_TO_CLOSESTDie neuen Netzwerkstandorte werden mit der nächstgelegenen Netzwerkquelle unter allen Quellen abgeglichen, für die ein Fangtyp in den Suchkriterien festgelegt wurde. Dies ist die Standardeinstellung.
  • PRIORITYDie neuen Netzwerkstandorte werden mit der ersten Netzwerkquelle abgeglichen, für die ein Fangtyp in den Suchkriterien festgelegt wurde. Die Quellen werden in der Reihenfolge ihrer Priorität gesucht. Die Suche wird beendet, wenn die Position innerhalb der Suchtoleranz gefunden wurde.

Der Parameter wird beim Hinzufügen von Standorten zu Sublayern mit Linien- oder Polygongeometrie wie Linien-Barrieren und Polygon-Barrieren nicht verwendet.

Dieser Parameter wird nicht verwendet, wenn die Netzwerkdatenquelle des Eingabe-Netzwerkanalyse-Layers ein Portal-Service ist.

Boolean
append
(optional)

Gibt an, ob neue Netzwerkanalyse-Objekte an vorhandene Objekte angehängt werden sollen.

  • APPENDDie neuen Netzwerkanalyse-Objekte werden an die bestehenden Objekte im ausgewählten Sublayer angehängt. Dies ist die Standardeinstellung.
  • CLEARDie vorhandenen Netzwerkanalyse-Objekte werden gelöscht und durch die neuen Objekte ersetzt.
Boolean
snap_to_position_along_network
(optional)

Gibt an, ob die Eingaben an ihren berechneten Netzwerkstandorten gefangen oder an ihrer ursprünglichen geographischen Position dargestellt werden.

Wenn Sie mit "CurbApproach" in Ihrer Analyse steuern möchten, welche Straßenseite ein Fahrzeug benutzen muss, um sich einer Position zu nähern, dann dürfen Sie die Eingaben nicht an ihren Netzwerkstandorten fangen oder müssen einen Fangversatz verwenden, um sicherzustellen, dass der Punkt klar und deutlich auf einer Straßenseite bleibt.

Der Parameter wird beim Hinzufügen von Standorten zu Sublayern mit Linien- oder Polygongeometrie wie Linien-Barrieren und Polygon-Barrieren nicht verwendet.

Dieser Parameter wird nicht verwendet, wenn die Netzwerkdatenquelle des Eingabe-Netzwerkanalyse-Layers ein Portal-Service ist.

Hinweis:

Wenn Sie nach dem Hinzufügen von Positionen den Reisemodus des Netzwerkanalyse-Layers ändern oder Barrieren hinzufügen oder entfernen, werden die Netzwerkstandorte der betroffenen Punkte automatisch zum Zeitpunkt der Berechnung neu ermittelt, um deren Gültigkeit sicherzustellen. Bei dieser automatischen Neuberechnung werden keine Einstellungen berücksichtigt, wie zum Beispiel Suchabfragen, die zuvor beim Berechnen der Netzwerkstandorte verwendet wurden. Stattdessen werden nur die Geometrie des Eingabe-Features und der Reisemodus und Barrieren des Netzwerkanalyse-Layers verwendet. Um die Wahrscheinlichkeit dafür zu erhöhen, dass dieselben Netzwerkstandorte ausgewählt werden, wenn die Netzwerkstandorte des Punktes automatisch neu berechnet werden, verwenden Sie diesen Parameter, damit die Eingaben an den beim Ausführen dieses Werkzeugs berechneten Netzwerkstandorten gefangen werden. Auf diese Art wird der gewünschte Netzwerkstandort in der Geometrie des Eingabepunktes beibehalten.

  • NO_SNAP Die Geometrien der Netzwerkstandorte basieren auf den Geometrien der Eingabe-Features. Dies ist die Standardeinstellung.
  • SNAPDie Geometrien der Netzwerkstandorte werden an ihren Netzwerkstandorten gefangen.
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.

Der Parameter wird beim Hinzufügen von Standorten zu Sublayern mit Linien- oder Polygongeometrie wie Linien-Barrieren und Polygon-Barrieren nicht verwendet.

Dieser Parameter wird nicht verwendet, wenn die Netzwerkdatenquelle des Eingabe-Netzwerkanalyse-Layers ein Portal-Service ist.

Linear Unit
exclude_restricted_elements
(optional)

Gibt an, ob eingeschränkte Netzwerkelemente ausgeschlossen werden.

  • EXCLUDEDie Netzwerkstandorte werden nur auf passierbaren Teilen des Netzwerks platziert. Dies verhindert, dass Netzwerkstandorte auf Elementen platziert werden, die Sie aufgrund von Beschränkungen oder Barrieren nicht erreichen können. Stellen Sie vor dem Hinzufügen der Netzwerkstandorte mithilfe dieser Option sicher, dass Sie alle Einschränkungsbarrieren zum Eingabe-Netzwerkanalyse-Layer hinzugefügt haben, um die gewünschten Ergebnisse zu erhalten. Beim Hinzufügen von Barrierenobjekten ist dieser Parameter nicht anwendbar. Verwenden Sie in solchen Fällen "#" als Parameterwert. Dies ist die Standardeinstellung.
  • INCLUDEDie Netzwerkstandorte werden auf allen Elementen des Netzwerks platziert. Die Netzwerkstandorte, die mit diesem Parameter hinzugefügt werden, sind – wenn sie auf eingeschränkten Elementen platziert werden – möglicherweise während des Berechnungsprozesses nicht erreichbar.

Dieser Parameter wird nicht verwendet, wenn die Netzwerkdatenquelle des Eingabe-Netzwerkanalyse-Layers ein Portal-Service ist.

Boolean
search_query
[[Source, Expression],...]
(optional)

Definiert eine Abfrage, mit der die Suche auf eine Teilmenge der Features innerhalb einer Quell-Feature-Class beschränkt wird. Dies ist hilfreich, wenn Sie keine Features suchen möchten, die für Ihre Analyse ungeeignet sein könnten Sie können in der Abfrage zum Beispiel alle Features mit einer bestimmten Straßenklasse ausschließen.

Für jede Quell-Feature-Class des Netzwerk-Datasets können Sie einen separaten SQL-Ausdruck festlegen. Standardmäßig wird für keine Quelle eine Abfrage verwendet.

Dieser Parameter wird nicht verwendet, wenn die Netzwerkdatenquelle ein Portal-Service ist.

Der Parameterwert wird als Liste geschachtelter Listen angegeben. Die geschachtelten Listen bestehen aus zwei Werten, die den Namen und den SQL-Ausdruck für alle Netzwerkquellen angeben. Weitere Informationen zur SQL-Syntax finden Sie unter SQL-Referenz für in ArcGIS verwendete Abfrageausdrücke.

Auf Netzwerkquellen, die nicht in dieser Liste enthalten sind, wird keine Abfrage angewendet. Ein als leere Zeichenfolge angegebener Ausdruck wird ebenfalls nicht als Abfrage interpretiert.

Der Parameterwert [["Streets", "\"CFCC\" = 'A15'"], ["Streets_ND_Junctions", ""]] gibt beispielsweise für die Quell-Feature-Class Streets eine Abfrage an, die nur Eingaben auf Straßen sucht, deren Feld CFCC den Wert A15 enthält. Auf die Quell-Feature-Class Streets_ND_Junctions wird keine Abfrage angewendet.

Value Table

Abgeleitete Ausgabe

NameErklärungDatentyp
output_layer

Der aktualisierte Netzwerkanalyse-Layer.

Network Analyst-Layer

Codebeispiel

AddLocations – Beispiel 1 (Python-Fenster)

Ausführen des Werkzeugs, wenn nur die erforderlichen Parameter verwendet werden.

hospitals = "C:/Data/SanFrancisco.gdb/Analysis/Hospitals"
arcpy.na.AddLocations("Route", "Stops", hospitals, "", "")
AddLocations – Beispiel 2 (Python-Fenster)

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", ""]])
AddLocations Beispiel 3 (Workflow)

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.

Ältere Versionen:

Mit der Funktion GetNASublayer kann nach den Sublayern eines Netzwerkanalyse-Layers gesucht werden. Sie wurde in ArcGIS Pro 2.7 eingeführt. In älteren Softwareversionen bestand die beste Möglichkeit, ein Sublayer-Objekt eines Netzwerkanalyse-Layers abzurufen, in der Verwendung der listLayers-Methode des Layer-Objekts der Netzwerkanalyse mit dem Namen des Sublayers als Platzhalter.

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

Lizenzinformationen

  • Basic: Ja
  • Standard: Ja
  • Advanced: Ja

Verwandte Themen