Zusammenfassung
Erstellt einen Netzwerkanalyse-Layer für die nächstgelegene Einrichtung und legt seine Analyse-Eigenschaften fest. Ein Netzwerkanalyse-Layer für die nächstgelegenen Einrichtung ist hilfreich, um die nächste Einrichtung oder die Einrichtungen zu einem Ereignis auf der Grundlage des angegebenen Reisemodus zu bestimmen. 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.MakeClosestFacilityAnalysisLayer(network_data_source, {layer_name}, {travel_mode}, {travel_direction}, {cutoff}, {number_of_facilities_to_find}, {time_of_day}, {time_zone}, {time_of_day_usage}, {line_shape}, {accumulate_attributes}, {generate_directions_on_solve})
Parameter | Erklärung | Datentyp |
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 die Fahrtrichtung zwischen Einrichtungen und Ereignissen an.
Die Fahrtrichtung kann sich darauf auswirken, welche Einrichtungen gefunden werden, wenn das Netzwerk Einbahnstraßen oder von der Fahrtrichtung abhängige Impedanzen enthält. So kann es zum Beispiel 10 Minuten dauern, um von einem bestimmten Ereignis zu einer bestimmten Einrichtung zu fahren, während die Fahrt in die Gegenrichtung (von der Einrichtung zum Ereignis) aufgrund von Einbahnstraßen oder anderen Verkehrsbedingungen 15 Minuten dauert. | String |
cutoff (optional) | Der Impedanzwert, bei dem die Suche nach Einrichtungen für ein angegebenes Ereignis in den Einheiten des Impedanzattributs beendet werden soll, das vom ausgewählten travel_mode verwendet wird. Dieser Grenzwert kann pro Ereignis überschrieben werden, indem einzelne Grenzwerte im Bedarfspunkt-Sublayer angegeben werden, wenn travel_direction='TO_FACILITIES', oder er kann pro Einrichtung überschrieben werden, indem einzelne Grenzwerte im Einrichtungs-Sublayer angegeben werden, wenn travel_direction='FROM_FACILITIES'Für die Analyse wird standardmäßig kein Grenzwert verwendet. | Double |
number_of_facilities_to_find (optional) | Die Anzahl der nächstgelegenen Einrichtungen, die pro Ereignis gesucht werden sollen. Der Standardwert kann überschrieben werden, indem ein einzelner Wert für die Eigenschaft TargetFacilityCount im Bedarfspunkt-Sublayer angegeben wird. Die standardmäßige Anzahl an Einrichtungen, die gesucht werden sollen, lautet Eins. | Long |
time_of_day (optional) | Gibt die Uhrzeit und das Datum für den Beginn oder das Ende der Routen an. Die Interpretation dieses Wertes hängt davon ab, ob time_of_day_usage auf Startzeit oder Endzeit festgelegt ist. 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:
| Date |
time_zone (optional) | Gibt die Zeitzone des Parameters time_of_day an.
| String |
time_of_day_usage (optional) | Gibt an, ob der Wert des Parameters time_of_day die Ankunfts- oder Abfahrtzeit für die Route oder die Routen darstellt.
| String |
line_shape (optional) | Gibt den Shape-Typ für die Routen-Features an, die von der Analyse ausgegeben werden. 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 |
generate_directions_on_solve (optional) | Gibt an, ob beim Ausführen der Analyse Wegbeschreibungen erstellt werden.
Der Zeitaufwand für Analysen, bei denen das Erstellen detaillierter Wegbeschreibungen nicht erforderlich ist, kann beträchtlich reduziert werden, wenn Sie die Standardoption NO_DIRECTIONS verwenden. | Boolean |
Abgeleitete Ausgabe
Name | Erklärung | Datentyp |
out_network_analysis_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.MakeClosestFacilityAnalysisLayer(network, "ClosestFireStations")
Führen Sie das Werkzeug unter Verwendung aller Parameter aus.
network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeClosestFacilityAnalysisLayer(network, "ClosestHospitals",
"Driving Time", "TO_FACILITIES", 5, 3,
"1/1/1900 9:00 AM", "UTC", "START_TIME",
"ALONG_NETWORK", ["Meters", "TravelTime"])
Mit dem folgenden eigenständigen Python-Skript wird veranschaulicht, wie das Werkzeug MakeClosestFacilityAnalysisLayer verwendet werden kann, um von den Ladenstandorten aus das nächst gelegene Lager zu ermitteln.
# Name: MakeClosestFacilityAnalysisLayer_Workflow.py
# Description: Find the closest warehouse from the store locations and save the
# results to a layer file on disk.
# 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/Paris.gdb"
network = os.path.join(input_gdb, "Transportation", "ParisMultimodal_ND")
layer_name = "ClosestWarehouse"
travel_mode = "Driving Time"
facilities = os.path.join(input_gdb, "Analysis", "Warehouses")
incidents = os.path.join(input_gdb, "Analysis", "Stores")
output_layer_file = os.path.join(output_dir, layer_name + ".lyrx")
#Create a new closest facility analysis layer.
result_object = arcpy.na.MakeClosestFacilityAnalysisLayer(network,
layer_name, travel_mode, "TO_FACILITIES",
number_of_facilities_to_find=1)
#Get the layer object from the result object. The closest facility layer can
#now be referenced using the layer object.
layer_object = result_object.getOutput(0)
#Get the names of all the sublayers within the closest facility layer.
sublayer_names = arcpy.na.GetNAClassNames(layer_object)
#Stores the layer names that we will use later
facilities_layer_name = sublayer_names["Facilities"]
incidents_layer_name = sublayer_names["Incidents"]
#Load the warehouses as Facilities using the default field mappings and
#search tolerance
arcpy.na.AddLocations(layer_object, facilities_layer_name,
facilities, "", "")
#Load the stores as Incidents. Map the Name property from the NOM field
#using field mappings
field_mappings = arcpy.na.NAClassFieldMappings(layer_object,
incidents_layer_name)
field_mappings["Name"].mappedFieldName = "NOM"
arcpy.na.AddLocations(layer_object, incidents_layer_name, incidents,
field_mappings, "")
#Solve the closest facility layer
arcpy.na.Solve(layer_object)
#Save the solved closest facility 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