RouteSolverProperties (arcpy.na)

サマリ

ルート ネットワーク解析レイヤの解析プロパティにアクセスできます。GetSolverProperties 関数を使用して、ルート ネットワーク解析レイヤから RouteSolverProperties オブジェクトを取得できます。

説明

RouteSolverProperties オブジェクトを利用すると、ルート ネットワーク解析レイヤのすべての解析プロパティに読み取りおよび書き込みアクセスが可能です。オブジェクトを使用してルート レイヤの必要な解析プロパティを変更し、対応するレイヤを再解析して適切な結果を得ることができます。新しいルート レイヤは、[ルート レイヤの作成(Make Route Layer)] ジオプロセシング ツールを使用して作成できます。新しいルート レイヤから RouteSolverProperties オブジェクトを取得すると、以降の解析で既存のレイヤを再利用できます。解析ごとに新しいレイヤを作成する必要がないため、解析速度の低下がありません。

RouteSolverProperties オブジェクトのプロパティを変更した後、対応するレイヤはすぐに他の関数やジオプロセシング ツールと一緒に使用できるようになります。レイヤを更新して、オブジェクトを通して変更された内容を反映する必要はありません。

特性

プロパティ説明データ タイプ
accumulators
(読み書き)

解析時に累積されるネットワーク コスト属性のリストを取得または設定できます。空のリスト([])は、累積されるコスト属性がないことを表します。

String
attributeParameters
(読み書き)

解析で使用されるパラメータ化属性を取得または設定できます。プロパティは Python ディクショナリを返します。ディクショナリのキーは、属性名とパラメータで構成される 2 つの値の組み合わせです。ディクショナリ内の各アイテムの値はパラメータ値です。

パラメータ化されたネットワーク属性は、リアルタイムに変化する属性値をモデリングするために使用されます。たとえば、12 フィートの車高規制があるトンネルをパラメータを使用してモデリングできます。この場合、車両の高さ(フィート)をパラメータ値として指定する必要があります。車両の高さが 12 フィートを超えている場合は、この規制が true に評価され、トンネルの通行が規制されます。同様に、橋は重量規制を指定するパラメータを保持することができます。

attributeParameters プロパティを直接変更しようとしても、値は更新されません。常に新しいディクショナリ オブジェクトを使用して、プロパティの値を設定する必要があります。以下の 2 つのコード ブロックは、これらの 2 つの方法の違いを示しています。

#Don't attempt to modify the attributeParameters property in place.
#This coding method won't work.

solverProps.attributeParameters[('HeightRestriction', 'RestrictionUsage')] = "PROHIBITED"
#Modify the attributeParameters property using a new dictionary object.
#This coding method works. 

params = solverProps.attributeParameters
params[('HeightRestriction', 'RestrictionUsage')] = "PROHIBITED"
solverProps.attributeParameters = params
ネットワーク解析レイヤにパラメータ化属性がない場合、このプロパティは None を返します。

Dictionary
findBestSequence
(読み書き)

ストップを並べ替えて最適なルートを検索するかどうかを制御します。設定可能な値の一覧を次に示します。

  • FIND_BEST_ORDER(最適な順序を検索)最適ルートを検索するためにストップの順番を並べ替えます。このオプションにより、ルート解析は最短パス問題から巡回セールスマン問題に変わります。値を True に設定することでも、このオプションを指定できます。
  • USE_INPUT_ORDER(入力の順序を使用)入力の順序に従って、ストップを巡回します。値を False に設定することでも、このオプションを指定できます。
String
impedance
(読み書き)

インピーダンスとして使用するネットワーク コスト属性を取得または設定できます。このコスト属性が最小となるように最適なルートが決定されます。

String
orderingType
(読み書き)

findBestSequence プロパティが FIND_BEST_ORDER に設定されているときに、ストップを並べ替える方法を制御します。設定可能な値の一覧を次に示します。

  • PRESERVE_BOTH(両方を維持)入力の順序に従って最初のストップと最後のストップをルートの最初のストップと最後のストップとして維持します。
  • PRESERVE_FIRST(最初を維持)入力の順序に従って最初のストップをルートの最初のストップとして維持します。ただし、最後のストップの並べ替えは自由です。
  • PRESERVE_LAST(最後を維持)入力の順序に従って最後のストップをルートの最後のストップとして維持します。ただし、最初のストップの並べ替えは自由です。
  • PRESERVE_NONE(順序を維持しない)最初のストップと最後のストップを両方とも自由に並べ替えられます。
String
outputPathShape
(読み書き)

解析で出力されるルート フィーチャの形状タイプを取得または設定できます。設定可能な値の一覧を次に示します。

  • TRUE_LINES_WITH_MEASURES(計測値を含む正確なライン)出力ルートはネットワーク ソースの正確な形状を保持します。リニア リファレンスのためのルートのメジャー値が出力に含まれます。メジャー値は、最初のストップから増加し、指定された位置に到着するまでの累積インピーダンスを記録します。
  • TRUE_LINES_WITHOUT_MEASURES(計測値を含まない正確なライン)出力ルートはネットワーク ソースの正確な形状を保持します。
  • STRAIGHT_LINES(直線)出力ルート形状はストップ間を結ぶ 1 本の直線になります。
  • NO_LINES(ラインなし)出力ルートに形状は生成されません。
String
restrictions
(読み書き)

解析時に適用される規制属性のリストを取得または設定できます。空のリスト([])は、解析で使用される規制属性がないことを表します。

String
solverName
(読み取り専用)

解析プロパティ オブジェクトの取得に使用されているネットワーク解析レイヤが参照している解析の名前を返します。このプロパティは、RouteSolverProperties オブジェクトからアクセスされたときに必ず文字列「Route Solver」を返します。

String
timeOfDay
(読み書き)

ルートの開始日時を取得または設定できます。ルートの開始時間は多くの場合、1 日の時刻に応じて変化するインピーダンス属性に基づいたルートの検索に使用されます。たとえば、ラッシュアワーの交通量を考慮したルートの検索では、開始時間として午前 9 時を使用します。値に None を指定すると、日付と時刻は使用されません。

特定の日付を使用する代わりに、次の日付を使用して曜日を指定することができます。

  • 今日 - 1899/12/30
  • 日 - 1899/12/31
  • 月 - 1900/1/1
  • 火 - 1900/1/2
  • 水 - 1900/1/3
  • 木 - 19001/4
  • 金 - 1900/1/5
  • 土 - 1900/1/6

たとえば、ルートを火曜日の午後 5:00 に開始するように指定するには、「datetime.datetime(1900, 1, 2, 17,0,0)」という値を指定します。

DateTime
uTurns
(読み書き)

ストップ間のネットワーク移動中に発生する可能性のあるジャンクションでの U ターンを、解析でどのように処理するかを指定するポリシーを取得または設定できます。設定可能な値の一覧を次に示します。

  • ALLOW_UTURNS(U ターンを許可)任意の数の接続されたエッジを持つジャンクションで U ターンを許可します。
  • NO_UTURNS(U ターンを規制)ジャンクションの結合にかかわらず、すべてのジャンクションで U ターンを禁止します。ただし、この設定が選択されている場合でも、ネットワーク ロケーションでは U ターンが許可されます。同様に、個々のネットワーク ロケーションの CurbApproach プロパティで U ターンを禁止するように設定できます。
  • ALLOW_DEAD_ENDS_ONLY(行き止まりのみ許可)1 つの隣接エッジを持つジャンクション(行き止まり)を除くすべてのジャンクションでの U ターンを禁止します。
  • ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY2 つの隣接するエッジが接するジャンクションでの U ターンを禁止します。ただし、交差点(3 つ以上の隣接エッジを持つジャンクション)および行き止まり(1 つの隣接エッジを持つジャンクション)では U ターンを許可します。ネットワークには、道路セグメントの中間に無関係のジャンクションが存在する場合があります。このオプションは、これらの場所で車両が U ターンすることを防ぎます。
String
useHierarchy
(読み書き)

解析を実行しているときの階層属性の使用を制御します。設定可能な値の一覧を次に示します。

  • USE_HIERARCHY(階層を使用) 階層属性を解析に使用します。階層を使用すると、解析は下位ランクのエッジよりも上位ランクのエッジを優先します。階層解析は、より高速で、運転者が遠回りであっても一般道路の代わりに高速道路を利用する状況をシミュレートするのに使用できます。このオプションは、Network Analyst レイヤが参照しているネットワーク データセットに階層属性がある場合のみ適用されます。値を True に設定することでも、このオプションを指定できます。
  • NO_HIERARCHY(階層を使用しない)階層属性を解析に使用しません。階層を使用しないことで、ネットワーク データセットの正確なルートが検索されます。値を False に設定することでも、このオプションを指定できます。
String
useTimeWindows
(読み書き)

ストップでタイム ウィンドウを使用するかどうかを制御します。設定可能な値の一覧を次に示します。

  • USE_TIMEWINDOWS(タイム ウィンドウを使用)ルートはストップのタイム ウィンドウを考慮します。ストップにタイム ウィンドウ以前に到着した場合、タイム ウィンドウが開始するまで待ち時間が発生します。ストップにタイム ウィンドウ以後に到着した場合、タイム ウィンドウ違反になります。ルート計算時には、タイム ウィンドウ超過時間の合計は最小のインピーダンスになるよう分散されます。このオプションは、impedance プロパティの値に指定されたネットワーク コスト属性の単位が時間である場合にだけ適用されます。値を True に設定することでも、このオプションを指定できます。
  • NO_TIMEWINDOWS(タイム ウィンドウを使用しない)ルートはストップのタイム ウィンドウを無視します。値を False に設定することでも、このオプションを指定できます。
String

コードのサンプル

RouteSolverProperties の例 1(Python ウィンドウ)

次のスクリプトは、インピーダンス プロパティを TravelTime コスト属性に更新し、コスト属性の Minutes と Meters を累積属性として指定して、ルートの開始時間に現在の時間を使用する方法を示しています。San Francisco 地域のチュートリアル データセットに基づいて、新しいマップ ドキュメントに Route という名前のルート ネットワーク解析レイヤが作成されていることを想定しています。

#Get the route layer object from a layer named "Route" in the table of contents
routeLayer = arcpy.mapping.Layer("Route")

#Get the route solver properties object from the route layer
solverProps = arcpy.na.GetSolverProperties(routeLayer)

#Update the properties for the route layer using the route solver properties object
solverProps.impedance = "TravelTime"
solverProps.accumulators = ["Meters", "Minutes"]
#Only set the time component from the current date time as time of day
solverProps.timeOfDay = datetime.datetime.now().time()
RouteSolverProperties の例 2(ワークフロー)

次のスクリプトは、一連のストップ間の最短(距離)ルートと最速(移動時間)ルートを検索し、各ルートをジオデータベースにフィーチャクラスとして保存する方法を示しています。ルート レイヤのインスタンスを 1 つだけ作成し、RouteSolverProperties オブジェクトを使用してインピーダンス プロパティを変更し、目的の結果を得る方法を示しています。

import arcpy

#Set up the environment
arcpy.env.overwriteOutput = True
arcpy.CheckOutExtension("network")

#Set up variables
networkDataset = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
stops = "C:/Data/SanFrancisco.gdb/Analysis/Stores"
fastestRoute = "C:/Data/SanFrancisco.gdb/FastestRoute"
shortestRoute = "C:/Data/SanFrancisco.gdb/ShortestRoute"

#Make a new route layer using travel time as impedance to determine fastest route
routeLayer = arcpy.na.MakeRouteLayer(networkDataset, "StoresRoute",
                                     "TravelTime").getOutput(0)

#Get the network analysis class names from the route layer
naClasses = arcpy.na.GetNAClassNames(routeLayer)

#Get the routes sublayer from the route layer
routesSublayer = arcpy.mapping.ListLayers(routeLayer, naClasses["Routes"])[0]

#Load stops
arcpy.na.AddLocations(routeLayer, naClasses["Stops"], stops)

#Solve the route layer
arcpy.na.Solve(routeLayer)

#Copy the route as a feature class
arcpy.management.CopyFeatures(routesSublayer, fastestRoute)

#Get the RouteSolverProperties object from the route layer to modify the
#impedance property of the route layer.
solverProps = arcpy.na.GetSolverProperties(routeLayer)

#Set the impedance property to "Meters" to determine the shortest route.
solverProps.impedance = "Meters"

#Resolve the route layer
arcpy.na.Solve(routeLayer)

#Copy the route as a feature class
arcpy.management.CopyFeatures(routesSublayer, shortestRoute)

arcpy.AddMessage("Completed")

関連トピック

9/14/2013