ルート解析レイヤー

ルート解析レイヤーでは、ストップ間の最短パスを見つけて 1 つのルートを出力するだけでなく、次の処理を行うこともできます。

  • 複数のストップに指定した順序で訪問するルートを検索します。

    順序の維持

  • ストップの順序を最適化して、全体の移動を削減するルートを検索します。これは、「巡回セールスマン問題」 (Traveling Salesman Problem: TSP) の解析とも呼ばれています。

    順序の最適化

    [ルート] タブの [順序] プロパティでは、ストップの順序を最適化することができます。

  • 1 回の解析で複数のルートを生成します。

    3 つの出力ルート

    RouteName フィールド値を使用してストップを複数のルートにグループ化し、グループごとに 1 つのルートを生成します。

  • 複数のポイントのペア (起点と終点) の移動距離を計測します。

    通勤者全移動距離

    Steven

    19.9

    Annette

    32.4

    Eli

    24.0

    Sharon

    20.7

    一致する RouteName フィールド値を 2 つのストップに割り当てることで、これらのストップがグループ化され、各ペアに 1 つのルートが生成されます。この処理をいくつかのストップのペアに対して実行すると、1 回の解析操作ですべての起点と終点のペアの距離を生成できます。

  • 全体で最速になるルートを検索して、複数のストップ間を午後 1 時から 2 時といった特定の時刻内に訪問します。

    ストップのタイム ウィンドウは、TimeWindowStart および TimeWindowEnd フィールドを使用して設定できます。

このような問題やその他の特殊なルートの問題を解析するには、ルート解析レイヤーのプロパティを設定し、そのルート解析レイヤーを構成するフィーチャクラスのフィールド値を設定します。

以下では、ルート解析レイヤーとその解析プロパティおよびフィーチャクラスについて説明します。

ストップ フィーチャクラス

ストップ フィーチャクラスには、最初に出力ルートで訪問する場所が格納されます。解析の実行後、このフィーチャクラスには、該当するルートで到着した場所、到着しなかった場所 (および到着できなかった理由)、ストップを訪問した順序、その他の情報が格納されます。次の表に、ストップ フィーチャクラスの入力フィールド、入力/出力フィールド、および出力フィールドを示します。

ストップ: 入力フィールド

入力フィールド説明

ObjectID

システムで管理される ID フィールド。

Shape

ネットワーク解析オブジェクトの地理的な位置を示すジオメトリ フィールド。

Name

ストップの名前。

ストップがマップに追加されるときに自動的に割り当てられる編集可能な名前。

RouteName

ストップが属するルートの名前を示します。RouteName 値が同じストップがグループ化されます。

このフィールドを使用すると、ストップを複数のルートにグループ化できます。また、出力では、ストップのグループごとに 1 つのルートの生成が試行されます。

  • ストップの属性にルート名が含まれる場合、ストップは同じ名前を持つルートにグループ化されます。RouteName 値を持つストップと持たないストップがある場合、ルート名を持たないストップは割り当てなしとして結果に一覧表示され、ソリューションに含まれません。
  • RouteName 値を持つストップがない場合は、すべてのストップが同じルートに属し、1 つのルートが生成されます。

TimeWindowStart

このフィールドには、ストップを訪問できる最も早い時刻が格納されます。

TimeWindowStart を午前 10:00 に設定しているときに、ルートがそのストップに到着する時刻が午前 9:50 である場合、合計時間に 10 分の待ち時間が追加されます。

デフォルトでは、ネットワーク データセットにタイムゾーン属性がある場合、このフィールドで指定された日付と時刻は、ストップが配置されているエッジ (道路) と同じタイム ゾーンを参照します。日付と時刻を UTC で解釈するには、ルート解析レイヤーの timeZoneUsageForTimeFields プロパティを Python の RouteSolverProperties クラスを使用して変更します。

タイム ウィンドウ フィールドのタイム ズーンは、[ルート解析レイヤーの作成 (Make Route Analysis Layer)] ジオプロセシング ツールの time_zone_for_time_fields パラメーターを使用して指定できます。

タイム ウィンドウの時間を指定する方法

TimeWindowEnd

このフィールドには、ストップを訪れることができる最も遅い時刻が格納されます。

TimeWindowStart フィールドと TimeWindowEnd フィールドを組み合わせて、ルートがストップを訪問できるタイム ウィンドウを設定します。

ロケーションの TimeWindowEnd の値が午前 11:00 に設定されているときに、ルートがそのストップに到達できる最も早い時刻が午前 11:25 である場合は、25 分の超過時間が報告されます。また、ストップのシンボル表示により、タイム ウィンドウの違反があることが示されます。

デフォルトでは、ネットワーク データセットにタイムゾーン属性がある場合、このフィールドで指定された日付と時刻は、ストップが配置されているエッジ (道路) と同じタイム ゾーンを参照します。日付と時刻を UTC で解釈するには、ルート解析レイヤーの timeZoneUsageForTimeFields プロパティを Python の RouteSolverProperties クラスを使用して変更します。

タイム ウィンドウ フィールドのタイム ズーンは、[ルート解析レイヤーの作成 (Make Route Analysis Layer)] ジオプロセシング ツールの time_zone_for_time_fields パラメーターを使用して指定できます。

タイム ウィンドウの時間を指定する方法

Attr_[Cost]

(たとえば、Minutes 属性が移動コストである場合は「Attr_Minutes」となります)

このフィールドは、ストップで要する追加時間や移動距離を指定します。

フィールドの単位を決定するには、フィールド名で指定されたネットワーク コスト属性の単位を参照します。たとえば、単位が分の DriveTime コスト属性がある場合、Attr_DriveTime の単位は分になります。

値がゼロまたは NULL の場合、ストップにサービス時間や余分な移動距離が必要ないことを示しています。

配達、機器の設置、またはストップでのその他のタスクに要する時間を表すために、ストップで時間を追加したい場合があります。同様に、ネットワーク データセットで表現されない車道やその他の道路が考慮されるように、距離を余分に追加しておくと有効な場合があります。

複数のネットワーク コスト属性がある場合は、複数の Attr_[Cost] フィールドが表示されます。このため、複数の時間または距離ベースの Attr_[Cost] フィールドが存在する場合があります。入力したフィールド値が参照されるのは、このフィールド名で参照されるコスト属性が時間や距離の最小化や累積などの目的に解析で使用される場合に限ります。

ネットワーク ロケーション フィールド

  • SourceID
  • SourceOID
  • PosAlong
  • SideOfEdge
  • SnapX
  • SnapY
  • SnapZ
  • DistanceToNetworkInMeters

これらのプロパティを組み合わせて、オブジェクトが配置されているネットワーク上のポイントを表します。

ネットワーク上での入力の特定の詳細

CurbApproach

CurbApproach フィールドには、車両がネットワーク ロケーションに到着する方向およびネットワーク ロケーションから出発する方向を指定します。2 つの地点の間の最短パスは、到着または出発するときに許可されている移動の方向によって異なります。このプロパティには 4 つの値を設定できます (それぞれのコード値は括弧内に示されています)。

  • Either side of vehicle (0) - その地点において、車両はどちらの方向でも到着および出発できます。U ターンは許可されます。車両がその場所で U ターンできる場合または車道や駐車場で方向転換できる場合は、この設定を選択します。
  • Right side of vehicle (1) - 車両がその地点に到着するとき、およびその地点から出発するとき、縁石は車両の右側にある必要があります。U ターンは許可されません。
  • Left side of vehicle (2) - 車両がその地点に到着するとき、およびその地点から出発するとき、縁石は車両の左側にある必要があります。U ターンは許可されません。
  • No U-Turn (3) - 車両がその地点に到着するときはどちらの側でも到着できますが、方向転換せずに出発する必要があります。
U ターンとアプローチ制限の詳細

LocationType

このフィールドは、ストップ タイプを説明します。

  • [ストップ] (0) - ルートで訪問する必要がある場所を表します。これがデフォルトです。
  • [ウェイポイント] (1) - ストップが作成されなくてもルートで通過する必要のある場所を表します。通過地点を使用すると、実際のストップと見なされずに (ウェイポイントを通過する) 特定のパスを使用するようにルートを強制できます。通過地点はルート案内には表示されません。
  • [休憩地点] (2) - 運転手が休憩を取るために停止するルートの場所を表します。

注意:
タイム ウィンドウは、Attr_Cost がいつ完了しなくてはならないのかを示すのではなく、車両がいつストップに到達可能であるかを示すだけです。サービス時間を考慮に入れ、タイム ウィンドウが終了する前に退去するには、Attr_ フィールドから TimeWindowEndCost を引き算します。

タイム ウィンドウの詳細

ストップ: 入力/出力フィールド

入力/出力フィールド説明

Sequence

入力フィールドとして、この番号は、ストップを巡回する順序を表します。[ルート] タブの [順序] パラメーターを使用すると、出力ルートがこのフィールドに指定された順序をたどるか、この順序を無効にして、後戻りを極力少なくした最適な順序を生成するかを指定できます。

(RouteName フィールド値が同じストップの) ルート内では、シーケンス番号は 0 より大きく、ルート内でグループ化されたストップの総数以下である必要があります。また、シーケンス番号は、RouteName フィールド値が同じストップ間で重複してはなりません。

Status

このフィールドは、その地点のステータスを示します。ステータスは解析実行後に変化することがあります。このフィールドの値は、次に示す値のドメインによって制約されます (それぞれのコード値は括弧内に示されています)。

  • OK (0) - 地点が有効です。
  • Not located (1) - 地点がネットワーク上で正常に特定されませんでした。
  • Network element not located (2) - その地点のネットワーク ロケーション フィールドによって特定されるネットワーク エレメントが見つかりません。これは、その地点があるはずのネットワーク エレメントが削除され、ネットワーク ロケーションが再計算されなかった場合に発生する可能性があります。

解析の実行が終了したら、ステータスを次のいずれかのステータス値に変更できます。

  • OK (0) - ネットワーク ロケーションは正常に評価されました。
  • Element not traversable (3) - 地点があるネットワーク エレメントは通過不能です。この状態は、規制属性によってネットワーク エレメントが規制されている場合に発生する可能性があります。
  • Invalid field values (4) - 1 つまたは複数の地点のフィールド値が、解析レイヤーのコード値ドメインまたは範囲ドメインから外れています。たとえば、正の数値が必要な場合に負の数値が存在しています。
  • Not reached (5) - 解析によってその地点に到着できません。他の入力から切り離された別個のネットワーク領域にその地点が存在するか、バリアまたは制限によってその地点との往来が禁止されています。
  • Time window violation (6) - 指定されたタイム ウィンドウ内にその地点に到着できませんでした。このステータスは、タイム ウィンドウをサポートする解析タイプにのみ適用されます。
  • Not located on closest (7) - 規制またはバリアがあるため、その地点に最も近いネットワーク ロケーションを通過できません。これにより、代わりに最も近い通過可能なネットワーク フィーチャ上にその地点が配置されています。

ストップ: 出力フィールド

出力フィールド説明

ArriveCurbApproach

車両がストップに到着するときに、アプローチを車両のどちら側に制限するかを表します。ストップの CurbApproach の値が [車両の右側] に設定されている場合、解析後の ArriveCurbApproach は [車両の右側] になります。一方、CurbApproach の値が [車両の両側] または [U ターンを許可しない] に設定されている場合、ArriveCurbApproach はパス全体が最短となるように右側または左側のどちらかに決定されます。

DepartCurbApproach

車両がストップから出発するときに、アプローチを車両のどちら側に制限するかを表します。ネットワーク ロケーションの CurbApproach の値が [車両の右側] に設定されている場合、解析後の DepartCurbApproach は [車両の右側] になります。一方、CurbApproach の値が [車両の両側] または [U ターンを許可しない] に設定されている場合、DepartCurbApproach はパス全体が最短となるように右側または左側のどちらかに決定されます。

Cumul_[Cost]

(たとえば、Minutes 属性がネットワークのコストの場合は「Cumul_Minutes」となります)

このフィールドは、ストップに到着するまでに要する合計の時間、距離、その他の移動コストです。これには、ストップに到達するまでの移動コスト、ストップのコスト、およびそれ以前のすべてのストップのコストが含まれます。

ルート解析レイヤーで、2 つのストップを訪問するのに 10 分かかり、2 番目のストップの Attr_Minutes の値が 5 の場合、Cumul_Minutes の値は 15 分になります。

Wait_[Cost]

(たとえば、Minutes 属性が移動コストの場合は「Wait_Minutes」となります)

このフィールドには、ルートがストップに早く到着した場合にタイム ウィンドウが開始する (TimeWindowStart) のを待つのに費やされる時間が格納されます。

CumulWait_[Cost]

(たとえば、Minutes 属性が移動コストの場合は「CumulWait_Minutes」となります)

このフィールドには、タイム ウィンドウが開始する (TimeWindowStart) のを待つのに費やされた時間の合計が格納されます。待ち時間が計測されます。これには、ルートが訪れた現在のストップとそれ以前のすべてのストップでの待ち時間が含まれます。

Violation_[Cost]

このフィールドは、タイム ウィンドウが終了した (TimeWindowEnd) 後にルートがどれほど遅く到着したかを示します。具体的には、これには、タイム ウィンドウの終了時刻からルートがストップに到着した時刻までの時間が格納されます。

CumulViolation_[Cost]

このフィールドには、ルートが訪れた現在のストップとそれ以前のすべてのストップの累積超過時間 (Violation_Cost) が格納されます。

ArriveTime

ストップに到着した時刻を示す日時の値。

複数のタイム ゾーンにまたがる交通量データを使用するとき、この時間値のタイム ゾーンは訪問先が配置されているネットワーク エレメントから取得されます。

DepartTime

ストップからの開始時刻を示す日時の値。

複数のタイム ゾーンにまたがる交通量データを使用するとき、この時間値のタイム ゾーンは訪問先が配置されているネットワーク エレメントから取得されます。

ArriveTimeUTC

ストップに到着した時刻を UTC (世界協定時) で示す日時の値。

DepartTimeUTC

ストップからの開始時刻を UTC (世界協定時) で示す日時の値。

ルート フィーチャクラス

ルート フィーチャクラスには、解析の結果として得られたルート (複数の場合もあります) が格納されます。出力専用クラスの場合、ルート解析レイヤーは解析の実行中にルート フィーチャを上書きまたは削除します。次の表に、ルート フィーチャクラスの出力フィールドを示します。

ルート: 出力フィールド

出力フィールド説明

ObjectID

システムで管理される ID フィールド。

Name

ルートの名前は、ルート レイヤーを解析するときに、ストップ フィーチャクラスの RouteName フィールドから値を読み取るか、その値が NULL の場合はルート内の最初のストップの名前と最後のストップの名前を統合して (例: ストップ 1 – ストップ 8)、自動的に割り当てられます。

Shape

ネットワーク解析オブジェクトの地理的な位置を示すジオメトリ フィールド。

FirstStopID

ルートの最初のストップの ObjectID

LastStopID

ルートの最後のストップの ObjectID

StopCount

ルートによって訪問されたストップ数。

Total_[Cost]

(たとえば、Total_Minutes 属性がネットワークの移動コストである場合は「Minutes」となります)

最初のストップの開始から最後のストップの終了までの合計の距離、時間、その他の移動コスト。この値には、訪問したストップの合計移動コストおよび Attr_Cost が取り込まれます。

TotalWait_[Cost]

(たとえば、TotalWait_Minutes 属性がネットワークの移動コストである場合は「Minutes」となります)

このフィールドには、ルートの全体の待機時間が格納されます。ルートの全体の待機時間とは、タイム ウィンドウの開始までストップで待機した時間のことです。

TotalViolation_[Cost]

(たとえば、TotalViolation_Minutes 属性がネットワークの移動コストである場合は「Minutes」となります)

このフィールドには、ストップにおけるルートの全体の時間超過が格納されます。タイム ウィンドウが終了した後でルートがストップに到着すると、時間超過が追加されます。これは、ArriveTimeTimeWindowEnd との差です。

StartTime

ルートの開始時間です。

EndTime

ルートの終了時間です。

StartTimeUTC

ルートの開始時刻 (UTC (世界協定時))。

EndTimeUTC

UTC (協定世界時) でのルートの終了時刻。

ルート解析レイヤーのプロパティ

解析レイヤーで設定できるパラメーターを以下に示します。これらは [ルート] タブにあり、[コンテンツ] ウィンドウでルート レイヤーまたはそのサブレイヤーのいずれか 1 つが選択されている場合のみ使用できます。

[ルート] タブ

実行

[実行] 実行[解析] グループ内にあります。入力フィーチャを読み込み、解析プロパティを設定した後にクリックすると、ルート解析を実行します。

ストップのインポート

[ストップのインポート] ストップのインポート[入力データ] グループ内にあります。クリックすると、ポイント フィーチャ レイヤーなどの別のデータ ソースからストップ フィーチャクラスにフィーチャを読み込みます。

バリアのインポート

[ポイント バリアのインポート] ポイント バリアのインポート[ライン バリアのインポート] ライン バリアのインポート、または [ポリゴン バリアのインポート] バリアのインポート をクリックすると、別のフィーチャ レイヤーなどの別のデータ ソースから、バリア フィーチャクラス (ポイント バリア、ライン バリア、またはポリゴン バリア) の 1 つにフィーチャを読み込みます。

フィーチャ作成

[フィーチャ作成] ボタン フィーチャ作成 をクリックして [フィーチャ作成] ウィンドウを開きます。利用可能なテンプレートを選択して現在のマップにフィーチャを作成します。

モード

[モード] ドロップダウン リストを使用すると、移動モードを選択できます。移動モードは、歩行者、車、トラック、その他の移動モードの移動をまとめてモデリングする設定のグループです。このドロップダウン リストで選択できる項目は、ネットワーク解析レイヤーが参照しているネットワーク データ ソースに対して構成されている移動モードによって異なります。

順序

ルート解析では常に、2 つのストップ間の最短経路が検出されます。ただし、後戻りを極力少なくした最適なストップ順序を算出するように Network Analyst を設定して、ルート全体を短くすることもできます。ストップ順序の最適化は、「TSP」とも呼ばれます。

[順序] では、次の各オプションを使用して、すべてのストップ順序を維持するか、一部のストップ順序を維持するか、どのストップ順序も維持しないかを選択できます。

  • [現在の設定を使用] 現在の設定を使用 - 各ストップの Sequence フィールドに指定された相対的なストップ順序を維持します。

    Sequence フィールドに NULL 値が指定されているストップはいずれも、NULL 以外の値が指定されているストップの後に挿入されます。

  • [最適な順序を検索] 最適な順序を検索 - どのストップの順序も維持しません。つまり、任意のストップ ロケーションがルートの起点になります。考えられる最短経路を検出する際に、すべてのストップの順序が変更されます。

  • [最初と最後のストップを維持] 最初と最後のストップを維持 - 最初のストップがルートの起点になり、最後のストップがルートの終点になります。考えられる最短経路を検出する際に、中間ストップの順序が変更されます。

    Sequence フィールドに NULL 値と NULL 以外の値がどちらも指定されている入力ストップの場合は、NULL 以外の値の最小値が指定されているストップがルートの起点になり、NULL 値が指定されているフィーチャクラス内の最後のストップがルートの終点になります。

  • [最初のストップを維持] 最初のストップを維持 - 最初のストップがルートの起点になります。考えられる最短経路を検出する際に、後続ストップの順序が変更されます。

    Sequence フィールドに NULL 値と NULL 以外の値がどちらも指定されている入力ストップの場合は、NULL 以外の値の最小値が指定されているストップがルートの起点になり、それ以降のストップをたどります。後続ストップでは、NULL 値が指定されているか NULL 以外の値が指定されているかに関係なく、最適な順序変更が行われます。

  • [最後のストップを維持] 最後のストップを維持 - 最後のストップがルートの終点になります。考えられる最短経路を検出する際に、先行ストップの順序が変更されます。

    Sequence フィールドに NULL 値と NULL 以外の値がどちらも指定されている入力ストップの場合は、NULL 値が指定されているフィーチャクラス内の最後のストップがルートの終点になります。すべての先行ストップでは、NULL 値が指定されているか NULL 以外の値が指定されているかに関係なく、最適な順序変更が行われます。

日時

[到着/出発の日時タイプ] ドロップダウン リストは、[日時] グループにあり、コストの単位が時間ベースの場合に使用できます。このドロップダウン リストでは、ルートが最初のストップを出発する時間を表す特定の日付と時刻の値を指定するかどうかを選択できます。特定の日付と時刻を設定する主な目的は、変動する交通状況または公共交通機関のスケジュールを利用して解析を実行することです。ただし、解析で交通量または公共交通機関を使用する場合は、ネットワーク データセットまたはルート サービスに交通量データまたは公共交通機関を含める必要があります。

ドロップダウン リストでは次のオプションが選択できます。

  • [時間を使用していません] - ネットワーク データ ソースに時間ベースのデータが含まれているかどうかに関係なく、結果は静的な移動時間に基づきます。ネットワーク エッジ上の移動時間は、1 日を通して変動しません。[時刻][日付] テキスト ボックスは使用できません。

  • [日時] - 開始時間を時刻とカレンダー日付で指定します。この情報を入力できるように、[時刻][日付] テキスト ボックスが使用可能になります。

  • [曜日] - 時刻と曜日を指定します。この情報を入力できるように、[時刻][日付] テキスト ボックスが使用可能になります。曜日を設定するには、次のいずれかの値を [日付] テキスト ボックスに入力します:

    • 月曜日
    • 火曜日
    • 水曜日
    • 木曜日
    • 金曜日
    • 土曜日
    • 日曜日

  • [今日] - 時刻を指定します。日付は現在の日付になります。時刻を入力できるように、[時刻] テキスト ボックスが使用可能になります。[日付] テキスト ボックスは [今日] に設定され、変更できないように無効になります。

  • [現在の日時] - 解析を実行する際に、日付と時刻が現在の日付と時刻に設定されます。これは、ネットワーク データセットにライブ交通量データが構成されており、解析を実行した直後に取り込まれるルートがドライバーに配信される場合に便利です。[時刻][日付] テキスト ボックスは変更できないように無効になります。

[基準タイム ゾーン]ドロップダウン リストでは、解析で使用するタイム ゾーンを選択できます。次のようなオプションがあります。

  • ロケーションのローカル タイム
  • UTC (世界協定時)

出力ジオメトリの線形形状タイプ

このコントロールを使用すると、出力をマップに表示する方法を選択できます。ルート解析では、常に、ネットワークに沿って最小コストパスが、指定した設定を使用して解析されますが、ネットワークに沿ってこれらの実際のパスをマップ上に表示する以外に、ストップ間で単純な直線を使用してマップ上にルートを表示することも、ラインなしを選択することもできます。

  • [ラインなし] - 出力の線形形状は生成されません。
  • [直線] - 簡略化されたジオメトリを直線として出力します。
  • [ネットワーク沿い] - マップ上のネットワーク沿いに真のパスを生成します。

コスト属性の累積

[移動モード] グループの [コスト属性の累積] ドロップダウン メニューを使用して、累積するコスト属性を構成できます。ネットワーク データ ソースがサービスの場合、出力ジオメトリ タイプにラインが含まれない場合、またはコスト属性が存在しない場合、このドロップダウン メニューは使用できません。属性は、グループ ヘッダーとして示される単位ドメインごとにグループ化されます ([時間][距離] など)。チェックボックスがオンの場合、解析時に解析レイヤーがこのオンになっている属性を累積します。

[コスト属性の累積] ドロップダウン メニュー

同じレイヤー タイプの複数の解析レイヤーが選択されている場合、すべてのレイヤーが 1 つの属性に対して同一のオンになったステータスを共有しているのでなければ、チェックボックスは混合状態を示します。次の画像では、[WeekendFallbackTravelTime] 属性が複数のレイヤーに対して選択されているため、ここにはチェック マークがあります。

混合状態を示すチェック マーク

選択したレイヤーが 1 つの属性に対してオンになったステータスを共有している場合、チェックボックスはその状態を示します。

チェックボックスは属性に対してオンになっています。

ルート案内

  • [解析時の出力] - 現在のネットワーク解析レイヤーに対して、解析時にルート案内を生成する場合はオンにします。
  • [ルート案内の表示] ルート案内 - [解析時の出力] オプションがオンの場合、[ルート案内の表示] オプションをクリックすると、[ルート案内] ウィンドウに解析内の各ルートのルート案内が表示されます。

ルート レイヤーとして共有 (Share As Route Layers)

[共有] グループの [ルート レイヤー] ボタン ルート レイヤーとして共有 を使用して、解析の結果をルート レイヤーとして共有できます。このボタンをクリックすると、[ルート レイヤーとして共有 (Share as Route Layers)] ジオプロセシング ツールが開きます。ツールが正常に実行されると、解析の結果が、ポータルでルート レイヤー アイテムとして共有されます。