Location-Allocation-Layer erstellen (Network Analyst)

Lizenzstufe:BasicStandardAdvanced

Zusammenfassung

Erstellt einen Location-Allocation-Netzwerkanalyse-Layer und legt seine Analyseeigenschaften 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.

Verwendung

Syntax

MakeLocationAllocationLayer_na (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})
ParameterErläuterungDatentyp
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 Widerstand verwendet wird.

String
loc_alloc_from_to
(optional)

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

  • FACILITY_TO_DEMANDDie Fahrtrichtung erfolgt von den Einrichtungen zu den Bedarfspunkten.
  • DEMAND_TO_FACILITYDie Fahrtrichtung erfolgt von den Bedarfspunkten zu den Einrichtungen.

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.

Feuerwehren verwenden im Allgemeinen die Einstellung Einrichtung zu Nachfrage, da es hier darauf ankommt, wie lange es dauert, von der Feuerwache zum Einsatzort zu fahren. Ein Einzelhandelsgeschäft ist eher daran interessiert, wie lange die Käufer brauchen, um den Laden zu erreichen. Daher verwenden Läden für gewöhnlich die Option Nachfrage zu Einrichtung.

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.

  • 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.
  • 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 Impedanz-Grenzewerte liegt.
  • MAXIMIZE_CAPACITATED_COVERAGEMit dieser Option wird das Standortproblem von Einrichtungen mit begrenzter Kapazität gelöst. Einrichtungen werden so ausgewählt, dass der gesamte oder der größte Teil des Bedarfs ohne Überschreiten der Kapazität einer Einrichtung erfüllt werden kann. Daneben werden die Einrichtungen ausgewählt, die die Gesamtsumme der gewichteten Impedanz (der der Einrichtung zugewiesene Bedarf multipliziert mit der Impedanz zu oder von der Einrichtung) minimieren.
  • 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 Impedanz-Grenzwerte 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 Impedanz-Grenzwert hinausgeht, beeinflusst die Gruppe der ausgewählten Einrichtungen nicht.
  • MAXIMIZE_MARKET_SHAREMit dieser Option wird das Standortproblem von Mitbewerbseinrichtungen gelöst. Es werden Einrichtungen ausgewählt, die den Marktanteil bei Vorhandensein von Mitbewerbseinrichtungen 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 Mitbewerbseinrichtungen gelöst. Es werden Einrichtungen ausgewählt, mit denen der angegebene Zielmarktanteil bei Vorhandensein von Mitbewerbseinrichtungen 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
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 von zu suchenden Einrichtungen zur Maximierung der Flächendeckung 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.

  • LINEARDie transformierte Netzwerkimpedanz zwischen der Einrichtung und dem Bedarfspunkt entspricht der Netzwerkimpedanz des kürzesten Weges zwischen Bedarfspunkt und Einrichtung. Mit dieser Option wird der Impedanz-Parameter immer auf den Wert 1 festgelegt. Dies ist die Standardeinstellung.
  • POWERDie transformierte Netzwerk-Impedanz zwischen der Einrichtung und dem Bedarfspunkt entspricht der Netzwerk-Impedanz des kürzesten Wegs potenziert mit dem Wert, der als Impedanz-Parameter angegeben ist. Verwenden Sie die Option "POWER" mit einem positiven Impedanz-Parameter, um für nahegelegene Einrichtungen eine höhere Gewichtung anzugeben.
  • 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 Wegs angegeben ist, multipliziert mit dem Impedanz-Parameter. Verwenden Sie die Option "EXPONENTIAL" mit einem positiven Impedanz-Parameter, um für nahegelegene Einrichtungen eine sehr hohe Gewichtung anzugeben.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 "ImpedanceTransformation" 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 die dem Verhalten der Städter entspricht.

String
impedance_parameter
(optional)

Stellt einen Parameterwert für die im Parameter "Impedanz-Transformation" angegebenen Gleichungen bereit. Der Parameterwert wird ignoriert, wenn die Impedanz-Transformation den Typ "Linear" aufweist. Für Potenz- und Exponential-Impedanz-Transformationen muss der Wert ungleich 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 Ziel-Marktanteil in Prozent für die Berechnung an, wenn der Parameter "Location-Allocation-Problemtyp" auf TARGET_MARKET_SHARE festgelegt wird. 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)

Liste der Kostenattribute, 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)

Die Wendenregel an Knoten. 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. Zu diesem Zweck wird der Wendenregel-Parameter implizit angegeben, indem die Anzahl der mit der Kreuzung verbundenen Kanten angegeben wird, was als Valenz der Knoten bezeichnet wird. Die zulässigen Werte für diesen Parameter sowie eine Beschreibung der jeweiligen Bedeutung in Bezug auf die Valenz der Knoten sind unten aufgelistet.

  • ALLOW_UTURNSWenden sind an Knoten mit einer beliebigen Anzahl verbundener Kanten erlaubt. Dies ist der Standardwert.
  • NO_UTURNSWenden sind an allen Knoten verboten, unabhängig von der Valenz der Knoten. Beachten Sie, dass Wenden an Netzwerkstandorten auch dann erlaubt sind, wenn diese Einstellung ausgewählt wurde. Sie können jedoch die Eigenschaft "CurbApproach" der einzelnen Netzwerkstandorte festlegen, um auch hier Wenden zu verbieten.
  • ALLOW_DEAD_ENDS_ONLYWenden sind an allen Knoten verboten, außer es ist nur eine angrenzende Kante vorhanden (Sackgasse).
  • ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLYWenden sind an Knoten verboten, an denen genau zwei angrenzende Kanten aufeinander treffen, jedoch an Kreuzungen (Knoten mit drei oder mehr angrenzenden Kanten) und in Sackgassen (Knoten mit genau einer angrenzenden Kante) erlaubt. Oftmals verfügen Netzwerke über unwesentliche Knoten in der Mitte von Straßensegmenten. Durch diese Option wird verhindert, dass Fahrzeuge an diesen Punkten wenden.
TippTipp:

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. Ziehen Sie auch die Einstellung der CurbApproach-Eigenschaft Ihrer Netzwerkstandorte in Erwägung.

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

Liste von Beschränkungsattributen, die während der Analyse angewendet werden sollen.

String
hierarchy
(optional)
  • USE_HIERARCHY Verwendet das Hierarchie-Attribut für die Analyse. Wenn eine Hierarchie verwendet wird, werden vom Solver Kanten einer höheren Rangstufe gegenüber Kanten niedrigerer Rangstufen bevorzugt. Hierarchische Berechnungen sind schneller und können verwendet werden, um zu simulieren, dass ein Fahrer es nach Möglichkeit vorzieht, auf Autobahnen statt auf Landstraßen zu fahren, selbst wenn die Fahrstrecke dann länger ist. Diese Option ist nur dann gültig, wenn das Eingabe-Netzwerk-Dataset ein Hierarchie-Attribut aufweist.
  • NO_HIERARCHYDas Hierarchie-Attribut wird nicht für die Analyse verwendet. Wenn keine Hierarchie verwendet wird, wird eine genaue Route für das Netzwerk-Dataset berechnet.

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. In solchen Fällen verwenden Sie "#" als Parameterwert.

Boolean
output_path_shape
(optional)
  • NO_LINESFür die Ausgabe der Analyse wird kein Shape erstellt.
  • STRAIGHT_LINESDie Ausgabelinien-Shapes sind gerade Linien, die die Lösungseinrichtungen mit ihren zugeordneten Bedarfspunkten verbinden.
String
default_capacity
(optional)

Gibt die Standardkapazität von Einrichtungen an, wenn der Parameter Location-Allocation-Problemtyp auf MAXIMIZE_CAPACITATED_COVERAGE festgelegt wird. Dieser Parameter wird für alle anderen Problemtypen ignoriert.

Einrichtungen weisen eine Kapazitätseigenschaft auf, die den Parameter Standardkapazität bei Einstellung auf einen Nicht-Null-Wert für diese Einrichtung überschreibt.

Double
time_of_day
(optional)

Gibt Uhrzeit und Datum der Abfahrt an. Die Abfahrtszeit kann von Einrichtungen oder Bedarfspunkten angegeben werden, je nachdem, ob "Nachfrage zu Einrichtung" oder "Einrichtung zu Nachfrage" eingestellt ist.

Wenn Sie ein verkehrsbasiertes Impedanz-Attribut ausgewählt haben, wird die Lösung auf Grundlage des dynamischen Verkehrsaufkommens zu der hier angegeben Tageszeit 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.

  • Heute – 30.12.1899
  • Sonntag – 31.12.1899
  • Montag – 1.1.1900
  • Dienstag – 2.1.1900
  • Mittwoch – 3.1.1900
  • Donnerstag – 4.1.1900
  • Freitag – 5.1.1900
  • Samstag – 06.01.1900
Wenn Sie beispielsweise angeben möchten, dass die Reise am Dienstag um 17:00 Uhr starten soll, geben Sie den Parameterwert wie folgt an: 2.1.1900 17:00.

Date

Codebeispiel

MakeLocationAllocationLayer – Beispiel 1 (Python-Fenster)

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

import arcpy
arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/SanFrancisco.gdb"
arcpy.na.MakeLocationAllocationLayer("Transportation/Streets_ND",
                                     "StoreLocations","Minutes")
MakeLocationAllocationLayer – Beispiel 2 (Python-Fenster)

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

import arcpy
arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/SanFrancisco.gdb"
arcpy.na.MakeLocationAllocationLayer("Transportation/Streets_ND","NewStores",
                                     "Minutes","DEMAND_TO_FACILITY",
                                     "MAXIMIZE_ATTENDANCE",3,5,"POWER",2,"",
                                     ["Minutes","Meters"],"ALLOW_UTURNS",
                                     ["Oneway"],"NO_HIERARCHY","STRAIGHT_LINES",
                                     "","9 AM")
MakeLocationAllocationLayer – Beispiel 3 (Workflow)

Mit dem folgenden eigenständigen Python-Skript wird veranschaulicht, wie das Werkzeug "MakeLocationAllocationLayer" verwendet werden kann, um die Ladenstandorte auszuwählen, 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

try:
    #Check out the Network Analyst extension license
    arcpy.CheckOutExtension("Network")

    #Set environment settings
    env.workspace = "C:/data/SanFrancisco.gdb"
    env.overwriteOutput = True
    
    #Set local variables
    inNetworkDataset = "Transportation/Streets_ND"
    outNALayerName = "NewStoreLocations"
    impedanceAttribute = "TravelTime"
    inFacilities = "Analysis/CandidateStores"
    requiredFacility = "Analysis/ExistingStore"
    inDemandPoints = "Analysis/TractCentroids"
    outLayerFile = "C:/data/output" + "/" + outNALayerName + ".lyr"
    
    #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.
    outNALayer = arcpy.na.MakeLocationAllocationLayer(inNetworkDataset,
                                                      outNALayerName,
                                                      impedanceAttribute,
                                                      "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.
    outNALayer = outNALayer.getOutput(0)
    
    #Get the names of all the sublayers within the location-allocation layer.
    subLayerNames = arcpy.na.GetNAClassNames(outNALayer)
    #Stores the layer names that we will use later
    facilitiesLayerName = subLayerNames["Facilities"]
    demandPointsLayerName = subLayerNames["DemandPoints"]
    
    
    #Load the candidate store locations as facilities using default search
    #tolerance and field mappings.
    arcpy.na.AddLocations(outNALayer, facilitiesLayerName, inFacilities, "", "",
                          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.
    fieldMappings = arcpy.na.NAClassFieldMappings(outNALayer, facilitiesLayerName)
    fieldMappings["FacilityType"].defaultValue = 1
    arcpy.na.AddLocations(outNALayer, facilitiesLayerName, requiredFacility,
                          fieldMappings, "", 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.
    demandFieldMappings = arcpy.na.NAClassFieldMappings(outNALayer,
                                                        demandPointsLayerName)
    demandFieldMappings["Weight"].mappedFieldName = "POP2000"    
    arcpy.na.AddLocations(outNALayer,demandPointsLayerName ,inDemandPoints,
                          demandFieldMappings, "",
                          exclude_restricted_elements = "EXCLUDE")
    
    #Solve the location-allocation layer
    arcpy.na.Solve(outNALayer)
    
    #Save the solved location-allocation layer as a layer file on disk with 
    #relative paths
    arcpy.management.SaveToLayerFile(outNALayer,outLayerFile,"RELATIVE")
    
    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 occured on line %i" % tb.tb_lineno
    print str(e)

Umgebung

Verwandte Themen

Lizenzierungsinformationen

ArcGIS for Desktop Basic: Ja
ArcGIS for Desktop Standard: Ja
ArcGIS for Desktop Advanced: Ja
5/9/2014