演習 2: マルチモーダル ネットワーク データセットの作成
演習 1 では、シングル モードの輸送機関によるネットワークの作成方法について説明しました。しかし、旅行者や通勤者は徒歩、自動車、電車など複数のモードの輸送機関をよく使用します。商品も電車、船舶、トラック、飛行機など多くのモードの輸送機関を使用して運送されます。この演習では、フィーチャ データセットに属する複数のフィーチャクラスから、マルチモーダル ネットワーク データセットを作成します。
この演習と Network Analyst チュートリアルの他の演習で使用されるデータは、ArcGIS.com から入手できます。データをダウンロードしたら、任意の場所に抽出することができます。ただし、チュートリアルでデータのデフォルトの場所として参照される C:\arcgis\ArcTutor に抽出すると便利です。
新規ネットワーク データセット ウィザードの開始
- [スタート] → [すべてのプログラム] → [ArcGIS] → [ArcCatalog 10.1] をクリックして、ArcCatalogを起動します。
-
ArcGIS Network Analyst エクステンションを有効にします。
-
[カスタマイズ] → [エクステンション] の順にクリックします。
[エクステンション] ダイアログ ボックスが開きます。
- [Network Analyst] をオンにします。
- [閉じる] をクリックします。
-
[カスタマイズ] → [エクステンション] の順にクリックします。
-
Network Analyst チュートリアル フォルダへの接続をまだ作成していない場合、以下の手順に従って作成する必要があります。
-
[標準] ツールバーの [フォルダに接続] ボタン をクリックします。
[フォルダに接続] ダイアログ ボックスが開きます。
-
Network Analyst チュートリアル データのあるフォルダに移動します。
チュートリアル データのデフォルトの場所は、C:\ArcGIS\ArcTutor\Network Analyst\Tutorial です。
-
[OK] をクリックします。
フォルダへのショートカットが、カタログ ツリーの [フォルダ接続] の下に追加されます。
-
[標準] ツールバーの [フォルダに接続] ボタン をクリックします。
- カタログ ツリーで、[...\ArcTutor\Network Analyst\Tutorial] → [Exercise02] → [Paris.gdb] の順に展開します。
-
Transportation フィーチャ データセットをクリックします。
このフィーチャ データセットが含むフィーチャクラスが ArcCatalog の [コンテンツ] タブにリストで表示されます。
-
[Transportation] フィーチャ データセットを右クリックし、[新規作成] → [ネットワーク データセット] の順にクリックします。
[新規ネットワーク データセット] ウィザードが開きます。
ネットワークの命名およびソース フィーチャクラスの選択
-
ネットワーク データセットの名前として「ParisMultimodal_ND」と入力します。
- [ネットワーク データセットのバージョンを選択] の設定を最新バージョンのままにします。
このオプションは、古いリリースの ArcGIS を使用しているユーザとネットワーク データセットを共有する必要がある場合に有効です。これらのユーザが使用している ArcGIS リリース番号以下を選択すると、作成および共有しているネットワーク データセットを、古いリリースを使用しているユーザも開けるようになります。この場合の欠点は、新しいリリースの ArcGIS で導入されたネットワーク データセットの新機能を使用できないことです。[新規ネットワーク データセット] ウィザードでは、これらの機能を追加するためのコントロールは無効になります。ネットワーク データセットを共有する必要がない場合、またはデータセットを共有する対象のユーザが同じ ArcGIS リリースを使用している場合は、最新のバージョンを選択することをお勧めします。
-
[次へ] をクリックします。
ネットワーク データセットを構成するフィーチャクラスを選択するウィザード ページが表示されます。
-
[すべて選択] をクリックし、ネットワークのソースとして構成するフィーチャクラスをすべて選択します。
- [次へ] をクリックします。
-
[はい] をクリックして、ネットワークのターンをモデリングします。
このネットワークにはターン フィーチャクラスがありませんが、[はい] を選択することでネットワーク データセットはグローバル ターンをサポートし、ネットワークを作成するたびにターン フィーチャを追加するかどうかを選択できます。
-
[次へ] をクリックします。
接続性を設定するページが表示されます。
接続性およびエレベーション ポリシーの設定
ArcGIS Network Analyst エクステンションでは、接続性は接続性グループの定義から始まります。各エッジ ソースは 1 つの接続性グループにしか割り当てることができませんが、各ジャンクション ソースは 1 つまたは複数の接続性グループに割り当てることができます。接続性グループには、任意の数のソースを追加することができます。ネットワーク エレメントの接続方法は、エレメントの属する接続性グループによって変わります。たとえば、2 つの異なるソース フィーチャクラスから作成された 2 つのエッジは、同じ接続性グループに属していれば接続できます。異なる接続性グループに属する場合、それらのエッジは、両方の接続性グループに属するジャンクションで接続されていない限り接続されません。
以下の手順に従って、接続性グループを作成します。
-
[接続性] をクリックし、ネットワークの接続性モデルを設定します。
[接続性] ダイアログ ボックスが表示されます。
-
[グループ数] の上方向の矢印を 1 回クリックし、接続性グループの数を 2 にします。
2 番目の接続性グループの列が [接続性グループ] テーブルに作成されます。
- [Streets] 行をクリックし、[2] というラベルが付いている列の下のチェックボックスをオンにして、Streets のソースを接続性グループ 2 に移動します。
-
[Metro_Entrances] 行をクリックし、2 というラベルが付いている列の下のチェックボックスをオンにして、ソース フィーチャクラスがグループ 1 と 2 に含まれるようにします。
地下鉄の出入り口は道路と地下鉄の駅に通じる歩道との乗り換えポイントです。
-
[Metro_Entrances] 行の [接続性ポリシー] を [Honor] から [Override] に変更します。
- [OK] をクリックして、[新規ネットワーク データセット] ウィザードに戻ります。
- [次へ] をクリックします。
-
このデータセットに高さのデータはないため、[なし] をクリックします。
-
[次へ] をクリックします。
ウィザードによって、ネットワーク データセットの属性が表示されます。
Metro_Entrances の各フィーチャは、道路フィーチャクラスの頂点に一致しますが、道路フィーチャクラスには端点の接続性ポリシーがあります。地下鉄の出入り口は頂点が一致する部分で道路フィーチャクラスに接続されるため、道路フィーチャクラスの端点のデフォルトの接続性を Metro_Entrances でオーバーライドするように設定する必要があります。
ネットワーク データセット内の高さの設定は接続性に影響します。たとえば、A と B の 2 つのエッジがあるときに、A の端点と B の端点の XY 座標が一致していて、これらの標高が異なる(一方の端点がもう一方よりも高い)とします。また、その接続性ポリシーが [End Point] に設定されているとします。高さを無視すれば、これらはつながっているとみなせます。高さを考慮に入れると、接続されていません。
高さをモデリングするには 2 つの方法があります。1 つは、ジオメトリが持つ実際の高さの値を使用する方法、もう 1 つは、エレベーション フィールドに格納されている論理的高さの値を使用する方法です。
属性の削除
ネットワーク属性は、ネットワーク上でのナビゲーションを制御するプロパティです。よく使用される属性としては、インピーダンスとして作用するコスト属性、通行止めや一方通行などの規制属性があります。
Network Analyst は、ソース フィーチャクラスを解析し、Meters、Minutes(方向ごとに 1 つ、つまり FT_Minutes と TF_Minutes)、Oneway など、一般によく使用されるフィールドがあるかどうか調べます。そのようなフィールドが見つかると、対応するネットワーク属性が自動的に作成され、フィールドが属性に割り当てられます([エバリュエータ] をクリックすると、その様子を見ることができます)。
Network Analyst は Paris 道路データに自動的に「Hierarchy」、「Meters」、「Minutes」、「Oneway」、「Road Class」の 5 つの属性を設定します。
ネットワーク データセットの階層属性をそのままにしておくこともできますが、以下に示す簡単な手順で、Hierarchy を削除することでネットワーク属性を削除する方法を説明します。
- [Hierarchy] をクリックします。
- [削除] をクリックします。
ネットワークが 4 つの属性のみを持つようになります。
ネットワーク属性の確認および作成
このネットワーク データセットの目的の 1 つは、歩行時間と運転時間の両方をモデリングすることです。ネットワークの解析を実行するときに、この 2 つの時間コストのどちらかを選択することができます。時間コストを選ぶことで、たとえば道路に沿って歩き地下鉄に乗れる歩行者にとって地点 A から地点 B までの一番早いルートはどれですか、または車を運転する人にとって一番早いルートはどれですか、といった質問に答えることができます。このためには、歩行時間と運転時間の 2 つの時間コスト属性を設定する必要があります。
-
Minutes 行を選択して [名前の変更] をクリックし、「DriveTime」を入力して、Enter キーを押します。
-
[追加] をクリックします。
[新規属性の追加] ダイアログ ボックスが表示されます。
- [名前] テキスト ボックスに、「PedestrianTime」と入力します。
- [使用タイプ] を [コスト] に設定します。
- [単位] を [分] に変更します。
-
[データ タイプ] を [Double] に設定します。
-
[OK] をクリックします。
[新規属性の追加] ダイアログ ボックスが閉じ、PedestrianTime が属性リストに追加されます。
Minutes 属性は運転時間を表し、Network Analyst が自動的にソース データの中から検出します。この属性は適切な名前に変更できます。
「Meters」、「DriveTime」、「PedestrianTime」の 3 つのコスト属性には、ネットワーク属性値がどのように計算されるかを指定するエバリュエータに問題があることを通知する黄色の警告記号が表示されています。
次の 3 つのセクションでは、エバリュエータを設定します。
Meters エバリュエータの設定
これ以降のセクションでは、さまざまなエバリュエータを設定します。Meters エバリュエータは、ネットワーク上のエッジの距離コストを計算、つまりエッジの長さを決定します。
-
[Meters] を選択し、[エバリュエータ] をクリックします。
[エバリュエータ] ダイアログ ボックスが表示されます。ここでは、ネットワーク上の各ソースに対するエバリュエータの種類と値を表示、編集することができます。ジャンクションおよびターン ソースが関連付けられたエバリュエータを 1 つ保持しているのに対して、エッジ ソースは各移動方向に 1 つずつ(From-To 方向および To-From 方向)、計 2 つのエバリュエータを保持しています。
-
Shift キーを押しながら [Transfer_Stations] [From-To] 行の順にクリックし、次に [Transfer_Street_Station] [To-From] 行の順にクリックします。
これで警告記号が表示されている 4 つの行が選択されました。
-
選択されている行のいずれかを右クリックし、[種類] → [フィールド] の順にクリックします。
警告記号が赤いエラー記号に変化します。これは、フィールド エバリュエータの値の割り当てが不完全であることを示しています。
-
4 つの行が選択されている状態で、そのうちのいずれか 1 つの行を右クリックし [値] → [SHAPE_LENGTH] の順にクリックします。
これにより、選択したソース フィーチャクラスの [SHAPE_LENGTH] フィールドから、関連付けられたネットワーク エッジ エレメントの Meters 属性に値が割り当てられます。
-
[適用] をクリックします。
Meters ネットワーク属性は長さの値を取得するよう設定されます。Metro_Lines ソース、Streets ソース、Transfer_Stations ソース、Transfer_Street_Station ソースから作成されたネットワーク エレメントに対して、属性値はそれぞれ Meters、METERS、Shape_Length、SHAPE_LENGTH フィールドから値を取得します。
Network Analyst によってすべてのソース フィーチャクラスがチェックされ、Meters 属性に対してエバリュエータが自動的に割り当てられます。この場合では、Metro_Lines ソースおよび Streets ソースが Meters という名前のフィールドを保持していることが検出されたため、エバリュエータはこれらのフィールドから値を取得するように設定されます。同じ長さの値がエッジ ソース の From-To 方向および To-From 方向に割り当てられます。
Network Analyst は Transfer_Stations ソースおよび Transfer_Street_Station ソースでは、Meters フィールドを検索できませんでした。そのため、問題があることを示すために警告記号が表示されています。
DriveTime および Oneway エバリュエータの設定
自動車は道路のみを走行するため、さまざまなソースのエバリュエータを以下のように設定します。
-
[属性] ドロップダウン リストから、[DriveTime] を選択します。
Streets ソースの DriveTime の値は Network Analyst によって自動的に設定されています。しかし、他のエッジ ソースには値が割り当てられていないため警告記号が表示されます。これらのソースは規制ソースとしてマークする必要があります。また、新しいネットワーク解析オブジェクトをその場所に配置できない可能性があるため、地下鉄の駅も規制する必要があります。
-
警告記号が表示されているすべての行(Metro_Lines、Transfer_Stations、Transfer_Street_Station)が選択されていることを確認してください。
選択されていない場合、1 つの行をクリックし Ctrl キーを押しながら他の行をクリックすることで選択します。
- Ctrl キーを押しながら、[Metro_Stations] をクリックして選択されている行に追加します。
-
選択されている行のいずれかを右クリックし、[種類] → [定数] の順にクリックします。
同じ行が選択されたまま、エバリュエータの種類が [定数] に変更されます。
-
再度、選択されている行のうち 1 つの行を右クリックし、今度は [値] → [プロパティ] の順にクリックします。
[定数値] 入力ボックスが表示されます。
-
「-1」と入力し、Enter キーを押します。
選択されているすべての行の値が -1 に変更されます。Network Analyst は -1 のコスト値が付いているエレメントはすべて規制エレメントとして扱います。このため、ネットワーク解析において DriveTime 属性がインピーダンスとして使用されるときは、これらのソースは通過不可能になります。
- [適用] をクリックします。
-
[エバリュエータ] ダイアログ ボックスの最上部の [属性] ドロップダウン リストから [一方向] を選択します。
[属性値] フレームには、Oneway ネットワーク属性のエバリュエータが表示されます。Oneway ネットワーク属性には Streets ソースの値が自動的に割り当てられています。
地下鉄システムに関連するソースには一方通行の規制は必要ありません。
-
[Streets] 行のいずれか 1 つの行をクリックし、[エバリュエータ プロパティ] ボタン をクリックします。
式を使用して、道路が一方通行であるかどうかを判断します。
- [キャンセル] をクリックして [エバリュエータ] ダイアログ ボックスに戻ります。
PedestrianTime エバリュエータの設定
PedestrianTime ネットワーク属性は、歩行者がネットワークを移動するのに要する時間を表します。次の手順では、地下鉄システムに乗車し道路沿いを歩くことができる歩行者に対して適切な移動時間を割り当てます。
-
[エバリュエータ] ダイアログ ボックスの最上部の [属性] ドロップダウン リストから [PedestrianTime] を選択します。
ソース(Metro_Lines、Transfer_Stations、Transfer_Street_Station)の行がすでに選択されている必要があります。
- 選択されている行のいずれかを右クリックし、[種類] → [フィールド] の順にクリックします。
-
再度、選択されている行のうち 1 つの行を右クリックし、今度は [値] → [TRANSITTIM] の順にクリックします。
[TRANSITTIM] フィールドは、歩行者が交通網を使用する場合の時間コストを格納しています。道路にも歩行時間の値が必要になりますが、これはまた別の方法で計算します。
- [Streets] [From-To] 行の順にクリックして選択します。Ctrl キーを押しながら、[Streets] [To-From] 行の順にクリックして、両方の行を選択します。
-
選択されている行のいずれかを右クリックし、[値] → [プロパティ] の順にクリックします。
[フィールド エバリュエータ] ダイアログ ボックスが表示されます。
- 以下に示すように [フィールド エバリュエータ] ダイアログ ボックスで [METERS] フィールドをダブルクリックして [Value =] テキストボックス内に移動し、[METERS] * 60 / 3000 と入力して式を完成させます。
-
[確認] をクリックし、式が正しいかどうかを確認します。正しくない場合は、必要に応じて修正します。
-
[OK] をクリックして [エバリュエータ] ダイアログ ボックスに戻ります。
- [OK] をクリックして、[新規ネットワーク データセット] ウィザードに戻ります。
- [次へ] をクリックします。
ルート案内の設定
ルートがネットワーク データセットに基づいて計算されるときに、ルート計算結果と一緒にルート案内を作成することができます。ネットワーク データセットはテキスト属性(道路名の情報用)と、次の運転操作が必要になるまでにどれくらいの距離があるかを示す距離属性を含む、少なくとも 1 つのエッジ ソースを必要とします。
- [はい] をクリックして、ルート案内を設定します。
-
[ルート案内] をクリックします。
[ルート案内プロパティ] ダイアログ ボックスが表示されます。
-
[一般] タブで、[ソース] ドロップダウン リストをクリックして [Streets] を選択します。
- [道路名フィールド] リストで、[優先] をクリックして選択します。
-
[名前] 列で [FULL NAME] を選択します。
- [OK] をクリックして、[新規ネットワーク データセット] ウィザードに戻ります。
-
[次へ] をクリックします。
確認のために、設定内容のサマリが表示されます。
ネットワーク解析でルート案内レポートが出力されます。そのレポートで使用するフィールドを、ここで指定します。
ネットワーク データセットの作成と構築
ネットワーク データセットの機能を設定した後は、ネットワーク データセットの作成と構築が必要です。作成プロセスの時間は短く、基本的には論理ネットワークのコンテナを作成します。
-
[完了] をクリックします。
Network Analyst がネットワーク データセットを作成中であることを示す進捗バーが表示されます。
-
[はい] をクリックします。
[ネットワーク データセットの構築] 進捗バーが開きます。このバーは構築プロセスが終了すると消えます。
新しいネットワーク データセットである ParisMultimodal_ND がシステム ジャンクション フィーチャクラスである ParisMultimodal_ND_Junctions と一緒に ArcCatalog に追加されます。
- ネットワーク データセットをプレビューするには、その名前をクリックしてから [プレビュー] タブをクリックします。
- ArcCatalog を閉じます。
ネットワークの作成が完了すると、今度はネットワークを構築するかどうかたずねられます。構築プロセスでは、ネットワーク エレメント間の接続性が判定されます。また、ネットワーク データセットの属性に値が入ります。ネットワーク解析を実行する前に、ネットワークを構築しておく必要があります。