Location-Allocation-Analyse-Layer erstellen (Network Analyst)

Zusammenfassung

Erstellt einen Location-Allocation-Netzwerkanalyse-Layer und legt seine Analyse-Eigenschaften fest. Ein Location-Allocation-Analyse-Layer ist nützlich, wenn Sie eine definierte Anzahl an Einrichtungen aus einem Satz potenzieller Standorte auswählen, so dass den Einrichtungen auf optimale und effiziente Weise ein Bedarf zugeordnet wird. Der Layer kann mit einem lokalen Netzwerk-Dataset oder mit einem online oder in einem Portal gehosteten Service erstellt werden.

Verwendung

  • Nachdem Sie den Analyse-Layer mit diesem Werkzeug erstellt haben, können Sie ihm Netzwerkanalyse-Objekte mithilfe des Werkzeugs Standorte hinzufügen hinzufügen, die Analyse mit dem Werkzeug Berechnen berechnen und die Ergebnisse mit dem Werkzeug In Layer-Datei speichern auf der Festplatte speichern.

  • Bei Verwendung dieses Werkzeugs in Geoverarbeitungsmodellen muss der Ausgabe-Netzwerkanalyse-Layer in einen Modellparameter geändert werden, wenn das Modell als Werkzeug ausgeführt wird. Andernfalls wird der Ausgabe-Layer dem Inhalt der Karte nicht hinzugefügt.

  • In ArcGIS Pro werden die Daten von Netzwerkanalyse-Layern in File-Geodatabase-Feature-Classes auf der Festplatte gespeichert. Bei der Erstellung eines Netzwerk-Analyse-Layers in einem Projekt werden die Daten des Layers in einem neuen Feature-Dataset in der Umgebung Aktueller Workspace erstellt. Bei der Erstellung eines Netzwerkanalyse-Layers in einem Python-Skript müssen Sie zunächst mit arcpy.env.workspace = "<path to file gdb>" explizit eine File-Geodatabase, in der die Layer-Daten gespeichert werden sollen, als Workspace-Umgebung festlegen. Bei der Erstellung des Layers wird dieser File-Geodatabase ein neues Feature-Dataset mit den entsprechenden Sublayer-Feature-Classes hinzugefügt.

Syntax

arcpy.na.MakeLocationAllocationAnalysisLayer(network_data_source, {layer_name}, {travel_mode}, {travel_direction}, {problem_type}, {cutoff}, {number_of_facilities_to_find}, {decay_function_type}, {decay_function_parameter_value}, {target_market_share}, {capacity}, {time_of_day}, {time_zone}, {line_shape}, {accumulate_attributes})
ParameterErklärungDatentyp
network_data_source

Das Netzwerk-Dataset oder der Service, für das bzw. den die Netzwerkanalyse ausgeführt wird. Verwenden Sie die Portal-URL für einen Service.

Network Dataset Layer;String
layer_name
(optional)

Der Name des zu erstellenden Netzwerkanalyse-Layers.

String
travel_mode
(optional)

Der Name des Reisemodus, der in der Analyse verwendet werden soll. Der Reisemodus stellt eine Sammlung von Netzwerkeinstellungen (z. B. Reisebeschränkungen und Wendenregeln) dar, mit denen festgelegt wird, wie ein Fußgänger, Auto, Lkw oder anderes Transportmittel sich durch das Netzwerk bewegt. Reisemodi werden für die Netzwerkdatenquelle definiert.

Ein arcpy.na.TravelMode-Objekt und eine Zeichenfolge mit der gültigen JSON-Repräsentation eines Reisemodus können ebenfalls als Eingabe für den Parameter verwendet werden.

String
travel_direction
(optional)

Gibt beim Berechnen der Netzwerkkosten die Fahrtrichtung zwischen Einrichtungen und Bedarfspunkten an.

  • FROM_FACILITIESDie Fahrtrichtung erfolgt von den Einrichtungen zu den Bedarfspunkten. Dies ist die Standardeinstellung. Feuerwehren verwenden im Allgemeinen diese Einstellung, da es hier darauf ankommt, wie lange es dauert, von der Feuerwache zum Einsatzort zu fahren.
  • TO_FACILITIESDie Fahrtrichtung erfolgt von den Bedarfspunkten zu den Einrichtungen. Einzelhandelsgeschäfte verwenden im Allgemeinen diese Einstellung, da es hier darauf ankommt, wie lange die Käufer brauchen, um den Laden zu erreichen.

Die Verwendung dieser Option kann sich in einem Netzwerk mit Beschränkungen für Einbahnstraßen und unterschiedlichen Impedanzen basierend auf der Fahrtrichtung auf die Zuordnung der Bedarfspunkte zu den Einrichtungen auswirken. Zum Beispiel kann die Fahrtzeit vom Bedarfspunkt zur Einrichtung 15 Minuten betragen, die Fahrt in der entgegengesetzten Richtung möglicherweise jedoch nur 10 Minuten.

String
problem_type
(optional)

Der Problemtyp, der berechnet wird. Die Auswahl des Problemtyps hängt von der Art der gesuchten Einrichtung ab. Die Einrichtungen weisen je nach Art unterschiedliche Prioritäten und Einschränkungen auf.

  • MINIMIZE_IMPEDANCEMit dieser Option wird das Warehouse-Location-Problem gelöst. Es werden die Einrichtungen ausgewählt, die die Gesamtsumme der gewichteten Impedanzen (der der Einrichtung zugewiesene Bedarf multipliziert mit der Impedanz der Einrichtung) minimieren. Dieser Problemtyp wird häufig als P-Medianwert-Problem bezeichnet. Dies ist der Standardproblemtyp.
  • MAXIMIZE_COVERAGEMit dieser Option wird das Standortproblem von Feuerwachen gelöst. Einrichtungen werden so ausgewählt, dass der gesamte oder der größte Teil des Bedarfs innerhalb bestimmter Impedanzgrenzwerte liegt.
  • MAXIMIZE_CAPACITATED_COVERAGEMit dieser Option wird das Standortproblem gelöst, bei dem Einrichtungen eine endliche Kapazität haben. Einrichtungen werden so gewählt, dass der gesamte Bedarf oder die größte Bedarfsmenge bereitgestellt werden kann, ohne dass die Kapazität der einzelnen Einrichtungen überschritten wird. Neben der Berücksichtigung der Kapazität, werden die Einrichtungen so ausgewählt, dass die Gesamtsumme der gewichteten Impedanz (der Einrichtung zugeordneter Bedarf multipliziert mit der Impedanz zur oder von der Einrichtung) minimiert wird.
  • MINIMIZE_FACILITIESMit dieser Option wird das Standortproblem von Feuerwachen gelöst. Es wird die geringste Anzahl von Einrichtungen ausgewählt, mit denen der gesamte oder der größte Teil des Bedarfs innerhalb bestimmter Impedanzgrenzwerte gedeckt wird.
  • MAXIMIZE_ATTENDANCEMit dieser Option werden Standortprobleme gelöst, bei denen der Anteil des der nächstgelegenen Einrichtung zugeordneten Bedarfs mit steigender Entfernung fällt (Erreichbarkeit). Es wird die Gruppe von Einrichtungen ausgewählt, die den insgesamt zugeordneten Bedarf maximiert. Bedarf, der über den angegebenen Impedanzgrenzwert hinausgeht, beeinflusst die Gruppe der ausgewählten Einrichtungen nicht.
  • MAXIMIZE_MARKET_SHAREMit dieser Option wird das Standortproblem von Mitbewerbereinrichtungen gelöst. Es werden Einrichtungen ausgewählt, die den Marktanteil bei Vorhandensein von Mitbewerbereinrichtungen maximieren. Konzepte von Schwerkraftmodellen werden verwendet, um den Anteil des Bedarfs zu bestimmen, der jeder Einrichtung zugewiesen wird. Es wird die Gruppe von Einrichtungen ausgewählt, die den gesamten zugeordneten Bedarf maximiert.
  • TARGET_MARKET_SHAREMit dieser Option wird das Standortproblem von Mitbewerbereinrichtungen gelöst. Es werden Einrichtungen ausgewählt, mit denen der angegebene Zielmarktanteil bei Vorhandensein von Mitbewerbereinrichtungen erreicht wird. Konzepte von Schwerkraftmodellen werden verwendet, um den Anteil des Bedarfs zu bestimmen, der jeder Einrichtung zugewiesen wird. Es wird die minimale Anzahl von Einrichtungen ausgewählt, mit der ein angegebener Zielmarktanteil erreicht wird.
String
cutoff
(optional)

Die maximale Impedanz, bei der einer Einrichtung ein Bedarfspunkt zugeordnet werden kann, in den Einheiten des Impedanzattributs, das vom ausgewählten Reisemodus verwendet wird. Die maximale Impedanz wird an der kostengünstigsten Route im Netzwerk gemessen. Wenn ein Bedarfspunkt außerhalb des Grenzwertes liegt, wird er nicht zugeordnet. Diese Eigenschaft kann verwendet werden, um die maximale Entfernung zu modellieren, die Kunden eines Geschäfts als Fahrtstrecke akzeptieren würden, oder zur Vorgabe der maximalen Zeitspanne, innerhalb derer die Feuerwehr alle Bewohner einer Gemeinde erreichen soll.

Dieser Grenzwert kann pro Bedarfspunkt überschrieben werden, indem einzelne Grenzwerte im Bedarfspunkt-Sublayer in der Eigenschaft Cutoff_[Impedanz] festgelegt werden. Beispielsweise können Sie feststellen, dass die Bevölkerung in ländlichen Gegenden bereit ist, bis zu 10 Kilometer zu fahren, um eine Einrichtung zu erreichen, während Städter nur höchstens zwei Kilometer fahren möchten. Sie können dieses Verhalten modellieren, indem Sie den Grenzwert des Analyse-Layers auf 10 und den Cutoff_Miles-Wert jedes Bedarfspunktes in einem städtischen Gebiet auf 2 festlegen.

Für die Analyse wird standardmäßig kein Grenzwert verwendet.

Double
number_of_facilities_to_find
(optional)

Gibt die Anzahl von Einrichtungen an, die der Solver suchen soll. Die Standardeinstellung dieses Parameters ist 1.

Die Einrichtungen mit dem FacilityType-Wert Erforderlich sind stets Teil der Lösung, wenn mehr Einrichtungen gesucht werden, als erforderliche Einrichtungen vorhanden sind. Alle zusätzlich auszuwählenden Einrichtungen werden aus geeigneten Einrichtungen ausgewählt.

Alle Einrichtungen mit dem FacilityType-Wert Ausgewählt werden vom Solver als geeignete Einrichtung behandelt.

Der Parameterwert wird für den Problemtyp MINIMIZE_FACILITIES nicht berücksichtigt, da der Solver die Mindestanzahl der zu suchenden Einrichtungen zur Maximierung der Abdeckung festlegt.

Der Parameterwert wird für den Problemtyp TARGET_MARKET_SHARE überschrieben, da der Solver nach der Mindestanzahl von Einrichtungen sucht, die erforderlich ist, um den angegebenen Marktanteil zu erreichen.

Long
decay_function_type
(optional)

Diese Eigenschaft legt die Gleichung fest, die zum Umrechnen der Netzwerkkosten zwischen Einrichtungen und Bedarfspunkten verwendet wird. Diese Eigenschaft gibt in Verbindung mit dem Parameterwert der Zerfallsfunktion an, wie stark sich die Netzwerkimpedanz zwischen Einrichtungen und Bedarfspunkten auf die Auswahl von Einrichtungen durch den Solver auswirkt.

  • LINEARDie transformierte Netzwerkimpedanz zwischen der Einrichtung und dem Bedarfspunkt entspricht der Netzwerkimpedanz des kürzesten Weges zwischen Bedarfspunkt und Einrichtung. Bei dieser Option wird der Impedanzparameter stets auf 1 gesetzt. Dies ist die Standardeinstellung.
  • POWERDie transformierte Netzwerk-Impedanz zwischen der Einrichtung und dem Bedarfspunkt entspricht der Netzwerk-Impedanz des kürzesten Weges potenziert mit dem Wert, der als Impedanz-Parameter angegeben ist. Verwenden Sie diese Option mit einem positiven Impedanzparameter, um nahe gelegenen Einrichtungen mehr Gewicht zu verleihen.
  • EXPONENTIALDie transformierte Netzwerk-Impedanz zwischen der Einrichtung und dem Bedarfspunkt entspricht der mathematischen Konstante "e" potenziert mit dem Wert, der für die Netzwerk-Impedanz des kürzesten Weges angegeben ist, multipliziert mit dem Impedanz-Parameter. Verwenden Sie diese Option mit einem positiven Impedanzparameter, um nahe gelegenen Einrichtungen viel mehr Gewicht zu verleihen.Exponentielle Transformationen werden häufig in Verbindung mit einem Impedanz-Grenzwert verwendet.

Wenn die Eigenschaft ImpedanceTransformation eines Bedarfspunktes festgelegt wurde, überschreibt dieser Wert die Eigenschaft Parameterwert der Zerfallsfunktion des Analyse-Layers pro Bedarfspunkt. Sie können festlegen, dass für städtische und ländliche Bevölkerungsteile eine andere Zerfallsfunktion verwendet werden soll. Sie können dies modellieren, indem Sie die Eigenschaft "Impedanztransformation" für den Analyse-Layer so festlegen, dass sie das Verhalten der ländlichen Bevölkerung darstellt, und die Eigenschaft "Impedanztransformation" der einzelnen Bedarfspunkte in städtischen Gebieten so festlegen, dass sie dem Verhalten der Städter entspricht.

String
decay_function_parameter_value
(optional)

Stellt einen Parameterwert für die im Parameter decay_function_type festgelegten Gleichungen bereit. Der Parameter wird ignoriert, wenn die Zerfallsfunktion vom Typ LINEAR ist. Der Wert für die Zerfallsfunktionen POWER- und EXPONENTIAL sollte verschieden von NULL sein.

Wenn die Eigenschaft ImpedanceTransformation eines Bedarfspunktes festgelegt wurde, überschreibt dieser Wert die Eigenschaft decay_function_parameter_value des Analyse-Layers pro Bedarfspunkt. Sie können festlegen, dass für städtische und ländliche Bevölkerungsteile eine andere Zerfallsfunktion verwendet werden soll. Sie können dies modellieren, indem Sie die Eigenschaft "Impedanztransformation" für den Analyse-Layer so festlegen, dass sie das Verhalten der ländlichen Bevölkerung darstellt, und die Eigenschaft "Impedanztransformation" der einzelnen Bedarfspunkte in städtischen Gebieten so festlegen, dass sie dem Verhalten der Städter entspricht.

Double
target_market_share
(optional)

Gibt den zu berechnenden Ziel-Marktanteil in Prozent an, wenn der Parameter problem_type auf TARGET_MARKET_SHARE gesetzt ist. Es ist der Prozentsatz der gesamten Bedarfsgewichtung, die von Lösungseinrichtungen abgedeckt werden soll. Der Solver wählt die Mindestanzahl von Einrichtungen aus, die erforderlich ist, um den durch diesen numerischen Wert angegebenen Ziel-Marktanteil zu erreichen.

Double
capacity
(optional)

Gibt die Standardkapazität von Einrichtungen an, wenn der Parameter problem_type auf MAXIMIZE_CAPACITATED_COVERAGE festgelegt ist. Dieser Parameter wird bei allen anderen Problemtypen ignoriert.

Einrichtungen verfügen über die Eigenschaft Kapazität, die den Parameter capacity für diese Einrichtung überschreibt, wenn für die Eigenschaft ein Wert festgelegt wurde, der nicht Null ist.

Double
time_of_day
(optional)

Gibt die Uhrzeit und das Datum der Abfahrt an. Die Abfahrtzeit kann von Einrichtungen oder Bedarfspunkten erfolgen, je nachdem, ob die Reiserichtung vom Bedarfspunkt zur Einrichtung oder von der Einrichtung zum Bedarfspunkt erfolgt.

Wenn Sie ein verkehrsbasiertes Impedanzattribut ausgewählt haben, wird die Lösung auf Grundlage des dynamischen Verkehrsaufkommens zu dem hier angegebenen Zeitpunkt generiert. Sie können ein Datum und eine Uhrzeit im Format 14.5.2012 10:30 angeben.

Statt ein bestimmtes Datum zu verwenden, kann ein Wochentag mithilfe der folgenden Datumsangaben angegeben werden:

  • Heute: 30.12.1899
  • Sonntag: 31.12.1899
  • Montag: 1.1.1900
  • Dienstag: 02.01.1900
  • Mittwoch: 03.01.1900
  • Donnerstag: 04.01.1900
  • Freitag: 05.01.1900
  • Samstag: 06.01.1900

Date
time_zone
(optional)

Die Zeitzone des Parameters Zeitpunkt.

  • LOCAL_TIME_AT_LOCATIONSDer Parameter Zeitpunkt bezieht sich auf die Zeitzone, in der sich die Einrichtungen oder Bedarfspunkte befinden. Wenn die gewählte Reiserichtung von der Einrichtung zum Bedarfspunkt führt, ist dies die Zeitzone der Einrichtungen. Wenn die gewählte Reiserichtung vom Bedarfspunkt zur Einrichtung führt, ist dies die Zeitzone der Bedarfspunkte. Dies ist die Standardeinstellung.
  • UTCDer Parameter Zeitpunkt bezieht sich auf die koordinierte Weltzeit (UTC). Wählen Sie diese Option aus, wenn Sie den besten Standort für eine bestimmte Uhrzeit (z. B. jetzt) suchen möchten, sich jedoch nicht sicher sind, in welcher Zeitzone sich die Einrichtungen oder Bedarfspunkte befinden.
String
line_shape
(optional)
  • NO_LINESFür die Ausgabe der Analyse wird kein Shape erstellt. Dies ist hilfreich, wenn Sie ein sehr großes Problem lösen, nur eine Lösungstabelle benötigen und nicht an der Visualisierung der Ergebnisse in einer Karte interessiert sind.
  • STRAIGHT_LINESDie Ausgabelinien-Shapes sind gerade Linien, die die Lösungseinrichtungen mit ihren zugeordneten Bedarfspunkten verbinden. Dies ist die Standardeinstellung.

Gleichgültig, welcher Ausgabe-Shape-Typ gewählt wird, die optimale Route wird immer durch die Netzwerkimpedanz und nie durch die Euklidische Entfernung bestimmt. Dies bedeutet, dass sich nur die Routen-Shapes und nicht der zugrunde liegende Durchlauf des Netzwerks unterscheiden.

String
accumulate_attributes
[accumulate_attributes,...]
(optional)

Eine Liste mit Kostenattributen, die während der Analyse akkumuliert werden sollen. Diese akkumulierten Attribute dienen nur Referenzzwecken. Vom Solver wird bei der Berechnung der Analyse nur das Kostenattribut verwendet, das im festgelegten Reisemodus angegeben ist.

Für jedes akkumulierte Kostenattribut wird den Netzwerkanalyse-Ausgabe-Features eine Total_[Impedance]-Eigenschaft hinzugefügt.

Dieser Parameter ist nicht verfügbar, wenn es sich bei der Netzwerkdatenquelle um einen ArcGIS Online-Service handelt bzw. um einen Service handelt, der auf einer Portal for ArcGIS-Version beruht, in der eine Akkumulation nicht unterstützt wird.

String

Abgeleitete Ausgabe

NameErklärungDatentyp
out_network_analysis_layer

Der neu erstellte Netzwerkanalyse-Layer.

Network Analyst-Layer

Codebeispiel

MakeLocationAllocationAnalysisLayer – Beispiel 1 (Python-Fenster)

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

network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeLocationAllocationAnalysisLayer(network, "StoreLocations")
MakeLocationAllocationAnalysisLayer – Beispiel 2 (Python-Fenster)

Führen Sie das Werkzeug unter Verwendung aller Parameter aus.

network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeLocationAllocationAnalysisLayer(network, "NewStores",
                                    "Driving Time", "TO_FACILITIES",
                                    "MAXIMIZE_ATTENDANCE", 3, 5, "POWER", 2, "",
                                    "", "1/1/1900 9:00 AM", "UTC",
                                    "STRAIGHT_LINES", ["TravelTime", "Meters"])
MakeLocationAllocationAnalysisLayer – Beispiel 3 (Workflow)

Das folgende eigenständige Python-Skript veranschaulicht, wie Sie mit dem Werkzeug MakeLocationAllocationAnalysisLayer Geschäftsstandorte auswählen können, die den größten Umsatz für eine Einzelhandelskette generieren.

# Name: MakeLocationAllocationAnalysisLayer_Workflow.py
# Description: Choose the store locations that would generate the most business
#              for a retail chain. For this scenario, we will perform the
#              location-Allocation analysis using the maximize attendance
#              problem type.
# 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/SanFrancisco.gdb"
    network = os.path.join(input_gdb, "Transportation", "Streets_ND")
    layer_name = "NewStoreLocations"
    travel_mode = "Driving Time"
    facilities = os.path.join(input_gdb, "Analysis", "CandidateStores")
    required_facility = os.path.join(input_gdb, "Analysis", "ExistingStore")
    demand_points = os.path.join(input_gdb, "Analysis", "TractCentroids")
    output_layer_file = os.path.join(output_dir, layer_name + ".lyrx")

    #Create a new location-allocation layer. In this case, the demand travels to
    #the facility. We wish to find 3 potential store locations out of all the
    #candidate store locations using the maximize attendance model.
    result_object = arcpy.na.MakeLocationAllocationAnalysisLayer(network,
                                    layer_name, travel_mode, "TO_FACILITIES",
                                    "MAXIMIZE_ATTENDANCE", cutoff=20,
                                    number_of_facilities_to_find=3)

    #Get the layer object from the result object. The location-allocation layer
    #can now be referenced using the layer object.
    layer_object = result_object.getOutput(0)

    #Get the names of all the sublayers within the location-allocation layer.
    sublayer_names = arcpy.na.GetNAClassNames(layer_object)
    #Stores the layer names that we will use later
    facilities_layer_name = sublayer_names["Facilities"]
    demand_points_layer_name = sublayer_names["DemandPoints"]

    #Load the candidate store locations as facilities using default search
    #tolerance and field mappings.
    arcpy.na.AddLocations(layer_object, facilities_layer_name, facilities, "",
                                                                            "")

    #Load the existing store location as the required facility. Use the field
    #mappings to set the facility type to requried. We need to append this
    #required facility to existing facilities.
    field_mappings = arcpy.na.NAClassFieldMappings(layer_object,
                                                    facilities_layer_name)
    field_mappings["FacilityType"].defaultValue = 1
    arcpy.na.AddLocations(layer_object, facilities_layer_name,
                            required_facility, field_mappings, "",
                            append="APPEND")

    #Load the tract centroids as demand points using default search tolerance
    #Use the field mappings to map the Weight property from POP2000 field.
    demand_field_mappings = arcpy.na.NAClassFieldMappings(layer_object,
                                                    demand_points_layer_name)
    demand_field_mappings["Weight"].mappedFieldName = "POP2000"
    arcpy.na.AddLocations(layer_object, demand_points_layer_name, demand_points,
                          demand_field_mappings, "")

    #Solve the location-allocation layer
    arcpy.na.Solve(layer_object)

    #Save the solved location-allocation 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