Mit der Network Analyst-Lizenz verfügbar.
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.
Ältere Versionen:
Dies ist ein veraltetes Werkzeug. Diese Funktionen wurden durch das Werkzeug Location-Allocation-Analyse-Layer erstellen ersetzt.
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.
Syntax
arcpy.na.MakeLocationAllocationLayer(in_network_dataset, out_network_analysis_layer, impedance_attribute, {loc_alloc_from_to}, {loc_alloc_problem_type}, {number_facilities_to_find}, {impedance_cutoff}, {impedance_transformation}, {impedance_parameter}, {target_market_share}, {accumulate_attribute_name}, {UTurn_policy}, {restriction_attribute_name}, {hierarchy}, {output_path_shape}, {default_capacity}, {time_of_day})
Parameter | Erklärung | Datentyp |
in_network_dataset | Das Netzwerk-Dataset, für das die Location-Allocation-Analyse ausgeführt wird. | Network Dataset Layer |
out_network_analysis_layer | Name des zu erstellenden Location-Allocation-Netzwerkanalyse-Layers. | String |
impedance_attribute | Das Kostenattribut, das in der Analyse als Impedanz verwendet wird. | String |
loc_alloc_from_to (optional) | Gibt beim Berechnen der Netzwerkkosten die Fahrtrichtung zwischen Einrichtungen und Bedarfspunkten an.
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 |
loc_alloc_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.
| String |
number_facilities_to_find (optional) | Gibt die Anzahl von Einrichtungen an, die der Solver suchen soll. 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 |
impedance_cutoff (optional) |
Mit Impedanz-Grenzwert wird die maximale Impedanz angegeben, bei der einer Einrichtung ein Bedarfspunkt zugeordnet werden kann. Die maximale Impedanz wird an der kostengünstigsten Route im Netzwerk gemessen. Wenn ein Bedarfspunkt außerhalb des Grenzwerts 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. Wenn die Eigenschaft Cutoff_[Impedance] eines Bedarfspunktes festgelegt wurde, überschreibt dieser Wert die Eigenschaft Impedanz-Grenzwert des Analyse-Layers. Sie stellen möglicherweise fest, dass die Bevölkerung in ländlichen Gegenden bereit ist, bis zu 10 Meilen zu fahren, um eine Einrichtung zu erreichen, während Städter nur höchstens 2 Meilen fahren möchten. Sie können dieses Verhalten modellieren, indem Sie den Impedanz-Grenzwert des Analyse-Layers auf 10 festlegen und den Wert Cutoff_Miles der Bedarfspunkte in städtischen Gebieten auf 2 festlegen. | Double |
impedance_transformation (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 Impedanzparameter an, wie stark sich die Netzwerkimpedanz zwischen Einrichtungen und Bedarfspunkten auf die Auswahl von Einrichtungen durch den Solver auswirkt.
Wenn die Eigenschaft "ImpedanceTransformation" eines Bedarfspunktes festgelegt wurde, überschreibt dieser Wert die Eigenschaft "Impedanz-Transformation" des Analyse-Layers. Sie möchten möglicherweise festlegen, dass für städtische und ländliche Bevölkerungsteile eine andere Impedanz-Transformation verwendet werden soll. Sie können dies modellieren, indem Sie die Eigenschaft "ImpedanceTransformation" für den Analyse-Layer so festlegen, dass sie das Verhalten der ländlichen Bevölkerung darstellt, und die Eigenschaft "ImpedanceTransformation" der Bedarfspunkte in städtischen Gebieten so festlegen, dass sie dem Verhalten der Städter entspricht. | String |
impedance_parameter (optional) | Stellt einen Parameterwert für die im Parameter "Impedanz-Transformation" angegebenen Gleichungen bereit. Der Parameter wird ignoriert, wenn die Impedanztransformation vom Typ LINEAR ist. Der Wert für POWER- und EXPONENTIAL-Impedanztransformationen sollte verschieden von NULL sein. Wenn die Eigenschaft ImpedanceParameter eines Bedarfspunktes festgelegt wurde, überschreibt dieser Wert die Eigenschaft Impedanzparameter des Analyse-Layers. Sie legen möglicherweise fest, dass für städtische und ländliche Bevölkerungsteile ein anderer Impedanzparameter verwendet werden soll. Sie können dies modellieren, indem Sie die Eigenschaft "ImpedanceTransformation" für den Analyse-Layer so festlegen, dass sie das Verhalten der ländlichen Bevölkerung darstellt, und die Eigenschaft "ImpedanceTransformation" der 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 "Location-Allocation-Problemtyp" auf TARGET_MARKET_SHARE festgelegt wurde. 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 |
accumulate_attribute_name [accumulate_attribute_name,...] (optional) | Eine Liste mit Kostenattributen, die während der Analyse akkumuliert werden sollen. Diese Akkumulationsattribute dienen ausschließlich zu Referenzzwecken. Der Solver verwendet nur das vom Parameter Impedanzattribut angegebene Kostenattribut zum Berechnen der Route. Für jedes akkumulierte Kostenattribut wird den vom Solver ausgegebenen Routen eine Total_[Impedance]-Eigenschaft hinzugefügt. | String |
UTurn_policy (optional) | Definiert die Wendenregel an, die an Knoten verwendet werden soll. Das Zulassen von Wenden bedeutet, dass der Solver an einem Knoten wenden und auf der gleichen Straße wieder zurückführen kann. Da diese Knoten Straßenkreuzungen und Sackgassen darstellen können, kann es sein, dass verschiedene Fahrzeuge an manchen Knoten wenden können und an anderen wiederum nicht. Dies hängt davon ab, ob der Knoten eine Kreuzung oder eine Sackgasse darstellt. Um dies zu berücksichtigen, wird der Parameter "Wendenregel" implizit durch die Anzahl der mit der Kreuzung verbundenen Kanten angegeben. Diese Anzahl wird als Valenz der Knoten bezeichnet. Die zulässigen Werte für diesen Parameter sowie eine Beschreibung der jeweiligen Bedeutung in Bezug auf die Valenz der Knoten sind unten aufgelistet.
Tipp:Falls Sie eine Wendenregel benötigen, die genauer definiert ist, können Sie einem Netzwerkkostenattribut einen globalen Evaluator für Verzögerung bei Kantenübergängen hinzufügen oder dessen Einstellungen anpassen, sofern dieser vorhanden ist, und der Konfiguration von U-förmigen Kantenübergängen einen besonderen Stellenwert einräumen. Sie können auch die Einstellung der CurbApproach-Eigenschaft Ihrer Netzwerkstandorte festlegen. | String |
restriction_attribute_name [restriction_attribute_name,...] (optional) | Eine Liste mit Beschränkungsattributen, die während der Analyse angewendet werden sollen. | String |
hierarchy (optional) |
Der Parameter wird nicht verwendet, wenn ein Hierarchie-Attribut nicht für das Netzwerk-Dataset definiert ist, das zum Durchführen der Analyse verwendet wird. | Boolean |
output_path_shape (optional) |
| String |
default_capacity (optional) | Gibt die Standardkapazität von Einrichtungen an, wenn der Parameter loc_alloc_problem_type auf MAXIMIZE_CAPACITATED_COVERAGE festgelegt ist. Dieser Parameter wird bei allen anderen Problemtypen ignoriert. Einrichtungen verfügen über eine Kapazitätseigenschaft, die den Parameter default_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 gelten, je nachdem, ob die Fahrt 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 der hier angegebenen Uhrzeit generiert. Sie können ein Datum und eine Uhrzeit als 5/14/2012 10:30 AM angeben. Statt ein bestimmtes Datum zu verwenden, kann ein Wochentag mithilfe der folgenden Datumsangaben angegeben werden:
| Date |
Abgeleitete Ausgabe
Name | Erklärung | Datentyp |
output_layer | Der neu erstellte Netzwerkanalyse-Layer. | Network Analyst-Layer |
Codebeispiel
Ausführen des Werkzeugs, wenn nur die erforderlichen Parameter verwendet werden.
network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeLocationAllocationLayer(network, "StoreLocations", "TravelTime")
Führen Sie das Werkzeug unter Verwendung aller Parameter aus.
network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeLocationAllocationLayer(network, "NewStores", "TravelTime",
"DEMAND_TO_FACILITY", "MAXIMIZE_ATTENDANCE",
3, 5, "POWER", 2, "",
["TravelTime", "Meters"], "ALLOW_UTURNS",
["Oneway"], "NO_HIERARCHY",
"STRAIGHT_LINES", "", "9 AM")
Das folgende eigenständige Python-Skript veranschaulicht, wie Sie mit dem Werkzeug MakeLocationAllocationLayer Geschäftsstandorte auswählen können, die den größten Umsatz für eine Einzelhandelskette generieren.
# Name: MakeLocationAllocationLayer_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 maximize attendance problem
# type.
# Requirements: Network Analyst Extension
#Import system modules
import arcpy
from arcpy import env
import os
try:
#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"
impedance = "TravelTime"
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.MakeLocationAllocationLayer(network, layer_name,
impedance,
"DEMAND_TO_FACILITY",
"MAXIMIZE_ATTENDANCE", 3,
5, "LINEAR")
#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, "",
"", exclude_restricted_elements = "EXCLUDE")
#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",
exclude_restricted_elements="EXCLUDE")
#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, "",
exclude_restricted_elements="EXCLUDE")
#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))
Umgebungen
Lizenzinformationen
- Basic: Ja
- Standard: Ja
- Advanced: Ja