Layer mit Start-Ziel-Kostenmatrix erstellen (Network Analyst)

Lizenzstufe:BasicStandardAdvanced

Zusammenfassung

Erstellt einen Netzwerkanalyse-Layer für Start-Ziel-Kostenmatrix und legt seine Analyseeigenschaften fest. Mit dem Netzwerkanalyse-Layer für die Start-Ziel-Kostenmatrix können Sie eine Kostenübersicht von einer Gruppe von Startstandorten zu einer Gruppe von Zielstandorten erstellen.

Verwendung

Syntax

MakeODCostMatrixLayer_na (in_network_dataset, out_network_analysis_layer, impedance_attribute, {default_cutoff}, {default_number_destinations_to_find}, {accumulate_attribute_name}, {UTurn_policy}, {restriction_attribute_name}, {hierarchy}, {hierarchy_settings}, {output_path_shape}, {time_of_day})
ParameterErläuterungDatentyp
in_network_dataset

Das Netzwerk-Dataset, auf dem die Start-Ziel-Kostenmatrixanalyse ausgeführt wird.

Network Dataset Layer
out_network_analysis_layer

Name des zu erstellenden Netzwerkanalyse-Layers für Start-Ziel-Kostenmatrizen.

String
impedance_attribute

Das Kostenattribut, das in der Analyse als Widerstand verwendet wird.

String
default_cutoff
(optional)

Standardimpedanzwert, an dem die Suche nach Zielen für einen angegebenen Ursprung abgebrochen wird. Wenn die Gesamtimpedanz größer als der Grenzwert ist, wird das Durchlaufen angehalten. Der Standardwert kann durch die Angabe eines Grenzwerts für die Ursprünge überschrieben werden.

Double
default_number_destinations_to_find
(optional)

Standardanzahl von Zielen, die für jeden Ursprung gesucht werden soll. Der Standard kann überschrieben werden, indem ein Wert für die Eigenschaft "TargetDestinationCount" der Ursprünge angegeben wird.

Long
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
hierarchy_settings
(optional)

VeraltetVeraltet:

Vor Version 10 konnten mit diesem Parameter die im Netzwerk-Dataset erstellten Standardhierarchiebereiche in die Hierarchiebereiche für Ihre Analyse geändert werden. In Version 10 wird dieser Parameter nicht mehr unterstützt und sollte als leere Zeichenfolge angegeben werden. Wenn Sie die Hierarchiebereiche für Ihre Analyse ändern möchten, müssen Sie die Standardhierarchiebereiche im Netzwerk-Dataset aktualisieren.

Network Analyst Hierarchy Settings
output_path_shape
(optional)
  • NO_LINESFür die Ausgaberouten wird kein Shape erstellt. Dies ist nützlich, wenn Sie über zahlreiche Ursprünge und Ziele verfügen und nur die Start-Ziel-Kostenmatrixtabelle (und nicht der Ausgabe-Linien-Shapes) benötigen.
  • STRAIGHT_LINESDas Ausgaberouten-Shape ist eine einzelne gerade Linie zwischen jedem einzelnen Start-Ziel-Paar.

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
time_of_day
(optional)

Gibt die Abfahrtszeit vom Startpunkt an.

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

MakeODCostMatrixLayer – 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/Paris.gdb"
arcpy.na.MakeODCostMatrixLayer("Transportation/ParisNet","DrivetimeCosts",
                               "Drivetime")
MakeODCostMatrixLayer – Beispiel 2 (Python-Fenster)

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

import arcpy
arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/Paris.gdb"
arcpy.na.MakeODCostMatrixLayer("Transportation/ParisNet","DrivetimeCosts",
                               "Drivetime",10,20,["Meters","Drivetime"],
                               "NO_UTURNS",["Oneway"],"USE_HIERARCHY","",
                               "NO_LINES")
MakeODCostMatrixLayer – Beispiel 3 (Workflow)

Im folgenden eigenständigen Python-Skript wird veranschaulicht, wie das Werkzeug "MakeODCostMatrixLayer" verwendet werden kann, um eine Start-Ziel-Kostenmatrix für die Warenlieferung von den Lagern an die Geschäfte zu erstellen, die innerhalb einer Fahrzeit von 10 Minuten erreichbar sind.

# Name: MakeODCostMatrixLayer_Workflow.py
# Description: Create an origin-destination cost matrix for delivery of goods 
#              from the warehouses to all stores within a 10-minute drive time 
#              and save the results to a layer file on disk. Such a matrix can   
#              be used as an input for logistics, delivery and routing analyses.
# 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/Paris.gdb"
    env.overwriteOutput = True
    
    #Set local variables
    inNetworkDataset = "Transportation/ParisMultimodal_ND"
    outNALayerName = "WarehouseToStoreDrivetimeMatrix"
    impedanceAttribute = "Drivetime"
    searchTolerance = "1000 Meters"
    accumulateAttributeName = ["Meters"]
    inOrgins = "Analysis/Warehouses"
    inDestinations = "Analysis/Stores"
    outLayerFile = "C:/data/output" + "/" + outNALayerName + ".lyr"
    
    #Create a new OD Cost matrix layer. We wish to find all stores within a 10 
    #minute cutoff. Apart from finding the drive time to the stores, we also 
    #want to find the total distance. So we will accumulate the "Meters" 
    #impedance attribute.
    outNALayer = arcpy.na.MakeODCostMatrixLayer(inNetworkDataset, outNALayerName,
                                                impedanceAttribute, 10, "",
                                                accumulateAttributeName)
    
    #Get the layer object from the result object. The OD cost matrix layer can 
    #now be referenced using the layer object.
    outNALayer = outNALayer.getOutput(0)
    
    #Get the names of all the sublayers within the OD cost matrix layer.
    subLayerNames = arcpy.na.GetNAClassNames(outNALayer)
    #Stores the layer names that we will use later
    originsLayerName = subLayerNames["Origins"]
    destinationsLayerName = subLayerNames["Destinations"]
    
    #Load the warehouse locations as origins using a default field mappings and
    #a search tolerance of 1000 Meters.
    arcpy.na.AddLocations(outNALayer, originsLayerName, inOrgins, "",
                          searchTolerance)
    
    #Load the store locations as destinations and map the NOM field from stores
    #features as Name property using field mappings
    fieldMappings = arcpy.na.NAClassFieldMappings(outNALayer, destinationsLayerName)
    fieldMappings["Name"].mappedFieldName = "NOM"
    arcpy.na.AddLocations(outNALayer, destinationsLayerName, inDestinations, 
                          fieldMappings, searchTolerance)
    
    #Solve the OD cost matrix layer
    arcpy.na.Solve(outNALayer)
    
    #Save the solved OD cost matrix 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