Network Analyst のライセンスで利用可能。
このチュートリアルでは、カリフォルニア州サンディエゴの道路と公共の観光名所のデータからカスタマイズされたネットワーク データセットを作成します。 まずは、[ネットワーク データセットの作成 (Create Network Dataset)] ツールを使用して基本的なネットワーク データセットを作成します。 次に、各プロパティ ページを移動しながら、ネットワーク ソース、コスト、規制、記述子、移動モード、方向などの追加の「移動属性」を設定します。
このチュートリアルを使用して作成された最終的なネットワーク データセットを使用して、サンディエゴ周辺の公共の観光名所を訪問する観光客向けのルートとルート案内を生成できます。
完成したネットワーク データセットは、サンプルとしてチュートリアル データに含まれています。
データの取得
このチュートリアルのデータは、ダウンロードして使用できます。
- 「データ ダウンロード ページ」に移動します。
- [ダウンロード] ボタンをクリックしてファイルをローカルに保存します。
- ダウンロードしたファイルを展開します。
マップの作成
- ArcGIS Pro を起動します。
- [マップ] テンプレートをクリックして、新しいプロジェクトを作成します。 プロジェクトの名前と場所を変更することも、デフォルトのままにすることもできます。
マップを含む新しいプロジェクトが表示されます。
ソース フィーチャクラスの確認
次に、[Streets] フィーチャクラスと [Walking_Pathways] フィーチャクラスをマップに追加します。
- [カタログ] ウィンドウ (デフォルトではアプリケーションの右側にあります) で [フォルダー] を右クリックし、[フォルダー接続の追加] を選択します。
[フォルダー接続の追加] ダイアログ ボックスが表示されます。
- チュートリアル データを置いたフォルダーを参照して、[Network Analyst] をダブルクリックし、[Tutorial] をクリックしてこのフォルダーを選択します。
- [OK] をクリックします。
Tutorial フォルダーへの接続が作成されます。
- [カタログ] ウィンドウで、[フォルダー] > [Tutorial] > [CreateNetworkDataset] > [SanDiego.gdb] > [Transportation] の順に展開します。
- [Streets] と [Walking_Pathways] をドラッグしてマップ上に配置します。
両方のフィーチャクラスが [コンテンツ] ウィンドウとマップに追加されます。
- [コンテンツ] ウィンドウで、[Streets] レイヤーを右クリックして [属性テーブル] を選択します。
- 各フィールドとフィールド内の値を確認します。 これらのフィールドの多くは、ネットワーク データセットで一部の機能に使用されます。
FT_Minutes、TF_Minutes、KPH、Meters などのフィールドを使用すると、各エッジの通過にかかるコストをネットワーク データセットに通知するようにコスト属性を設定できます。 これらのフィールドは通常、倍精度型または浮動小数型のフィールドです。
F_ZLEV フィールドと T_ZLEV フィールドは、異なるレベルの道路を定義する場合に使用します。 これらのフィールドを使用すると、高さが異なるために 1 本の道路から別の道路に直接ターンできない陸橋や地下道などの構造物を適切に設定することができます。 これらのフィールドについては、ネットワーク データセットの作成と高度モデルの選択の説明箇所で後から取り上げます。
FUNC_CLASS フィールドは、各道路にカテゴリを割り当てる整数フィールドです。 このフィールドは、ネットワーク データセットに関する階層属性を設定する場合に使用します。 このフィールドと階層についても、このチュートリアルの後半で改めて取り上げます。
これ以外にも PAVED、AR_PEDEST、AR_BUS、AR_AUTO、DIR_TRAVEL、TF_HeightLimit_Meters、FT_HeightLimit_Meters などのフィールドがあります。 これらのフィールドは、特定の状況で一部の道路の通行を禁止する規制を設定する場合に使用します。 これらのフィールドのほとんどは、Y または N の値を持ちます。 DIR_TRAVEL フィールドの値 (FT や TF など) は、一方通行の規制を設定する場合に使用します。 FT_HeightLimit_Meters フィールドと TF_HeightLimit_Meters フィールドの値は、ほとんどの場合が NULL 値であり、一部のフィーチャには数字が入力されます。 これら 2 つのフィールドは、パラメーター化規制という特殊な規制を設定する場合に使用します。 高さ制限を設定すると、観光バスの車高を解析設定で指定できます。また、車高が原因で観光バスが一部の道路を通行できない場合は、ネットワーク データセットでその道路を規制することができます。
- 各フィールドとフィールド内の値を確認します。 これらのフィールドの多くは、ネットワーク データセットで一部の機能に使用されます。
- 確認が終了したら、属性テーブルを閉じます。
ネットワーク データセットの作成
[ネットワーク データセットの作成 (Create Network Dataset)] ジオプロセシング ツールを使用して、基本的なネットワーク データセットを作成します。
- [解析] タブの [ジオプロセシング] グループで、[ツール] をクリックして [ジオプロセシング] ウィンドウを開きます。
- [ジオプロセシング] ウィンドウの検索バーをクリックして「ネットワーク データセットの作成」と入力します。
- 最初に表示された結果をクリックして [ネットワーク データセットの作成 (Create Network Dataset)] ジオプロセシング ツールを開きます。
- [ターゲット フィーチャ データセット] パラメーターで [参照] ボタン をクリックします。
- [SanDiego.gdb] > [Transportation] の順に参照して [OK] をクリックします。
[Transportation] フィーチャ データセットが [ターゲット フィーチャ データセット] パラメーターに取り込まれます。
- [ネットワーク データセット名] パラメーターに、「NewSanDiego_ND」と入力します。
- [ソース フィーチャクラス] パラメーターで、[Streets] のチェックボックスだけオンにします。
Streets フィーチャクラスだけがネットワーク データセットの一部となり、Walking_Pathways フィーチャクラスと Signposts フィーチャクラスはネットワーク データセットに含まれません。 このチュートリアルで後から、ネットワーク データセットにフィーチャと機能をさらに追加します。
- [高度モデル] パラメーターは、デフォルト値の [高度フィールド] をそのまま使用します。
- ウィンドウの下部にある [実行] をクリックします。
NewSanDiego_ND という新しいネットワーク データセットがマップに追加されます。
- マップ上で [NewSanDiego_ND] レイヤーを右クリックし、[削除] を選択して、このネットワーク データセット レイヤーをマップから削除します。
ネットワーク データセット レイヤーがマップ内に存在する間は、ネットワーク データセットのプロパティを編集することができません。 このチュートリアルの後続のセクションに進むには、マップからレイヤーを削除しておく必要があります。
ネットワーク ソースの追加と接続性ポリシーの設定
最初に、Streets フィーチャクラスのみをネットワーク ソースにして、ネットワーク データセットを作成しました。 ここで、Walking_Pathways フィーチャクラスをネットワーク データセットに追加し、どちらのネットワーク ソースにも適したグループおよび鉛直接続性ポリシーを設定します。
ネットワーク データセットを作成したら、そのネットワーク データセットのプロパティ ページですべての編集を行います。
- [カタログ] ウィンドウで、[NewSanDiego_ND] ネットワーク データセットを右クリックして [プロパティ] を選択し、[ネットワーク データセット プロパティ] ダイアログ ボックスを開きます。
- [ソースの設定] > [ソース] の順にクリックします。
ネットワーク データセットに現在含まれているすべてのソース フィーチャクラスがページに表示されます。
- ダイアログ ボックスの右上隅にある [ソースを追加/削除] ボタンをクリックします。
1 つのエッジ ソースと 1 つのジャンクション ソースがすでに存在します。 このジャンクション ソースは、ネットワーク データセットで作成および管理されているデフォルトのジャンクション フィーチャクラスです。
[ソースの追加/削除] ダイアログ ボックスが表示されます。
- [ソースの追加/削除] ダイアログ ボックスで、[Walking_Pathways] の横にあるチェックボックスをオンにして [OK] をクリックします。
フィーチャ データセットに含まれている他のポリライン フィーチャクラスとポリゴン フィーチャクラスも [ソースの追加/削除] ダイアログ ボックスに表示されます。 別々の役割を果たす多数のエッジ ソースとジャンクション ソースを 1 つのネットワーク データセットに含めることができます。 ここで、[Walking_Pathways] だけオンにします。
Walking_Pathways がネットワーク データセット ソースとして表示されます。
- [鉛直接続性] タブをクリックします。
注意:
ソースごとに別々の高度モデルを使用することはできません。 Walking_Pathways には Z 座標を使用できず、Streets には高度フィールドを使用できません。 すべてのネットワーク データセット ソースで同じ高度モデルを使用する必要があります。 ネットワーク データセットで Z 座標または高度フィールドを使用する方法の詳細については、「接続性」をご参照ください。
。 - [Streets (始点ノード)] および [Walking_Pathways (始点ノード)] のドロップダウン リストで、プロパティを [なし] から [F_ZLEV] に変更します。
- [Streets (終点ノード)] および [Walking_Pathways (終点ノード)] のドロップダウン リストで、プロパティを [なし] から [T_ZLEV] に変更します。
始点ノードおよび終点ノードの概念は、ライン フィーチャのデジタイズ方向に由来しています。 始点ノードはラインの始点にあり、終点ノードはラインの終点にあります。 同様に、順方向はラインのデジタイズ方向に移動することを意味し、逆方向はラインのデジタイズ方向とは逆の方向に移動することを意味します。
- [ネットワーク データセット プロパティ] ダイアログ ボックスの [OK] をクリックし、変更を確定してダイアログ ボックスを閉じます。
コストの追加
ネットワーク解析では、経路の計算 (最適ルートの検索) 時に、多くの場合はコスト (インピーダンス) の最小化が求められます。 このセクションでは、ネットワーク データセットにコスト属性を追加します。 コスト属性は、ネットワーク データセットでインピーダンスをモデル化する場合に使用します。 これらの属性は、エッジに沿って割り当てることができます。つまり、エッジの長さに沿って比例分割することができます。
- [カタログ] ウィンドウで、[NewSanDiego_ND] ネットワーク データセットを右クリックして [プロパティ] を選択し、[ネットワーク データセット プロパティ] ダイアログ ボックスを開きます。
- [移動属性] ページをクリックしてから、[コスト] タブをクリックします。
[ネットワーク データセットの作成] ツールでは、ネットワーク ソース内のジオメトリ フィールドに基づいて 1 つのコスト属性 [長さ] が自動的に作成されます。
- コストの [距離] セクションで [長さ] 属性をクリックします。
- [メニュー] ボタン をクリックして、[名前の変更] を選択します。
- [プロパティ] セクションで [名前] テキスト ボックスに「Miles」と入力し、Enter キーを押して、名前の変更を適用します。
- [単位] の値を [マイル] に変更します。
[Streets (順方向)] 行の値は Shape フィールドであることに注意してください。 Shape フィールドをエバリュエーターに渡すと、エッジの空間参照、単位、およびジオメトリもエバリュエーターに渡されます。 Shape フィールドにより、エバリュエーターはエッジの長さを算出する際に空間参照を使用することができます。 一方、Shape_Length フィールドの場合は、数値と単位しか渡されないため、データの座標系によっては、エッジの長さの精度が下がることがあります。
エバリュエーターがコストに整数フィールドを使用している場合に、エバリュエーターの単位を変更するには、エバリュエーター設定ダイアログ ボックスで、そのフィールドから取得された数値を新しい単位に変換する式を作成する必要があります。 たとえば、マイルをフィートに変換する場合は、次の式を使用します。
!Miles_Field!*5280
エバリュエーターで Shape フィールドと Shape_Length フィールドを使用する場合、コストの単位のみを変更すればよく、エバリュエーターはバックグラウンドで変換を行います。
- [エバリュエーター] セクションにある [エッジ] グループの [Walking_Pathways (順方向)] 行で、[タイプ] を [デフォルトと同じ] から [フィールド スクリプト] に変更します。
- [Walking_Pathways (順方向)] の [値] 列をダブルクリックして、[フィールド スクリプト設定] ボタンを有効にした後、[フィールド スクリプト設定] ボタン をクリックします。
エバリュエーター設定ダイアログ ボックスが表示されます。
- [結果] ボックスに「!Shape!」と入力し、[OK] をクリックします。
エバリュエーターは、エッジごとにインピーダンス (つまり、コスト) の計算方法をネットワークに通知します。 定数にするか、フィールドを基準にするか、別の属性を基準にするか、スクリプトから算出することができます。 これらはそれぞれタイプの異なるエバリュエーターです。
- [メニュー] ボタン をクリックして、[新規] を選択します。
- 新しいコストの名前として「Minutes」と入力します。
- [エバリュエーター] セクションにある [エッジ] グループの [Streets (順方向)] 行で、[タイプ] を [デフォルトと同じ] から [フィールド スクリプト] に変更します。
[Streets (順方向)] 行と [Streets (逆方向)] 行の横に X アイコンが表示されますが、エバリュエーターの基準となるフィールドを選択すると、表示されなくなります。
- [Streets (順方向)] の [値] 列をダブルクリックして、[フィールド スクリプト設定] ボタン を有効にした後、[フィールド スクリプト設定] ボタンをクリックします。
エッジ上でどちらの方向に移動する場合にも必要となるコストを表す 1 つのフィールドを設定できます。 たとえば、ラインの長さを制限速度で除算して計算される Minutes フィールドは、順方向と逆方向の両方に使用できます。 同じフィールドを両方の移動方向に使用できる場合は、[Streets (順方向)] 行に対してフィールド スクリプト エバリュエーターを使用することができます。 [Streets (逆方向)] 方向に対してフィールド スクリプト エバリュエーターを設定する代わりに、エバリュエーターの [タイプ] を [順方向と同じ] に変更します。
このデータの場合、順方向と逆方向をそれぞれ表す別々のフィールドが存在するため、両方の方向を設定します。
- [結果] ボックスに「!FT_Minutes!」と入力し、[OK] をクリックします。
- [Streets (逆方向)] 行に対して、手順 12 ~ 13 を繰り返します。
- [結果] ボックスに「!TF_Minutes!」と入力し、[OK] をクリックします。
- [Walking_Pathways (順方向)] 行と [Walking_Pathways (逆方向)] 行に対して、手順 12 ~ 16 を繰り返します。
注意:
エバリュエーターにはさまざまなタイプがあり、コスト、規制、および記述子で使用できます。 フィールド スクリプト エバリュエーターは、エッジの通過にかかるコストを算出するのに 1 つのフィールドまたは 1 つのフィールドに基づく単純な式を使用するため、最もよく利用されています。
- [エバリュエーター] セクションの [ターン] グループで、[<デフォルト>] 行の [タイプ] の値を [ターン カテゴリ] に変更します。
- [<デフォルト>] の [値] 列をダブルクリックして、[ターン カテゴリ設定] ボタン を有効にした後、[ターン カテゴリ設定] ボタンをクリックします。
[ターン カテゴリ エバリュエーター] ダイアログ ボックスが表示されます。
- [左折] と [U ターン] の秒数を「5」に変更します。
Minutes コスト属性を使用した解析では、左折または U ターンが発生した場合に 5 秒の遅延時間が加算されます。
- [OK] をクリックして変更を適用し、[ターン カテゴリ エバリュエーター] ダイアログ ボックスを閉じます。
注意:
階層属性が存在しないため、ターン カテゴリ エバリュエーターは道路クラスを使用してターンを区別できないという内容の Minutes コストに関する警告が生成されます。 この警告は無視してかまいません。 この警告については、このチュートリアルで後から階層属性を追加する際に対処します。
- [ネットワーク データセット プロパティ] ダイアログ ボックスの [OK] をクリックし、変更を確定してダイアログ ボックスを閉じます。
これで、ネットワーク データセットに長さコストと時間コストが設定されました。 次に、自動車の通行、徒歩、車高制限などの規制を追加します。
規制と記述子の追加
このセクションでは、徒歩、乗用車の運転、バスの運転、車高制限ありをモデル化した規制を追加します。 また、車高制限で使用される車高の記述子も追加します。
解析中、規制によって、ある種の特色のある道路の走行を完全に禁止するか、回避するか、優先するかを決めることができます。 たとえば、規制を使用して、歩行者が高速道路上を歩くのを防いだり、頭上が十分ではない道路上を車高の高いトラックが通過するのを防いだりできます。
記述子はネットワークまたはそのエレメントの特性を定義する属性です。 コストとは異なり、記述子は割り当てできません。 つまり、この属性の値は、エッジ エレメントの長さには依存しません。 記述子を使用すると、コストに割り当てることもコストで使用することも意図されていない属性を階層と規制で使用するためにネットワーク データセットに取り込むことができます。 このチュートリアルでは、記述子を使用して、Streets フィーチャクラスの TF_HeightLimit_Meters フィールドと FT_HeightLimit_Meters フィールドから車高を取得し、高さ規制で使用します。
まず、乗用車の運転、バスの運転、および徒歩をモデル化するための基本的な規制を作成します。
- [カタログ] ウィンドウで、[NewSanDiego_ND] ネットワーク データセットを右クリックして [プロパティ] を選択し、[ネットワーク データセット プロパティ] ダイアログ ボックスを開きます。
- [移動属性] ページをクリックしてから、[規制] タブをクリックします。
- [規制] タブの右上隅にある [メニュー] ボタン をクリックして、[新規] を選択します。
- 新しい規制の名前として「Driving an Automobile」と入力します。
- [使用タイプ] を [禁止] のままにしておきます。
- [エバリュエーター] セクションにある [エッジ] グループの [Streets (順方向)] 行で、[タイプ] の値を [デフォルトと同じ] から [フィールド スクリプト] に変更します。
[Streets (順方向)] 行と [Streets (逆方向)] 行の横に X アイコンが表示されますが、エバリュエーターの基準となるフィールドを選択すると、表示されなくなります。
- [Streets (順方向)] 行の [禁止] 列をダブルクリックして、[フィールド スクリプト設定] ボタンを有効にした後、[フィールド スクリプト設定] ボタン をクリックします。
エバリュエーター設定ダイアログ ボックスが表示されます。
- [結果] ボックスに「!AR_AUTO!=="N"」と入力し、[OK] をクリックします。
このフィールドは、乗用車が道路を合法的に走行できるかどうかを示します。 値が Y の場合は、乗用車がその道路を走行できることを示し、値が N の場合は、乗用車がその道路を走行できないことを示します。
規制は常にブール型です。 規制に対してフィールド スクリプト、エレメント スクリプト、または関数を定義する場合は、式、スクリプト、または関数から返された値のうち、どの値を True (そのエッジに影響を与える) と見なすかを規制に認識させます。 それ以外の値はすべて、False (そのエッジに影響を与えない) と解釈されます。 この場合は、規制がエッジに影響を与えると、そのエッジの通過が禁止されます。
- [Streets (逆方向)] を [順方向と同じ] のままにします。
- [Walking_Pathways (順方向)] で [タイプ] を [定数] に変更し、[禁止] を [True] に変更します。
- [Walking_Pathways (逆方向)] を [順方向と同じ] のままにします。
歩道では、動力付き車両を許可しないようにする必要があります。この場合、定数値を設定することで、この規制が有効な場合に車両を常に規制することができます。
- バスが特定の道路を走行するのを禁止する新しい規制を追加するには、手順 4 ~ 11 を繰り返し、規制に「Driving a Bus」という名前を付けて、AR_BUS フィールドを使用します。
- 「Walking」という名前の新しい規制を追加します。
- [Streets (順方向)] で、エバリュエーターの [タイプ] を [フィールド スクリプト] に変更します。
- [Streets (順方向)] 行の [禁止] 列をダブルクリックして、[フィールド スクリプト設定] ボタンを有効にした後、[フィールド スクリプト設定] ボタン をクリックします。
- エバリュエーター設定ダイアログ ボックスで、[結果] ボックスに「!AR_PEDEST! == "N"」と入力します。
これで、[Walking] 規制が有効な場合に、州間道路 (つまり、交通量が多く、歩行者が入れない他の道路) が規制されます。
- [Walking_Pathways] エッジは、デフォルトのエバリュエーター設定をそのまま使用します。
- 「Avoid Unpaved Roads」という名前の規制を作成します。
- [使用タイプ] の値を [禁止] から [回避] に変更します。
- [Streets (順方向)] で、エバリュエーターの [タイプ] を [フィールド スクリプト] に変更します。
- エバリュエーター設定で、[結果] ボックスに「!PAVED! == "N"」と入力します。
これで、PAVED フィールド内の値が N のすべてのエッジが適切に回避されます。
- 「Oneway」という名前の新しい規制を追加します。
- [Streets (順方向)] で、エバリュエーターの [タイプ] を [フィールド スクリプト] に変更します。
- [Streets (順方向)] 行の [禁止] 列をダブルクリックして、[フィールド スクリプト設定] ボタンを有効にした後、[フィールド スクリプト設定] ボタン をクリックします。
一方通行の道路では通常、道路の一方向の移動が規制されます。 この場合には、エッジに沿って移動する方向ごとに別々の値が必要です。 [Streets] で移動方向ごとに、類似しているが少し異なるフィールド式を設定します。
- [結果] ボックスに「SetOneway(!DIR_TRAVEL!)」と入力し、[コード ブロック] ボックスに次の式を入力します。
def SetOneway(value): if value and value.upper() in ('N', 'TF', 'T'): return True return False
この Python 式は、値が N、TF、または T かどうかを確認し、値がこれらのいずれかの場合に該当するエッジを規制します。 これは、大文字と小文字が区別されない式として記述されます。
TF 値と T 値はそれぞれ To-From と To を表します。 これらの値は、エッジに対して規制された移動方向を意味します。 この式では、To-From 方向 (逆方向) の移動が禁止され、From-To 方向 (順方向) の移動が許可されます。 N は、順方向と逆方向の両方の式で使用されます。 値が N のラインは、ルートでの使用を禁じられます。
- エバリュエーター設定ダイアログ ボックスの [OK] をクリックして変更を適用します。
- [Streets (逆方向)] で、エバリュエーターの [タイプ] を [フィールド スクリプト] に変更します。
- [Streets (逆方向)] 行のエバリュエーター設定ダイアログ ボックスを開きます。
- [結果] ボックスに「SetOneway(!DIR_TRAVEL!)」と入力し、[コード ブロック] ボックスに次の式を入力します。
def SetOneway(value): restricted = False if value and value.upper() in ("N', 'FT', 'F'): restricted = True return restricted
この式は、TF と T の代わりに FT と F を使用している点を除いて、上記の式と同じです。 この式では、もう 1 つの式で指定された方向とは反対の方向が規制されます。これは、一方通行規制の残りの半分で必要となります。
- エバリュエーター設定ダイアログ ボックスの [OK] をクリックして変更を適用します。
- [記述子] タブをクリックします。
- [メニュー] ボタン をクリックしてから、[新規] をクリックします。
- 名前として「Height Limit (Feet)」と入力します。
- [Streets (順方向)] 行で、エバリュエーターのタイプを [フィールド スクリプト] に変更します。
- [Streets (順方向)] 行のエバリュエーター設定ダイアログ ボックスを開きます。
- [結果] ボックスに「MetersToFeet(!FT_HeightLimit_Meters!)」と入力し、[コード ブロック] ボックスに次の式を入力します。
def MetersToFeet(value): if value is None: return value return value / 0.3048
この式は、FT_HeightLimit_Meters フィールドから値を取得し、その単位をメートルからフィートに変換します。
- [Streets (逆方向)] 行で、エバリュエーターのタイプを [フィールド スクリプト] に変更します。
- [Streets (逆方向)] 行のエバリュエーター設定ダイアログ ボックスを開きます。
- [結果] ボックスに「MetersToFeet(!TF_HeightLimit_Meters!)」と入力し、[コード ブロック] ボックスに次の式を入力します。
def MetersToFeet(value): if value is None: return value return value / 0.3048
- [OK] をクリックして、この式を適用します。
- 上部にある [規制] タブをクリックします。
- 「Height Restriction」という名前の新しい規制属性を追加します。
- 必要に応じて [パラメーター] セクションを展開します。
- [パラメーター] セクションで、グリッドをクリックして新しい行を追加します。
- 新しいパラメーターの名前を「Vehicle Height (Feet)」に変更します。
ネットワーク解析は、さまざまな状況によって変わることがあります。 この場合には、パラメーターを使用できます。 パラメーターはプレースホルダー変数に似た役割を果たします。 別の値で上書きされない限り、デフォルト値が使用されます。 このパラメーターは、解析レイヤーの [移動モード] 設定で公開されます。ここで、この解析に合わせて車高を変更することができます。
パラメーターを規制、コスト、または記述子に追加すると、その規制、コスト、または記述子がパラメーター化属性になります。 パラメーター化属性では、高さ、重量、車軸数の規制、コスト係数指定の移動コストなど、多くのものをモデル化できます。
- [タイプ] 列を [double]、[デフォルト値] を 0 のままにします。
注意:
車両の高さは 4 または 4.5 メートルのため、このパラメーターのタイプは double が適しています。 [デフォルト値] は、解析レイヤー プロパティから変更しない限り、車高のプレースホルダーとして使用されます。
- [Streets (順方向)] 行の [タイプ] の値を [関数] に変更して、エバリュエーター設定ダイアログ ボックスを開きます。
関数エバリュエーターで、単純な数学関数を作成します。 コストや記述子などの数値タイプの属性では、乗算、除算、減算、および加算を演算として実行できます。 規制などのブール属性では、比較オペランド (例: より大きい、より小さい) が使用されます。
- [属性名] を [Height Limit (Feet)] (前に作成した記述子) に設定します。
- [パラメーター名] を [Vehicle Height (Feet)] (この規制に追加したパラメーター) に設定します。
- 演算子として以下 (<=) を選択します。
式が Height Limit (Feet) <= Vehicle Height (Feet) を読み取ります。
エッジの Height Limit (Feet) が解析レイヤーに入力された Vehicle Height (Feet) 以下の場合は、そのエッジが規制されます。
- [OK] をクリックして、この関数を適用します。
- [Walking_Pathways] 行は、デフォルト値をそのまま使用します。
歩道では高さ制限がなく、車両の通行が許可されていないので、この規制を設定する必要はありません。
- [ネットワーク データセット プロパティ] ダイアログ ボックスの [OK] をクリックし、変更を確定してダイアログ ボックスを閉じます。
階層属性の追加
階層は、ネットワーク エレメントに割り当てられる順序またはランクです。 通常、道路には 3 ~ 5 のクラスがありますが、これより多くのクラスを使用できます。 3 つのレベルの階層の場合、クラスは幹線道路、一般道路、および生活道路になります。 生活道路の例として、狭い住宅地道路などがあります。 一般道路には、市街地を通る広い道路や州道などがあり、幹線道路には、州間道路や高速道路などがあります。
- [カタログ] ウィンドウで、[NewSanDiego_ND] ネットワーク データセットを右クリックして [プロパティ] を選択し、[ネットワーク データセット プロパティ] ダイアログ ボックスを開きます。
- [移動属性] ページをクリックしてから、[階層] タブをクリックします。
- [階層属性の追加] チェックボックスをオンにします。
[範囲] と [エバリュエーター] の階層設定が表示されます。
- [幹線道路] の範囲の上限を「2」に設定します。
- [一般道路] の範囲の上限を「4」に設定します。
注意:
これらの範囲はこのチュートリアルのデータであり、お使いのデータの分類方法はこれと異なっている可能性があります。
- [Streets (順方向)] 行で、エバリュエーターのタイプを [フィールド スクリプト] に変更して、エバリュエーター設定ダイアログ ボックスを開きます。
- [結果] ボックスに次の式を入力します。
int(!FUNC_CLASS!)
階層属性には、0 より大きい整数値を入力する必要があります。 FUNC_CLASS フィールドはテキスト フィールドであるため、フィールド値を整数に変換する簡単なメソッドを使用する必要があります。
- [OK] をクリックして、この式を適用します。
- [Walking_Pathways (順方向)] 行に対して、手順 6 ~ 8 を繰り返します。
- [ネットワーク データセット プロパティ] ダイアログ ボックスの [OK] をクリックし、変更を確定してダイアログ ボックスを閉じます。
移動モードの追加
移動モードとは、基本的に、車両や歩行者の物理的な特徴を定義する移動設定の長いリストで構成されるテンプレートです。 これらの特徴は、車両または歩行者が移動する方法や移動できる場所を定義するためのネットワーク解析の実行時に考慮されます。 事前定義された移動モードを使用すると、各設定を手動で選択せずに、事前に決められた設定をネットワーク解析にすぐ適用できます。
移動モードでは、乗用車の運転や徒歩などの一般的なモードをモデル化できるだけでなく、制限速度を超えることがないトレーラー トラックの運転や一部の道路交通法を無視できる救急車の運転などの具体的なモードをモデル化することもできます。
移動モードはネットワーク データセットに格納されるため、必要に応じて解析レイヤー内で変更できます。
乗用車の運転、観光バスの運転、および徒歩という 3 つの移動手段に対して 5 つの移動モードを作成します。 乗用車の運転および観光バスの運転では、距離ベースの移動モードと時間ベースの移動モードを作成します。 徒歩の場合は、距離ベースの移動モードのみを作成します。
- [カタログ] ウィンドウで、[NewSanDiego_ND] ネットワーク データセットを右クリックして [プロパティ] を選択し、[ネットワーク データセット プロパティ] ダイアログ ボックスを開きます。
- [移動属性] ページをクリックしてから、[移動モード] タブをクリックします。
- ダイアログ ボックスの右上隅にある [メニュー] ボタン をクリックして、[新規] を選択します。
- 移動モードに「Automobile Time」という名前を付けます。
- この移動モードが乗用車の運転時間ベースの移動モードであることを示す内容を [説明] に入力します。
- [タイプ] を [運転] のままにしておきます。
- [コスト] セクションで、[インピーダンス] が [分] に設定されているかを確認します。
- [距離コスト] が [マイル] に設定されているかを確認します。
- [規制] セクションで、下の画像に示すとおり、Avoid Unpaved Roads、Driving an Automobile、Oneway 規制のチェックボックスをオンにします。
移動モードを設定する場合は、移動手段 (Driving an Automobile、Driving a Bus、または Walking) のうちの 1 つだけをオンにします。 これらの規制は、該当する各移動手段が合法的であることを示します。 複数をオンにすると、一部のエッジが不正に規制されたり許可されたりすることがあります。
乗用車は通常、道路上での高さ制限の問題がないため、[Height Restriction] 属性はオンにしません。
- [U ターン] セクションで、設定を [行き止まりと交差点] に変更します。
- 折りたたまれている場合は、[高度な設定] セクションを展開します。
- [高度な設定] セクションで、[階層を使用] の横にあるチェックボックスをオンにします。
通常、階層を使用すると、大規模なネットワークの解析にかかる時間が短縮されます。 また、人々のように、生活道路よりも単調で予測しやすい州間道路や高速道路などの幹線道路を優先するため、人が好む運転方法がシミュレートされます。
- [メニュー] ボタン をクリックして、[コピー] を選択します。
- 新しい移動モードの名前を「Automobile Distance」に変更します。
- [インピーダンス] の値を [マイル] に変更します。
- [高度な設定] セクションで、[階層を使用] の横にあるチェックボックスをオフにします。
階層は、時間ベースのコスト属性で使用すると最適です。 インピーダンスが時間ベースでない場合は、解析で階層を使用しても現実的な結果が得られません。
- 「Tour Bus Time」という名前の移動モードを作成します。
- [インピーダンス] の値を [分] に変更します。
- [規制] セクションで、[Avoid Unpaved Roads] をクリックします。
- [規制の使用] パラメーターの値を [回避 (高)] に変更します。
観光バスはあまり未舗装道路を運転することがありません。 この移動モードの [規制の使用] パラメーターを [回避 (高)] に設定すると、未舗装道路が必要な場合のみ使用されるようになります。
- [Avoid Unpaved Roads] のチェックボックスがオンになっているを確認します。
- [Driving a Bus] をクリックします。
- [Driving a Bus] のチェックボックスがオンになっているかを確認します。
- [Height Restriction] をクリックします。
- [Vehicle Height (Feet)] パラメーターの値を「11」に変更します。
ここに入力された値はすべて、道路の高さ制限に対して車高を評価する場合のデフォルト値として使用されます。 1 階建ての観光バスの高さは平均で 10 ~ 11 フィートであるため、11 フィートは車高の適切なデフォルト値です。
- [Height Restriction] チェックボックスがオンで、[規制の使用] が [禁止] に設定されていることを確認します。
- [Oneway] チェックボックスがオンで、[規制の使用] が [禁止] に設定されていることを確認します。
- [U ターン] セクションで、ポリシーを [なし] に設定します。
- [高度な設定] セクションで、[階層を使用] の横にあるチェックボックスをオンにします。
- この移動モードをコピーして、新しい移動モードの名前を「Tour Bus Distance」に変更します。
- [インピーダンス] の値を [マイル] に変更し、[階層を使用] の隣のチェックボックスをオフにします。それ以外のすべてのプロパティは、そのまま同じ値を使用します。
- [Walking Distance] という名前の新しい移動モードを追加します。
- この移動モードの [タイプ] を [徒歩] に変更します。
- [インピーダンス] の値を [マイル] に変更します。
- [Walking] 規制のみをオンにします。
歩行者は、一方通行の道路、高さ制限、未舗装道路を気にしないので、これらの規制をオンにする必要はありません。
- [U ターン] ポリシーを [すべて] のままにします。
- [階層を使用] チェックボックスをオフのままにします。
[Walking] 規制により、階層で優先される多数の幹線道路 (州間道路や高速道路など) 上を歩行者が移動できなくなります。
- [ネットワーク データセット プロパティ] ダイアログ ボックスの [OK] をクリックし、変更を確定してダイアログ ボックスを閉じます。
コスト属性の更新
ネットワーク データセットに関する階層属性がすでに存在するので、ターン遅延を定義できるカテゴリをターン カテゴリ エバリュエーターに割り当てます。 Minutes コストに戻って、新しい遅延時間をターン カテゴリ エバリュエーターに反映します。
- [カタログ] ウィンドウで、[NewSanDiego_ND] ネットワーク データセットを右クリックして [プロパティ] を選択し、[ネットワーク データセット プロパティ] ダイアログ ボックスを開きます。
- [移動属性] ページをクリックしてから、[コスト] タブをクリックします。
- [Minutes] コストを選択します。
- [Minutes] コストを下にスクロールして、[ターン] セクションを確認します。
- [<デフォルト>] の [値] 列をダブルクリックして、[ターン カテゴリ設定] ボタン を有効にします。
値を確認すると、ターン カテゴリ数がターン カテゴリ エバリュエーターの設定時に表示された 5 件ではなく、20 件あることがわかります。
- [ターン カテゴリ設定] ボタン をクリックして、[ターン カテゴリ エバリュエーター] ダイアログ ボックスを開きます。
[ターン方位角範囲] セクションに変更はありませんが、道路クラスというセクションが追加されています。 このセクションを使用すると、ターン カテゴリ エバリュエーターで幹線道路、一般道路、または生活道路と見なされる階層値を変更することができます。
デフォルトでは、階層属性で定義された範囲が使用されます。 範囲を変更する理由が特にない限り、デフォルトの範囲をそのまま使用してください。
これで、[ターン カテゴリの移動時間] セクションに、道路を階層で分類できるターン カテゴリがさらに多く表示されるようになります。
- [左折] グループで、[生活]: [生活]: [すべて] の [秒] 値を 5 から 7 に変更します。
これらの列は、ターンが開始された道路のクラス、ターンが終了した道路のクラス、道路が横切られているかどうか (通常の交差点など)、該当する道路のクラスが表示されます。 たとえば、生活道路に進入するのに広い大通りを横切る必要がある場合は、走行車両が途絶えるまで数秒待機しなければなりません。 デフォルトでは、この種の走行の遅延時間は 15 秒です。 ただし、生活道路に進入するのに別の狭い道だけを横切る必要がある場合は、それほど長く待機しなくても済みます。 この種の走行の遅延時間は 2 秒です。
- [OK] をクリックして変更を適用し、[ターン カテゴリ エバリュエーター] ダイアログ ボックスを閉じます。
- [ネットワーク データセット プロパティ] ダイアログ ボックスの [OK] をクリックし、変更を確定してダイアログ ボックスを閉じます。
ルート案内の設定
ルート案内は、ルートを進むためのターンごとの指示です。 ルート案内をサポートするネットワーク データセットの最低要件は次のとおりです。
- 長さの値が入力されている属性フィールド (単位はメートルやキロメートルなどの長さ単位)
- 少なくとも 1 つのエッジ ソース
- エッジ ソースに少なくとも 1 つのテキスト フィールド
基本的なルート案内は最小限の要求事項で設定できますが、ルート案内の一部の機能には、さらに多くの要求事項が必要となります。
- [カタログ] ウィンドウで、[NewSanDiego_ND] ネットワーク データセットを右クリックして [プロパティ] を選択し、[ネットワーク データセット プロパティ] ダイアログ ボックスを開きます。
- [ルート案内] ページをクリックします。
- [ルート案内のサポート] の横にあるチェックボックスをオンにします。
[ルート案内] ページと [フィールド マッピング] タブに無効な状態を表すマーク (赤色の下付きの破線) が付けられます。 今のところ、これは無視してかまいません。 [フィールド マッピング] タブにアクセスすると、この問題が修正されます。
- [一般] タブをクリックします。
- [属性の割り当て] セクションは、すべてのデフォルト設定をそのまま使用します。
[属性の割り当て] セクションのプロパティは、ネットワーク データセットの属性になります。
[フィーチャ カテゴリ] プロパティ、[マヌーバー クラス] プロパティ、[通行側] プロパティは、ルート案内の詳細な調整に使用されます。 「これらのプロパティの詳細」。
- [補助データ ソース] セクションで、次のプロパティを設定します。
- [標識フィーチャ] を Signposts に設定します。
- [標識結合テーブル] を Signposts_Streets に設定します。
- [略語テーブル] を Abbreviations に設定します。
[補助データ ソース] セクションのプロパティは、ネットワーク データセットまたはジオデータベース テーブルと同じフィーチャ データセット内の他のフィーチャクラスになります。
[標識フィーチャ] 属性と [標識結合テーブル] 属性は、出口番号、連絡道路、連絡道路を進んで到達可能な主な行先など、高速道路標識に表示される行先情報を提供します。 これらのプロパティは組み合わせて使用されるため、ルート案内で標識情報を利用したい場合は、両方とも指定する必要があります。
[フィーチャ カテゴリ] 属性、[マヌーバー クラス] 属性、[通行側] 属性と同様、[道路分岐] テーブルは、特定タイプのターンでの詳細なルート案内に使用されます。
書き込まれたルート案内には、一般的な単語の略語が頻繁に含まれます。 ただし、書き込まれたルート案内を音声ガイダンスに変換するときには、略語を一般的な単語にする必要があります。 「略語テーブル」には、略語を一般的な単語にするルールを格納します。
- [ローカライズ名] は、デフォルト設定をそのまま使用します。
ネットワーク データセット ソースでは、道路名と標識のテキストが複数の言語で表示されることがあります。 たとえば、欧州のいくつかの国には複数の公用語があるため、一部の地域の道路名は複数の言語で表示されています。 この設定によって、ルート案内に道路名を利用可能なすべての言語で表示するかルート案内言語でのみ表示するかが決まります。
[優先出力ルート案内言語] を選択する前に、いくつかのデータ要件を満たしておく必要があります。
- [フィールド マッピング] タブをクリックします。
ネットワーク内の各エッジ ソースには、道路名のフィールドを設定できます。 これは、ルート案内の表示に使用される名前です。
- [代替名] で、[Streets (エッジ)] ソースの数値を引き上げます。
1 つのエッジ ソースに複数の名前を割り当てることができます。 たとえば、2 つの高速道路が同じ 1 本の道路を数マイルにわたって共有していることがあります。 この 1 本の道路を表すエッジには 2 つの名前が割り当てられます。 ルート案内でこの状況を表現するために、エッジ ソースで代替名を使用することができます。
- [代替名] で、[Streets (エッジ)] ソースの数値を引き下げます。
このチュートリアルのデータは代替名を使用していないので、代替名を設定する必要はありません。
- 以下に示された [Streets (エッジ)] ソースと [Walking_Pathways (エッジ)] ソースの [優先名] のプロパティに値を入力します。
ルート案内でのエッジ ソースのフィールド マッピング
名前 ソース フィールド 接頭辞の指示
ST_NM_PREF
接頭辞タイプ
ST_TYP_BEF
ベース名
ST_NM_BASE
接尾辞タイプ
ST_TYP_AFT
接尾辞の指示
ST_NM_SUFF
高速道路の指示
DIRONSIGN
フル ネーム
ST_NAME
言語
Language
名前クラス
NameClass
注意:
[ベース名] プロパティだけが必要となります。 それ以外のフィールドはすべてオプションです。
ルート案内は、複数の言語での道路名の表示に対応しています。 [言語] フィールドでは、名前をどの言語で記述するかを指定します。 優先名を 1 つの言語で記述し、代替名をもう 1 つの言語で記述することができます。
- [補助プロパティ] セクションの [Streets (エッジ)] と [Walking_Pathways (エッジ)] で、[国/地域コード] を CountryRegionCode に設定し、他のプロパティを既定値のまま残しておきます。
[行政界] フィールドには、エッジが属している行政界が名前で表示されます。 行政界に変更があった場合は、州境を通過する際に、ルート案内にたとえば「Enter California (カリフォルニア州に入りました)」と表示されます。
[レベル (From)]、[レベル (To)]、[フロア名 (From)]、および [フロア名 (To)] フィールド関数は [行政界] によく似ていますが、屋内のルート検索に有効です。 これらの関数はそれぞれ、階数と階名の変更を表示します。
[国/地域コード] の設定は、略語テーブルと組み合わせて使用されます。 これには、音声ガイダンスのルート案内で使用するときの略語を一般的な単語にする方法を決定する場合に使用される ISO 3166-2 コードが含まれます。 [行政界] フィールドの値とは異なり、[国/地域コード] 設定の値はルート案内に直接表示されません。
- [ランドマーク] タブをクリックします。
[空間ランドマーク] および [参照ランドマーク] という 2 つのグループが表示されます。 空間ランドマークはフィーチャクラスであり、参照ランドマークはテーブルです。 空間ランドマークでは、解析時に空間検索を利用して、ランドマークを参照するタイミングを決定します。 参照ランドマークでは、ネットワーク上の場所が行内に作成されるので、ルート案内でのランドマークの使用がテーブル検索だけで済みます。 空間検索はテーブル検索よりも時間がかかるため、空間ランドマークよりも参照ランドマークの方が実行速度が速くなります。
空間ランドマークでは、場所を特定するのに簡単な空間検索が使用されるので、すぐに設定できます。 空間ランドマークのラベルになるテキスト フィールドを少なくとも 1 つ含むポイント フィーチャクラスが必要となります。 それ以外のフィールドは、階、屋内のルート検索、各ポイント フィーチャのカスタム検索許容値などの特性を定義するのに使用できます。
参照ランドマークの設定には、多くの作業が必要です。 参照ランドマークでは、特定のスキーマが必要であり、ネットワーク ロケーションと他の必須フィールドを手動で設定しなければなりません。
空間ランドマークと参照ランドマークの両方を設定します。
- [空間ランドマークの追加/削除] ボタンをクリックします。
2 つのグループを含む [空間ランドマークの追加/削除] ダイアログ ボックスが表示されます。 たとえば、「左手の Eastlake Park の横を通ってください」といった確認ガイダンス ランドマークにより、運転者に対し、正しいルートを走行していることが通知されます。「1st Avenue の背の高い円筒形の白い建物の手前で左に曲がってください」といったターン ガイダンス ランドマークにより、運転者は、ジャンクションの走行を手助けされます。
ランドマーク フィーチャクラスは、ネットワーク データセットと同じフィーチャ データセットに配置する必要があります。 1 つのランドマーク フィーチャクラスを確認ガイダンス ランドマークとターン ガイダンス ランドマークの両方として登録することができます。
- [確認ガイダンス] グループで [MajorAttractions] のツリー ビューを展開します。
エッジ ソースごとに、ランドマーク フィーチャクラスが確認ガイダンス ランドマークまたはターン ガイダンス ランドマークのいずれかとして登録されます。 ほとんどの場合、すべてのエッジ ソースのランドマーク フィーチャクラスを確認ガイダンス ランドマーク、ターン ガイダンス ランドマーク、またはその両方のランドマークとして登録します。
- [確認] セクションと [ターン ガイダンス] セクションの両方で、最上位の [MajorAttractions] フィーチャクラスの横のチェックボックスをオンにします。
[MajorAttractions] フィーチャクラスは、サンディエゴ市の主要な観光名所を表します。 これらの観光名所は [Streets] または [Walking_Pathways] フィーチャに隣接している場合があります。 また、これらの観光名所を確認ガイダンスとターン ガイダンスに使用することもできます。 すべてのエッジ ソースの [MajorAttractions] フィーチャクラスを両方のランドマーク グループに登録します。
なお、最上部のチェックボックスをオンにすると、そのサブレベルのチェックボックスもすべてオンになります。
- [OK] をクリックして、空間ランドマークの登録を適用します。
[空間ランドマーク] ヘッダーにあるグリッドには、ランドマーク登録が入力されます。
- [フィールド マッピング] ボタンをクリックします。
[空間ランドマーク フィールド マッピング] ダイアログ ボックスが表示されます。
デフォルトでは、ランドマークの [ラベル フィールド] には Name フィールドが選択されており、[レベル フィールド] は [<なし>] のままになっています。
- [ラベル フィールド] と [レベル フィールド] のドロップダウン リストをクリックし、選択肢をメモしておきます。
[ラベル フィールド] ドロップダウン リストには、[MajorAttractions] フィーチャクラス内のすべてのテキスト フィールドが表示され、[レベル フィールド] ドロップダウン リストには、すべての整数フィールドが表示されます。
このダイアログ ボックスに変更を加えると、すべてのガイダンス タイプとエッジ ソースでフィールド マッピングが設定されます。
- ここで、フィールドに変更を加えたり、[キャンセル] をクリックしたりして [空間ランドマーク フィールド マッピング] ダイアログ ボックスを閉じないでください。
- [参照ランドマークの追加/削除] ボタンをクリックします。
[参照ランドマークの追加/削除] ダイアログ ボックスが表示されます。
- [Reference_Landmarks] の横にあるチェックボックスをオンにします。
このダイアログ ボックスには、参照ランドマークに必要なスキーマを含むテーブルだけが候補として表示されます。
- [OK] をクリックして、参照ランドマークの登録を適用します。
設定が完了した [ランドマーク] タブは、下の図のようになるはずです。
- [ネットワーク データセット プロパティ] ダイアログ ボックスの [OK] をクリックし、変更を確定してダイアログ ボックスを閉じます。
ネットワーク データセットの構築
ネットワーク データセット設定にすべての変更を加えたら、ネットワークを構築する必要があります。 ネットワークを構築すると、ネットワーク エッジが作成および更新されるため、ソース フィーチャからの最新の情報が確保されます。
- [解析] リボン上の [ジオプロセシング] グループで、[ツール] をクリックして [ジオプロセシング] ウィンドウを開きます。
- [ジオプロセシング] ウィンドウの検索バーをクリックして「ネットワークの構築」と入力します。
- 最初に表示された結果をクリックして「ネットワークの構築」ツールを開きます。
- [入力ネットワーク データセット] パラメーターで、[参照] ボタン をクリックした後、[NewSandiego_ND] ネットワーク データセットを参照して選択し、[OK] をクリックします。
- 下部にある [実行] ボタン をクリックします。
- または、マップまたは [コンテンツ] ウィンドウでネットワーク データセットを追加し、ネットワーク データセットを右クリックして、表示されたショートカット メニューの [構築] をクリックします。
[ネットワークの構築 (Build Network)] ジオプロセシング ツールが実行され、ネットワークが構築されます。
ネットワーク データセットの検索
ネットワーク データセットのプロパティを設定して「構築」したら、[ネットワークの検索] ツールを使用してエレメントと属性を検査できます。
- 新しく作成したネットワーク データセット [NewSanDiego_ND] をマップにドラッグし、[コンテンツ] ウィンドウでネットワーク データセット レイヤーが選択されていることを確認します。
- リボンの [ネットワーク データセット レイヤー] グループで、[データ] をクリックします。 [ネットワークの検索] ツールが使用できます。
- ツールをクリックしてアクティブ化し、マップ内でボックスをドラッグして、ネットワーク データセットからエレメントを選択します。
[ネットワークの検索] ウィンドウが表示されます。 このウィンドウには、マップ上で特定されたネットワーク エレメント、それに関連付けられたエレメントと属性が表示されます。
「ネットワークの検索」の詳細