Network Analyst のライセンスで利用可能。
この演習の目的は、複数のワゴン車を利用し、他に移動手段がない患者を診察のために自宅から病院へ搬送する際の最適なルートを検索することです。 そのためには、訪問先ペアを使用して配車ルート (VRP) 解析を実行します。つまり、2 つの訪問先 (ストップ) を関連付けおよび順序付けし、ワゴン車で乗客を迎えに行き、それぞれの目的地まで搬送できるようにします。 さらに、配車ルート解析レイヤーの他のフィーチャを使用して、追加の要件が満たされるようにします。 たとえば、乗客の移動時間が長くなりすぎないよう、訪問先ペアの最大移動時間を入力したり、乗客が診察時間に遅れないよう、訪問先にタイム ウィンドウを使用したりします。 車椅子を使用する乗客のために、特別指定を使用して、車椅子リストを備えたワゴン車を使用できるようにします。 ルートが決定したら ArcGIS.com に公開して、運転者が Navigator からルートにアクセスできるようにします。
データの取得
このチュートリアルのデータは、ダウンロードして使用できます。
- データ ダウンロード ページに移動します。
- [ダウンロード] ボタンをクリックしてファイルをローカルに保存します。
- ダウンロードしたファイルを展開します。
マップの作成
- ArcGIS Pro を開きます。
- [Map.aptx] テンプレートに基づいて新しいプロジェクトを作成します。
マップを含む新しいプロジェクトが表示されます。
プロジェクトへのチュートリアル データの追加
ネットワーク データセットは、道路システムの高機能なモデルです。 ネットワーク データセットには、道路の位置と属性だけでなく、どの道路が接続されているか、接続されている道路間のどのターンが許可または禁止されているかなどの、道路の相互関係に関する情報や、可能な移動パスや移動時間に影響する他の情報も含まれています。 VRP 解析では、ネットワーク データセットを参照して、ストップ間の最短距離のパスが特定されます。
注意:
ArcGIS Online を使用して解析する場合は、その解析で、ArcGIS Online クラウドに格納されている高品質な世界規模のネットワーク データセットが参照され、ArcGIS Online クレジットが使用されます。 また、自分のコンピューターにローカルに保存した独自のネットワーク データセットを使用するか、または ArcGIS Enterprise を使用して、独自のネットワーク データセットを使用するルート検索サービスを公開して Enterprise ポータルでサービスを構成し、ArcGIS Pro で利用することもできます。次の一連の手順で、ネットワーク データセットをマップに追加します。
- [カタログ] ウィンドウ (デフォルトではアプリケーションの横側にある) で [フォルダー] を右クリックし、[フォルダー接続の追加] を選択します。
[フォルダー接続の追加] ダイアログ ボックスが表示されます。
- チュートリアル データを置いたフォルダーを参照して、[Network Analyst] をダブルクリックし、[Tutorial] をクリックしてこのフォルダーを選択します。
- [OK] をクリックします。
Tutorial フォルダーへの接続が作成されます。
- [カタログ] ウィンドウで、[フォルダー] > [Tutorial] > [SanFrancisco.gdb] > [Transportation] の順に展開します。
- [Streets_ND] (ネットワーク データセット アイコン を持つ) をマップにドラッグします。
このネットワーク データセットが [コンテンツ] ウィンドウとマップに追加されます。
- [コンテンツ] ウィンドウで [Streets_ND] を右クリックし、[レイヤーにズーム] を選択して、サンフランシスコ エリアを表示します。
デフォルトでは、交通量データで構築されたネットワーク データセットは、マップに追加されると、現在の時刻の交通状況を表示します。 このネットワーク データセットには履歴交通量データが含まれているため、現在の時刻と曜日の標準的な交通状況が表示されます。 このネットワーク データセット内のすべての道路に交通量が含まれているわけではないため、デフォルトでは交通量を含む道路だけが表示されます。
ネットワーク データセットによってカバーされるエリアに対して、ネットワーク解析を実行できます。
解析を実行するためにネットワーク データセットを表示する必要はありません。そこで次に、ネットワーク データセットを非表示にします。
- [コンテンツ] ウィンドウで、[Streets_ND] をオフにして、ベースマップだけを表示します。
- [カタログ] ウィンドウで、[Tutorial] > [SanFrancisco.gdb] > [Analysis] の順に参照します。
- [カタログ] ウィンドウで、[CentralDepots] レイヤーを右クリックして [現在のマップに追加] を選択します。
注意:
レイヤーを [カタログ] ウィンドウからマップにドラッグして、マップに追加することもできます。
[CentralDepots] レイヤーが [コンテンツ] ウィンドウとマップに追加されます。
次に、このフォルダーに含まれているネットワーク データセットの 1 つをマップに追加します。
配車ルート (VRP) レイヤーの作成
配車ルート (VRP) レイヤーは、複数の配車ルート解析の設定と実行に必要な構造およびプロパティを提供します。 このレイヤーには、解析後の結果も含まれます。
- [解析] タブの [ワークフロー] グループで、[ネットワーク解析] > [配車ルート (VRP)] の順にクリックします。
VRP レイヤーが [コンテンツ] ウィンドウに追加されます。 このレイヤーには、解析の入力と出力を保持するいくつかのサブレイヤーが含まれます。
ルート レイヤーの作成時にサンフランシスコ ネットワークが [コンテンツ] ウィンドウ内にあったため、ルートはサンフランシスコ ネットワーク データセットを参照しています。
注意:
ネットワーク解析レイヤーの作成に使用されるネットワーク データ ソースを表示または変更するには、[解析] タブの [ワークフロー] グループで、[ネットワーク解析] ドロップダウン メニューをクリックして、[ネットワーク データ ソース] の下を確認します。
- [コンテンツ] ウィンドウで、[配車ルート (VRP)] をクリックし、グループ レイヤーを選択します。
ArcGIS Pro の上部にある [Network Analyst] グループに [配車ルート (VRP)] タブが表示されます。
- [VRP] をクリックし、タブのコントロールを表示します。
これらのコントロールを使用して、生成する VRP モデルを定義します。
ヒント:
[VRP] タブは、[コンテンツ] ウィンドウで VRP レイヤーを選択した場合のみ表示されます。 また、複数の VRP レイヤーが存在する場合、個別にレイヤーの設定を変更するか、複数のレイヤーが同じネットワーク データ ソースを共有している場合、それらを選択して選択したすべてのレイヤーの設定を編集できます。
訪問先の追加
このチュートリアル データにはスプレッドシートが用意されており、 患者の氏名、自宅住所、通院している病院の名前と住所、迎えに行く時間帯など、各患者に関する詳細情報が記録されています。 このスプレッドシートのフィールドとその内容は次のとおりです。
属性 | 説明 |
---|---|
OrderName1 | 送迎を必要とする患者の名前 |
PatientAddress | 患者を車に乗せる場所 |
OrderName2 | 目的地の一意な名前 |
HospitalAddress | 患者が予約している病院の場所 |
PickFrom | PatientAddress に患者を迎えに行く最早時刻 |
PickTo | PatientAddress に患者を迎えに行く最遅時刻 |
TotalPassengers | 迎えに行く合計乗客数 |
MaxTransitTime | 患者がワゴン車で移動する最長時間 |
SpecialityNames | 乗客が必要とする特別指定 (車椅子など) |
この場合、乗客はそれぞれ決められた病院へ行く必要があるので、乗客と病院訪問は相互に関連しています。 このシナリオをモデリングするには、患者ロケーションと病院ロケーションの両方を「訪問先」ネットワーク解析クラスに読み込み、新しい訪問先ペア オブジェクトを使用してそれらを関連付けます。
ここでは、患者と病院の住所をジオコーディングし、その結果得られるポイントを訪問先として読み込みます。
- [カタログ] ウィンドウで、チュートリアル データの場所を参照し、[OrderPairs.xls] ファイルを選択し、ダブルクリックします。
OrderPairs.xls ファイルが展開され、[Patients$] というテーブルが表示されます。
- [Patients$] テーブルを右クリックし、ショートカット メニューから [テーブルのジオコーディング] をクリックします。
[テーブルのジオコーディング] ウィザードが表示されます。 最初のページには、これから実行する手順の説明が表示されます。
- [スタート] ボタンをクリックします。
- [ジオコードするデータは、1 つのフィールドまたは複数のフィールドですか?] という質問には、ドロップダウン リストから [1 つのフィールド] を選択します。
- [次へ] をクリックします。
- [入力ロケーター] パラメーターの横にある [参照] ボタンをクリックし、チュートリアル データが保存された場所を参照して、[SanFranciscoLocator] を選択します。
- [次へ] をクリックします。
- [データ フィールド] ドロップダウン リストで、[PatientAddress] フィールドを選択して [次へ] をクリックします。
まず、患者の自宅の住所をジオコーディングします。
- [出力] フィールド名で、新しいフィーチャクラス名として [Patients_Geocoded] が表示されていることを確認して [完了] をクリックします。
- [テーブルのジオコーディング] ジオプロセシング ツールの入力を確認し、ウィンドウの下部にある [実行] ボタン をクリックします。
- [ジオコーディングの完了] ポップアップで [いいえ] をクリックします。
住所名が完全に一致したため、再照合プロセスを開始する必要はありません。 独自のワークフローでは、再照合によって一部の住所情報を削除する必要があることもあります。
- 次の変更を加えてステップ 1 ~ 11 を繰り返し、患者の診察用に病院の場所をジオコーディングします。
- ステップ 8 で [HospitalAddress] を選択します。
- ステップ 9 で、[出力] 名前フィールドを [DestinationHospitals_Geocoded] に変更します。
[テーブルのジオコーディング (Geocode Table)] ジオプロセシング ツールを上記の値で更新し、ウィザード全体の設定を繰り返すことなくツールを再実行できます。
- [コンテンツ] ウィンドウでこれら 2 つのジオコーディング結果レイヤーをオフにして、マップに表示されないようにします。
次のステップでは、これらのレイヤーを「訪問先」ネットワーク解析クラスに読み込みます。
- [VRP] タブの [入力データ] グループで、[訪問先のインポート] をクリックします。
[ロケーションの追加] ウィンドウが表示されます。
- [入力ネットワーク解析レイヤー] が [配車ルート (VRP)] に設定され、[サブ レイヤー] が [訪問先] に設定されていることを確認します。
- [入力ロケーション] のドロップダウン矢印をクリックし、[Patients_Geocoded] を選択します。 これは、前の手順で作成し、マップに自動的に追加されたポイント フィーチャクラスです。
- [フィールド マッピング] で [プロパティ] から [Name] を選択し、[フィールド名] パラメーターで [USER_OrderName1] を選択します。
- 自動的にマッピングされていない場合は、次のフィールドをマッピングします。
- [Description] > [USER_PatientAddress]
- [TimeWindowStart] > [USER_PickFrom]
- [TimeWindowEnd] > [USER_PickTo]
- [PickupQuantity_1] > [USER_TotalPassengers]
- [フィールド マッピング] で [プロパティ] から [ServiceTime] を選択し、[デフォルト値] パラメーターに「2」を入力します。
読み込んだすべての患者住所ロケーションに ServiceTime 値 2 が適用されます。これは、患者がワゴン車に乗り込むときの平均時間 (分単位) を表します。
- [フィールド マッピング] で [プロパティ] から [MaxViolationTime] を選択し、[デフォルト値] パラメーターに「0」と入力します。
すべての [MaxViolationTime] プロパティをゼロに設定することで、指定の時間内に訪問先を訪問できるルートのみが検索されます。
- 残りのパラメーターをデフォルト設定のままにして [OK] ボタンをクリックします。
- 次の変更を加えてステップ 14 ~ 16 を繰り返します。
- ステップ 16 で [DestinationHospitals_Geocoded] を選択します。
- 次のフィールド マッピングを作成します。
- [Name] > [USER_OrderName2]
- [Description] > [USER_HospitalAddress]
- [DeliveryQuantity_1] > [USER_TotalPassengers]
- 残りのパラメーターをデフォルト設定のままにして [OK] ボタンをクリックします。
注意:
必要な Microsoft ドライバーがインストールされていない場合、エラー メッセージが表示されます。 ArcGIS Pro で Excel ファイルを操作する方法については、こちらをご参照ください。合計 15 レコードが訪問先属性テーブルに追加され、マップに表示されます。
注意:
[Name] 属性の値は、訪問先ネットワーク解析クラスで一意にする必要があります。 この場合は、同じ病院に送迎する患者が多くいるため、 訪問先の [Name] 属性の値に病院の住所を使用すると、[Name] 属性の値が重複するため、配車ルート解析でエラー メッセージが返されます。合計 15 レコードが訪問先属性テーブルに追加され、マップに表示されます。
訪問先ペアの追加
患者を決められた病院へ送り届ける必要があります。 「訪問先ペア」ネットワーク解析クラスにオブジェクトを追加することで、患者の搬送先の病院や、搬送中にワゴン車に乗っていられる最大時間を指定する情報を追加できます。
- [VRP] タブの [入力データ] グループで、インポート オプションのドロップダウン リストから [訪問先ペアのインポート] をクリックします。
[ロケーションの追加] ウィンドウが表示されます。
以前にこのツールを使用して、フィーチャクラスから訪問先を読み込みました。 ここでは、このツールを使用して、Excel ファイルから [OrderPairs] テーブルにデータを読み込みます。
- [入力ネットワーク解析レイヤー] が [配車ルート (VRP)] に設定され、[サブ レイヤー] が [訪問先ペア] に設定されていることを確認します。
- [入力ロケーション] フィールドの横にある参照ボタンをクリックし、チュートリアル データの場所を参照して、[OrderPairs.xls] ファイル内から [Patients$] テーブルを選択します。
- 次のフィールド マッピングが自動的に設定されていることを確認します。
- [FirstOrderName] > [OrderName1]
- [SecondOrderName] > [OrderName2]
- [MaxTransitTime] > [MaxTransitTime]
- 残りのパラメーターをデフォルト設定のままにして [OK] ボタンをクリックします。
合計 15 レコードが [OrderPairs] テーブルに追加されます。
拠点の追加
この送迎会社では 3 か所を拠点としてワゴン車を運行します。これらの拠点のロケーションは、以前マップに追加した [CentralDepots] レイヤーに表示されます。 ここでは、これらのポイント フィーチャを [拠点] ネットワーク解析クラスに追加します。
- [VRP] タブの [入力データ] グループで、[拠点のインポート] をクリックします。
[ロケーションの追加] ウィンドウが表示されます。
- [入力ネットワーク解析レイヤー] が [配車ルート (VRP)] に設定され、[サブ レイヤー] が [拠点] に設定されていることを確認します。
- [入力ロケーション] のドロップダウン矢印をクリックし、[CentralDepots] を選択します。
- [フィールド マッピング] で [プロパティ] から [Name] を選択し、[フィールド名] パラメーターで [Name] が自動的にマッピングされていることを確認します。
- 残りのパラメーターをデフォルト設定のままにして [OK] ボタンをクリックします。
3 つのレコードが [拠点] 属性テーブルに追加され、マップに表示されます。
ルートの追加
この送迎会社は 3 台のワゴン車を所有しており、いずれも乗車定員は 6 人です。 送迎用ワゴン車は拠点を出発し、すべての送迎が終了したら拠点に戻ります。 3 台のうち 1 台のワゴン車は中心街を運行し、車椅子用のリフトが装備されています。
各ワゴン車に対して 1 つずつ、計 3 つのルートを追加します。 このセクションでは、[ルート] 属性テーブルを使用してルートを追加します。 [ロケーションの追加 (Add Locations)] ツールを使用して作成済みのテーブルをインポートしたり、[配車ルート (VRP) ルートの追加 (Add Vehicle Routing Problem Routes)] ジオプロセシング ツールを使用して同じパラメーターでルート セットを作成したりする方法もあります。 この場合、各ルートに十分な設定値があるため、値を直接テーブルに入力するのが最も簡単です。
- [コンテンツ] ウィンドウで、[ルート] を右クリックして、ショートカット メニューから [属性テーブル] を選択します。
各ルートの入力フィールドと出力フィールドを含む属性テーブルが表示されます。
- [クリックして、新しい行を追加します。] をクリックして、以下の 3 つのルートの情報を追加します。
Name StartDepotName EndDepotName Capacity_1 Downtown
Downtown Depot
Downtown Depot
6
North Bay
North Bay Depot
North Bay Depot
6
East Bay
East Bay Depot
East Bay Depot
6
- [編集] タブをクリックし、[編集の管理] グループにある [保存] ボタン をクリックします。
- [編集の保存] ダイアログ ボックスで、[はい] をクリックします。
- [ルート] 属性テーブルを閉じます。
特別指定の追加
迎えに行く患者の一部は車椅子に乗っていますが、車椅子の患者が車両に乗降しやすいリフトを備えているワゴン車は 1 台のみです。 このため、特別指定を設定して、車椅子の患者がそのルートでのみ提供されるサポートを必要とすることを示します。 チュートリアル データに付属している Excel ドキュメントを確認すると、3 人の患者 (Tony、Tim、Bill) が車椅子の対応を必要としていることがわかります。また、中心街ルートのワゴン車のみが車椅子用のリフト機能を備えています。 次のステップでは、この情報を示す値を [訪問先特別指定] および [ルート特別指定] 属性テーブルに追加します。
最初に、訪問先特別指定の情報を入力します。
- [コンテンツ] ウィンドウで、[訪問先特別指定] を右クリックして、ショートカット メニューから [開く] を選択します。
属性テーブルが表示され、各訪問先と特別指定に関する情報を入力できます。
- [クリックして、新しい行を追加します。] ボタンをクリックして、以下の情報を追加します。
OrderName SpecialtyName Tony (Home)
Wheelchair
Tony (Doctor)
Wheelchair
Tim (Home)
Wheelchair
Tim (Doctor)
Wheelchair
Bill (Home)
Wheelchair
Bill (Doctor)
Wheelchair
- [編集] タブをクリックし、[編集の管理] グループにある [保存] ボタン をクリックします。
- [編集の保存] ダイアログ ボックスで、[はい] をクリックします。
- [訪問先特別指定] 属性テーブルを閉じます。
- [コンテンツ] ウィンドウで、[ルート特別指定] を右クリックして、ショートカット メニューから [開く] を選択します。
属性テーブルが表示され、特別指定に対応できる各ルートに関する情報を入力できます。
- [クリックして、新しい行を追加します。] ボタンをクリックします。
- RouteName に「Downtown」と入力します。
- SpecialtyName に「Wheelchair」と入力します。
- [編集] タブをクリックし、[編集の管理] グループにある [保存] ボタン をクリックします。
- [編集の保存] ダイアログ ボックスで、[はい] をクリックします。
- [ルート特別指定] 属性テーブルを閉じます。
ルート ゾーンの追加
この送迎会社で使用している 3 台のワゴン車は、訪問先を巡回できるエリアが決められています。 ここでは、ルート ゾーンを追加し、それらをワゴン車またはルートに関連付けます。
このセクションでは、[フィーチャ作成] ウィンドウを使用してこれらのゾーンの境界線を描画しますが、ゾーンのデジタイズが完了している場合は、[ロケーションの追加 (Add Locations)] ジオプロセシング ツールを使用してゾーンをインポートできます。
- [VRP] タブの [入力データ] グループで、[フィーチャ作成] をクリックします。
選択した VRP レイヤーに関連付けられているフィーチャクラスのテンプレートを示す [フィーチャ作成] ウィンドウが表示されます。
- [フィーチャ作成] ウィンドウで、[配車ルート (VRP): ルート ゾーン] を選択します。
- マップ画面上で、次のように、市街地を囲むポリゴンを大まかにデジタイズします。
- [コンテンツ] ウィンドウで、[ルート ゾーン] を右クリックして、ショートカット メニューから [属性テーブル] を選択します。
属性テーブルが表示され、作成したルート ゾーンに関する情報を入力できます。
- RouteName の下にある最初の行をダブルクリックして値を編集し、「Downtown」と入力します。
これは、このルート ゾーンに関連付けられているルートの名前です。
- IsHardZone の値が [True] に設定されていることを確認します。
送迎ワゴン車は、ルート ゾーン外では送迎業務ができません。 この値を [True] に設定すると、ルート ゾーン内の訪問先のみがワゴン車に割り当てられます。
- ステップ 3 ~ 6 を繰り返して、さらに 2 つのルート ゾーン (North Bay と East Bay) を追加します。
- [編集] タブをクリックし、[編集の管理] グループにある [保存] ボタン をクリックします。
- [編集の保存] ダイアログ ボックスで、[はい] をクリックします。
- [ルート ゾーン] 属性テーブルを閉じます。
配車ルート解析用のプロパティ設定
次に、配車ルート解析のプロパティを指定します。
- [VRP] タブの [移動モード] で、[モード] が [運転時間] に設定されていることを確認します。
この移動モードは、U ターン ポリシー、道路制限ポリシー、時間コストおよび距離コストに使用する値など、複数の設定をカプセル化しています。
- [移動モード] グループで、[時間フィールドの単位] が [分]、[距離フィールドの単位] が [マイル] に設定されていることを確認します。
- [デフォルトの日付] グループで [デフォルトの日付タイプ] ドロップダウン リストから [曜日] を選択します。
- 曜日が表示されたドロップダウン リストから、[月曜日] を選択します。
- [出力ジオメトリ] グループで、[出力ジオメトリの線形形状タイプ] ドロップダウン リストから [ネットワーク沿い] を選択します。
注意:
出力ジオメトリ オプションはルート表示のみに影響し、VRP 解析の結果には影響しません。
解析の実行
VRP 解析を実行して、最適なルート割り当てを決定します。
- [VRP] タブで、[実行] をクリックします。
配車ルート解析により、各ワゴン車のルートが計算されます。 いずれも拠点を出発し、ワゴン車が 1 人以上の患者を乗せて、MaxTransitTime で指定した時間内に病院へ送り届けます。他の患者についても同じプロセスを繰り返し、すべての患者の送迎が終了したら拠点に戻ります。 各ルートでは、割り当てられたルート ゾーン内でのみ送迎を行います。