演習 8: 訪問先ペアへの最適なルートを検索
この演習の目的は、複数のワゴン車を利用し、他に移動手段がない患者を自宅から病院へ搬送する際の最適なルートを検索することです。そのためには、訪問先ペアを使用して配車ルート(VRP)解析を実行します。つまり、2 つの訪問先(ストップ)を関連付け、ワゴン車で乗客を迎えに行き、それぞれの目的地まで搬送できるようにします。さらに、配車ルート解析レイヤの他の機能を使用して、追加の要件が満たされるようにします。たとえば、訪問先ペアの最大走行時間を入力し、乗客の移送に時間がかかりすぎないようにします。訪問先に時間制限を設け、乗客が病院の予約に遅れないようにします。車椅子を使用する乗客のために、特別指定を使用して、車椅子リストを備えたワゴン車を使用できるようにします。送迎ルートが決定したら、そのルートの詳細な案内図を作成し、各運転手に電子的に配布するか、印刷して渡します。
解析の準備
- ArcMap ですでに Exercise08.mxd を開いている場合は、ステップ 6 に進みます。
- [スタート] → [すべてのプログラム] → [ArcGIS] → [ArcMap 10] の順にクリックして、ArcMap を起動します。
-
[ArcMap - はじめに] ダイアログ ボックスで、[既存のマップを開く] → [詳細検索] の順にクリックします。
[ArcMap ドキュメントを開く] ダイアログ ボックスが表示されます。
-
Browse to C:\ArcGIS\ArcTutor\Network Analyst\Tutorial.
これはチュートリアル データが格納されているデフォルトの場所です。
-
Exercise08.mxd をダブルクリックします。
ArcMap にマップ ドキュメントが表示されます。
-
Network Analyst エクステンションの有効化
-
[カスタマイズ] → [エクステンション] の順にクリックします。
[エクステンション] ダイアログ ボックスが開きます。
- [Network Analyst] チェックボックスをオンにします。
- [閉じる] をクリックします。
-
[カスタマイズ] → [エクステンション] の順にクリックします。
-
[カスタマイズ] → [ツールバー] → [Network Analyst] の順に選択します。
[Network Analyst] ツールバーが ArcMap に追加されます。
-
[Network Analyst] ツールバーで、[Network Analyst ウィンドウの表示/非表示] ボタン をクリックします。
ドッキング可能な Network Analyst ウィンドウが開きます。
[Network Analyst] ツールバーが表示されていない場合は、このツールバーを追加してください。
Network Analyst ウィンドウが表示されていない場合は、このウィンドウを追加してください。
Network Analyst ウィンドウはドッキング/ドッキング解除できます。この演習では、コンテンツ ウィンドウの下にドッキングされています。
配車ルート解析レイヤの作成
-
[Network Analyst] ツールバーの [Network Analyst] をクリックし、[新規配車ルート解析] をクリックします。
Network Analyst ウィンドウに新規配車ルート解析レイヤが追加されます。ネットワーク解析クラス(訪問先、拠点、ルート、拠点立ち寄り状況、休憩、ルート ゾーン、ルート シード ポイント、ルート リニューアル、特別指定、訪問先ペア、ポイント バリア、ライン バリア、およびポリゴン バリア)は空です。
この解析レイヤはコンテンツ ウィンドウにも追加されます。
車種指定の追加
この送迎会社は 3 台のワゴン車を所有しています。その中の 1 台は中心街を運行し、車椅子用の装備が付いています。ここでは、特別指定として車椅子を追加し、この特別指定を必要とする訪問先を車椅子リフト装備のルートに割り当てられるようにします。
-
Network Analyst ウィンドウで [特別指定(0)] を右クリックし、[アイテムの追加] を選択します。
Network Analyst ウィンドウの [特別指定] クラスに、新しい特別指定(アイテム 1)が追加されます。新しい特別指定の [プロパティ] ウィンドウが開きます。
-
[プロパティ] ウィンドウで、[名前] の値として「Wheelchair」と入力します。
- [OK] をクリックします。
訪問先の追加
このチュートリアル データにはスプレッドシートが用意されており、患者の氏名、自宅住所、通院している病院の名前と住所、迎えに行く時間帯など、各患者に関する詳細情報が記録されています。このスプレッドシートのフィールドとその内容は次のとおりです。
属性 |
説明 |
---|---|
OrderName1 |
送迎を必要とする患者の名前 |
PatientAddress |
患者を車に乗せる場所 |
OrderName2 |
目的地の一意な名前 |
HospitalAddress |
患者が予約している病院の場所 |
PickFrom |
PatientAddress に患者を迎えに行く最早時刻 |
PickTo |
PatientAddress に患者を迎えに行く最遅時刻 |
TotalPassengers |
迎えに行く合計乗客数 |
MaxTransitTime |
患者がワゴン車で移動する最長時間 |
SpecialtyNames |
乗客が必要とする特別指定(車椅子など) |
この場合、乗客はそれぞれ決められた病院へ行く必要があるので、乗客と病院訪問は相互に関連しています。この状況をモデリングするには、患者ロケーションと病院ロケーションの両方を「訪問先」ネットワーク解析クラスに読み込み、新しい訪問先ペア オブジェクトを使用してそれらを関連付けます。
ここでは、患者と病院の住所をジオコーディングし、その結果得られるポイントを訪問先として読み込みます。
-
[ファイル] → [データの追加] → [ジオコーディング] → [住所のジオコーディング] の順にクリックします。
[使用する住所ロケータを選択] ダイアログ ボックスが開きます。
- [SanFranciscoLocator] をクリックします。
SanFranciscoLocator は Exercise08.mxd で追加します。
-
[OK] をクリックします。
[住所のジオコーディング: SanFranciscoLocator] ダイアログ ボックスが開きます。
-
[住所テーブル] ドロップダウン リストの横にある参照ボタン をクリックします。
[住所を含むテーブルを選択] ダイアログ ボックスが開きます。
-
[場所] ドロップダウン リストをクリックし、[ホーム - Tutorial] を選択します。
追加するテーブルは、ArcGIS Network Analyst チュートリアル データに含まれている Excel スプレッドシートに保存されます。
- OrderPairs.xls をダブルクリックします。
-
[Patients$] をダブルクリックします。
Patients ワークシートが [住所テーブル] ドロップダウン リストに追加されます。
- [Street or Intersection] ドロップダウン リストから [PatientAddress] を選択します。
-
[出力シェープファイルまたはフィーチャクラス] テキスト ボックスの横にある参照ボタン をクリックします。
Exercise08.mxd のホーム位置に [データの保存] ダイアログ ボックスが開きます。
- [場所] ドロップダウン リストをクリックし、[ホーム- Tutorial] を選択します。
-
[ファイルの種類] ドロップダウン リストをクリックし、[ファイル/パーソナル ジオデータベース フィーチャクラス] を選択します。
ファイルおよびワークスペースのリストが更新されます。
- [SanFrancisco.gdb] をダブルクリックします。
-
[名前] テキスト ボックスの名前を削除して、「Patients」と入力します。
「Patients」は出力フィーチャクラスの名前です。
-
[保存] をクリックします。
[住所のジオコーディング: SanFranciscoLocator] ダイアログ ボックスの [出力シェープファイルまたはフィーチャクラス] テキスト ボックスが更新され、新しい出力パスが表示されます。
-
[OK] をクリックします。
[住所をジオコーディングしています] ダイアログ ボックスが開き、15 件の住所が一致したことが示されます。
-
[閉じる] をクリックします。
ジオコーディングした住所が、ポイント フィーチャクラス(ジオコーディング結果: Patients)としてマップ ドキュメントに追加されます。
-
ステップ 1 ~ 16 を繰り返して、患者を送り届ける病院を読み込みます。ただし、今回は次のように設定します。
- ステップ 8 で、[Street or Intersection] を [HospitalAddress] に設定します。
-
ステップ 13 で、[名前] テキスト ボックスに「DestinationHospitals」と入力します。
これで、コンテンツ ウィンドウに 2 つのフィーチャ レイヤ(ジオコーディング結果: DestinationHospitals とジオコーディング結果: Patients)が追加されました。
- コンテンツ ウィンドウでこれら 2 つのジオコーディング結果をオフにして、マップに表示されないようにします。
-
Network Analyst ウィンドウで [訪問先(0)] を右クリックし、[ロケーションの読み込み] を選択します。
[ロケーションの読み込み] ダイアログ ボックスが表示されます。
- [読み込み] ドロップダウン リストから [ジオコーディング結果: Patients] を選択します。
-
[ロケーション解析プロパティ] セクションに表示されるプロパティを設定して、「ジオコーディング結果: Patients」レイヤのフィールド値が次のようにコピーされるようにします(次の図ではこれらの変更がハイライトで表示されています)。
- Name プロパティを OrderName1 フィールドに関連付けます。
- Description プロパティを PatientAddress フィールドに関連付けます。
- TimeWindowStart1 プロパティを PickFrom フィールドに関連付けます。
- TimeWindowEnd1 プロパティを PickTo フィールドに関連付けます。
- PickupQuantities プロパティを TotalPassengers フィールドに関連付けます。
- [SpecialtyNames] フィールドの内容が [SpecialtyNames] プロパティに自動的に適用されるようになっていることを確認します。
-
[ServiceTime] プロパティの [デフォルト値] に「2」を入力します。
読み込んだすべての患者住所ロケーションに ServiceTime 値 2 が適用されます。これは、患者がワゴン車に乗り込むときの平均時間(分単位)を表します。
-
[MaxViolationTime1] プロパティの [デフォルト値] に「0」を入力します。
すべての MaxViolationTime1 プロパティをゼロに設定することで、指定の時間内に訪問先を訪問できるルートのみが検索されます。
-
[OK] をクリックします。
15 件の訪問先が読み込まれ、マップ上および Network Analyst ウィンドウに表示されます。
-
Network Analyst ウィンドウで [訪問先(15)] を右クリックし、[ロケーションの読み込み] を選択します。
[ロケーションの読み込み] ダイアログ ボックスが表示されます。
- [読み込み] ドロップダウン リストから [ジオコーディング結果: DestinationHospitals] を選択します。
-
[ロケーション解析プロパティ] セクションに表示されるプロパティを設定して、「ジオコーディング結果: DestinationHospitals」レイヤのフィールド値が次のようにコピーされるようにします。(次の図ではこれらの変更がハイライトで表示されています)。
-
Name プロパティを OrderName2 フィールドに関連付けます。
[名前] 属性の値は、訪問先ネットワーク解析クラスで一意にする必要があります。この場合は、同じ病院に送迎する患者が多くいるため、訪問先の [Name] 属性の値に病院の住所を使用すると、[Name] 属性の値が重複するため、配車ルート解析でエラー メッセージが返されます。
- Description プロパティを HospitalAddress フィールドに関連付けます。
- DeliveryQuantities プロパティを TotalPassengers フィールドに関連付けます。
- [SpecialtyNames] フィールドの内容が [SpecialtyNames] プロパティに自動的に適用されるようになっていることを確認します。
-
Name プロパティを OrderName2 フィールドに関連付けます。
-
[ServiceTime] プロパティの [デフォルト値] に「2」を入力します。
-
[OK] をクリックします。
Network Analyst ウィンドウの [訪問先] ネットワーク解析クラスの下に 30 件の訪問先が追加され、配車ルート解析レイヤのマップにそれらが訪問先として表示されます。
次のステップでは、これらのレイヤを「訪問先」ネットワーク解析クラスに読み込みます。
[ロケーションの読み込み] ダイアログ ボックスの [ロケーション解析プロパティ] セクションでは、「ジオコーディング結果: Patients」レイヤのどの属性の値を使用して、この配車ルート解析を実行するかを指定できます。
訪問先ペアの追加
患者を決められた病院へ送り届ける必要があります。「訪問先ペア」ネットワーク解析クラスにオブジェクトを追加することで、患者の搬送先の病院や、搬送中にワゴン車に乗っていられる最大時間を指定する情報を追加できます。
-
Network Analyst ウィンドウで [訪問先ペア(0)] を右クリックし、[ロケーションの読み込み] を選択します。
[ロケーションの読み込み] ダイアログ ボックスが表示されます。
- [読み込み] ドロップダウン リストの横にある参照ボタン をクリックします。
-
[場所] ドロップダウン リストをクリックし、[ホーム - Tutorial] を選択します。
追加するテーブルは、Network Analyst チュートリアル データに含まれている Excel スプレッドシートに保存されます。
- OrderPairs.xls をダブルクリックします。
-
[Patients$] をダブルクリックします。
[ロケーションの読み込み] ダイアログ ボックスの [読み込み] ドロップダウン リストに Patients テーブルが追加されます。
-
[ロケーション解析プロパティ] セクションに表示されるプロパティを設定して、Patients$ テーブルのフィールド値が次のようにコピーされるようにします。
- FirstOrderName プロパティを OrderName1 フィールドに関連付けます。
- SecondOrderName プロパティを OrderName2 フィールドに関連付けます。
- [MaxTransitTime] フィールドの内容が [MaxTransitTime] プロパティに自動的に適用されるようになっていることを確認します。
-
[OK] をクリックします。
Network Analyst ウィンドウの [訪問先ペア] ネットワーク解析クラスに、15 件の訪問先ペアが表示されます。
拠点の追加
この送迎会社では 3 か所を拠点としてワゴン車を運行します。これらの拠点のロケーションは、ArcMap の CentralDepots レイヤに表示されます。ここでは、これらのポイント フィーチャを拠点ネットワーク解析クラスに追加します。
-
Network Analyst ウィンドウで [拠点(0)] を右クリックし、[ロケーションの読み込み] を選択します。
[ロケーションの読み込み] ダイアログ ボックスが表示されます。
- [読み込み] ドロップダウン リストから [CentralDepots] を選択します。
-
[ロケーション解析プロパティ] セクションで、[Name] プロパティと [Name] フィールドが自動的に関連付けられることを確認します。
-
[OK] をクリックします。
Network Analyst ウィンドウの [拠点] ネットワーク解析クラスに 3 つの拠点が追加され、マップの配車ルート解析レイヤにそれらの拠点が表示されます。
ルートの追加
この送迎会社は 3 台のワゴン車を所有しており、いずれも乗車定員は 6 人です。送迎用ワゴン車は拠点を出発し、すべての送迎が終了したら拠点に戻ります。3 台のうち 1 台のワゴン車は中心街を運行し、車椅子用のリフトが装備されています。
ここでは、3 本のルート(各ワゴン車に 1 本のルート)を追加し、中心街運行ワゴン車のプロパティでは特別指定として車椅子を設定します。
-
Network Analyst ウィンドウで [ルート(0)] を右クリックし、[アイテムの追加] を選択します。
「ルート」ネットワーク解析クラスに新しいルート(アイテム 1)が追加され、このルートの [プロパティ] ウィンドウが表示されます。
-
[プロパティ] ウィンドウで、以下の表に従ってルートの属性を指定します。その他の属性ではデフォルト値を使用します。この表の「説明」列には、属性値についての説明が記載されています。
属性
値
説明
Name
Downtown
ルートの名前。
StartDepotName
Downtown Depot
送迎ワゴン車が出発する拠点。この場合は Downtown エリアの拠点になります。
EndDepotName
Downtown Depot
ルート送迎の終了後にワゴン車が戻る拠点。この場合は Downtown エリアの拠点になります。
Capacities
6
送迎ワゴン車の乗車定員。この場合は最大 6 人です。
SpecialtyNames
Wheelchair([Wheelchair] を値として設定)
送迎ワゴン車の装備。この場合は、車椅子用の装備になります。
-
[OK] をクリックします。
Downtown という名前の新規ルートが Network Analyst ウィンドウに表示されます。
-
ステップ 1 ~ 3 を繰り返して、North Bay エリアと East Bay エリアを運行する送迎ワゴン車のルートを追加します。これら 2 つの新規ルートについては、(ステップ 2 に記載されているプロパティではなく)次の行に従ってプロパティを設定してください。
属性
値
Name
North Bay
StartDepotName
North Bay Depot
EndDepotName
North Bay Depot
Capacities
6
属性
値
Name
East Bay
StartDepotName
East Bay Depot
EndDepotName
East Bay Depot
Capacities
6
これらのワゴン車には車椅子用の装備は付いていません。
Network Analyst ウィンドウの [ルート] ネットワーク解析クラスに 3 つのルート オブジェクトが表示されます。
ルート ゾーンの追加
この送迎会社で使用している 3 台のワゴン車は、訪問先を巡回できるエリアが決められています。ここでは、ルート ゾーンを追加し、それらをワゴン車/ルートに関連付けます。
- Network Analyst ウィンドウで [ルート ゾーン(0)] を選択します。
- [Network Analyst] ツールバーの [ネットワーク ロケーションの作成] をクリックします。
-
マップ画面上で、次のように、市街地を囲むポリゴンを大まかにデジタイズします。
マップ上をクリックして頂点を追加し、ダブルクリックしてポリゴンを完成させます。
Network Analyst ウィンドウのルート ゾーン クラスに、新しいルート ゾーン [グラフィックス指定 1] が追加されます。 -
Network Analyst ウィンドウで、新しいルート ゾーン オブジェクト [グラフィックス指定 1] をダブルクリックします。
このルート ゾーンの [プロパティ] ウィンドウが表示されます。
-
下表の説明に従って、ルート ゾーンのプロパティを設定します。
属性
値
説明
RouteName
Downtown
このルート ゾーンを関連付けるルートの名前。
IsHardZone
True
送迎ワゴン車は、ルート ゾーン外では送迎業務ができません。この値を True に設定すると、ルート ゾーン内の訪問先のみがワゴン車に割り当てられます。
-
ステップ 1 ~ 6 を繰り返して、さらに 2 つのルート ゾーン(North Bay と East Bay)を追加します。
マップおよび Network Analyst ウィンドウに 3 つのルート ゾーン オブジェクトが追加されます。
解析プロパティの設定
次に、配車ルート解析のプロパティを指定します。
-
Network Analyst ウィンドウの [解析レイヤ プロパティ] ボタンをクリックします。
[レイヤ プロパティ] ダイアログ ボックスが開きます。
- [解析の設定] タブをクリックします。
-
[時間属性] が [TravelTime(分)] に設定されていることを確認します。
配車ルート解析では、この属性に基づいて、訪問先と拠点間の時間コストが計算されます。
-
[距離属性] ドロップダウン リストで何も選択されていないことを確認します。
ここでは、距離関連のコスト パラメータ(CostPerUnitDistance や MaxTotalDistance など)を使用しないので、距離属性を設定する必要がありません。
- [デフォルトの日付] で [曜日] を選択し、ドロップダウン リストから [月曜日] を選択します。
-
ワゴン車の最大容量は、常に乗車可能な合計乗客数で測定するので、[積載制限の総数] を「1」に設定します。
ワゴン車に乗車できる合計乗客数と車椅子の最大数で測定する場合は、この設定を「2」にします。
-
その他のプロパティについては、デフォルト設定のままにします。
- [OK] をクリックします。
ソリューションの決定処理を実行
-
[Network Analyst] ツールバーの [解析の実行] ボタン をクリックします。
配車ルート解析により、各ワゴン車のルートが計算されます。いずれも拠点を出発し、1 人以上の患者を乗せて、MaxTransitTime で指定した時間内に病院へ送り届けます。他の患者についても同じプロセスを繰り返し、すべての患者の送迎が終了したら拠点に戻ります。各ルートでは、割り当てられたルート ゾーン内でのみ送迎を行います。
詳細なルート案内の確認
-
[Network Analyst] ツールバーの [ルート案内ウィンドウ] ボタン をクリックします。
[ルート案内] ダイアログ ボックスが表示されます。
- 配車ルート解析をレイヤ ファイル(<ファイル名>.lyr)としてディスクにエクスポートすれば、別のマップ ドキュメントに読み込むことができます。
- 変更を保存せずに ArcMap を終了します。