OD コスト マトリックス レイヤの作成(Make OD Cost Matrix Layer) (Network Analyst)

サマリ

OD(Origin-Destination)コスト マトリックス ネットワーク解析レイヤを作成し、解析プロパティを設定します。OD コスト マトリックス解析レイヤは、複数の出発地から複数の目的地までのコスト マトリックスを表すときに役立ちます。

使用法

構文

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})
パラメータ説明データ タイプ
in_network_dataset

OD コスト マトリックス解析が実行されるネットワーク データセット。

Network Dataset Layer
out_network_analysis_layer

作成する OD コスト マトリックス ネットワーク解析レイヤの名前。

String
impedance_attribute

解析でインピーダンスとして使用されるコスト属性。

String
default_cutoff
(オプション)

指定された起点に対する終点の検索を停止するデフォルトのインピーダンス値。累積インピーダンスが閾値より大きくなると、解析が停止します。デフォルトは起点の閾値を指定することでオーバーライドすることができます。

Double
default_number_destinations_to_find
(オプション)

各起点に対して検索を実行するデフォルトの目的地の数。起点の TargetDestinationCount プロパティの値を指定することでデフォルトをオーバーライドすることができます。

Long
accumulate_attribute_name
[accumulate_attribute_name,...]
(オプション)

解析中に累積されるコスト属性のリスト。これらの累積属性は、参考情報としてのみ使用されます。ソルバは、[インピーダンス] 属性パラメータで指定されているコスト属性のみを使用してルートを計算します。

For each cost attribute that is accumulated, a Total_[Impedance] property is added to the routes that are output by the solver.

String
UTurn_policy
(オプション)

ストップ間でのネットワーク移動中に発生する可能性があるジャンクションでの U ターンを規制または許可します。

  • ALLOW_UTURNS(U ターンを許可)任意の数の隣接エッジを持つジャンクションでの U ターンを許可します。
  • NO_UTURNS(U ターンを規制)すべてのジャンクションでの U ターンが禁止されます。ただし、この設定が選択されている場合でも、ネットワーク ロケーションでは U ターンが許可されます。個々のネットワーク ロケーションの CurbApproach プロパティで U ターンを禁止するように設定できます。
  • ALLOW_DEAD_ENDS_ONLY(行き止まりのみ許可)1 つの隣接エッジを持つジャンクション(行き止まり)を除くすべてのジャンクションでの U ターンを禁止します。
  • ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY(行き止まりと交差点のみ許可)2 つの隣接するエッジが接するジャンクションでの U ターンを禁止します。ただし、交差点(3 つ以上の隣接エッジを持つジャンクション)または行き止まり(1 つの隣接エッジを持つジャンクション)では U ターンを許可します。
String
restriction_attribute_name
[restriction_attribute_name,...]
(オプション)

解析中に適用される規制属性のリスト。

String
hierarchy
(オプション)
  • USE_HIERARCHY(階層を使用) 階層属性を解析に使用します。階層を使用すると、解析は下位ランクのエッジよりも上位ランクのエッジを優先します。階層解析は、より高速で、運転者が遠回りであっても一般道路の代わりに高速道路を利用する状況をシミュレートするのに使用できます。このオプションは入力ネットワーク データセットが階層属性を持つ場合のみ有効です。
  • NO_HIERARCHY(階層を使用しない)階層属性を解析に使用しません。階層を使用しないことで、ネットワーク データセットの正確なルートが検索されます。

解析を実行するネットワーク データセットに使用する階層属性が定義されていない場合、パラメータは使用されません。この場合、「#」をパラメータ値として使用します。

Boolean
hierarchy_settings
(オプション)

レガシレガシ:

10 より前のバージョンでは、このパラメータによって、解析のためにネットワーク データセット構築時のデフォルトの階層範囲から階層範囲の変更を行うことを許可していました。バージョン 10 では、このパラメータはサポートされていないため、空の文字列を指定する必要があります。解析のために階層範囲を変更したい場合、ネットワーク データセットのデフォルトの階層範囲を更新します。

Network Analyst Hierarchy Settings
output_path_shape
(オプション)
  • NO_LINES(ラインなし)ルートのラインは生成されません。これは、起点と終点の数が多く、出力ライン形状が必要なく、OD コスト マトリックス テーブルのみが必要な場合に便利です。
  • STRAIGHT_LINES(直線)出力ルート形状は各起点~終点間を結ぶ 1 本の直線になります。

どの出力形状のタイプを選択するかに関係なく、常に最適なルートはユークリッド距離ではなくネットワーク インピーダンスによって決定されます。ネットワーク解析の結果は同じですが、ルート形状のみが異なります。

String

コードのサンプル

MakeODCostMatrixLayer(OD コスト マトリックス レイヤの作成)の例 1(Python ウィンドウ)

必須パラメータのみを使用してツールを実行します。

import arcpy
arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/Paris.gdb"
arcpy.MakeODCostMatrixLayer_na("Transportation/ParisNet","DrivetimeCosts",
                               "Drivetime")
MakeODCostMatrixLayer(OD コスト マトリックス レイヤの作成)の例 2(Python ウィンドウ)

すべてのパラメータを使用してツールを実行します。

import arcpy
arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/Paris.gdb"
arcpy.MakeODCostMatrixLayer_na("Transportation/ParisNet","DrivetimeCosts",
                               "Drivetime",10,20,["Meters","Drivetime"],
                               "NO_UTURNS",["Oneway"],"USE_HIERARCHY","",
                               "NO_LINES")
MakeODCostMatrixLayer(OD コスト マトリックス レイヤの作成)の例 3(ワークフロー)

次のスタンドアロン Python スクリプトは、MakeODCostMatrixLayer(OD コスト マトリックス レイヤの作成)ツールを使用して、商品を倉庫からすべての店舗に 10 分以内の走行時間で配達する際の OD コスト マトリックスを作成する方法を示しています。

# 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"
    outNALayer = "WarehouseToStoreDrivetimeMatrix"
    impedanceAttribute = "Drivetime"
    accumulateAttributeName = ["Meters"]
    inOrgins = "Analysis/Warehouses"
    inDestinations = "Analysis/Stores"
    fieldMappings = "Name NOM #"
    outLayerFile = "C:/data/output" + "/" + outNALayer + ".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.
    arcpy.MakeODCostMatrixLayer_na(inNetworkDataset, outNALayer, 
                                   impedanceAttribute, 10, "",
                                   accumulateAttributeName)
    
    #Load the warehouse locations as origins using a default field map that maps
    #the Name property using a name field from warehouse features.
    arcpy.AddLocations_na(outNALayer, "Origins", inOrgins, "","1000 Meters")
    
    #Load the store locations as destinations mapping the NOM field from stores
    #features as Name property
    arcpy.AddLocations_na(outNALayer, "Destinations", inDestinations, 
                          fieldMappings,"1000 Meters")
    
    #Solve the OD cost matrix layer
    arcpy.Solve_na(outNALayer)
    
    #Save the solved OD cost matrix layer as a layer file on disk with relative
    #paths
    arcpy.SaveToLayerFile_management(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)

環境

関連項目


7/10/2012