Skip To Content

ジオプロセシング サービスの例: 道路ネットワークの最短ルート

Network Analyst のライセンスで利用可能。

複雑度: 中級データ要件: ArcGIS Tutorial Data for Desktopデータ パス: C:\arcgis\ArcTutor\GP Service Examples\Network Analyst\ShortestRoute 目的: 指定された時刻での道路ネットワークの最短ルートを検索してルート案内を生成するジオプロセシング サービスを作成、公開、および使用します。

フォルダー

ShortestRoute

目的

指定された時刻での道路ネットワーク上のポイント間の最短ルートを表示し、テキスト ファイルまたは HTML ファイルでルート案内を生成します。

サービス

ShortestRouteService(ジオプロセシング サービス)

ジオプロセシング タスク

Calculate Shortest Route

入力

  • ユーザーがデジタイズした複数のポイント
  • 開始日時
  • ルート案内を HTML 形式で公開するかテキスト形式で公開するかの選択

出力

  • 指定した開始時刻での指定したポイント間の最短ルートを表すライン フィーチャ
  • ルート案内を含む HTML ファイルまたはテキスト ファイル

データ

ToolData フォルダーで提供されるサンフランシスコ エリアの道路ネットワーク データセット

エクステンション

ArcGIS Network Analyst エクステンション

備考

  • タスクが実行されるたびに既存の Route ネットワーク解析レイヤーを再利用する方法を示します。
  • スクリプト ツールとネットワーク解析モジュールを使用して解析レイヤーの開始時刻値を変更する方法を示します。
  • この例は、ローケーション-アロケーションおよび OD コスト マトリックスについての Network Analyst 解析を操作するための参考にすることができます。これらのワークフローは、ほぼ同じです。(配車ルート解析、最寄り施設または到達圏解析を利用するジオプロセシング サービスを公開する場合は、このトピックをご参照ください。)

このサンプルについて

対応するフォルダー

このチュートリアルのデータは、ArcGIS.com からダウンロードできます。そのデータを C:\arcgis\ArcTutor\ に解凍します。モデルおよび対応するデータの一部は、C:\arcgis\ArcTutor\GP Service Examples\Network Analyst\ShortestRoute にあります。モデル内のネットワーク解析レイヤーが参照するネットワーク データセットは、C:\arcgis\ArcTutor\GP Service Examples\Network Analyst\ShortestRoute にある SanFrancisco ジオデータベースに格納されています。

このサンプルについて

このサンプルで作成される ShortestRouteService は、道路ネットワーク上でユーザーが指定したポイント間の最短ルートを計算し、ルート案内が含まれたファイルを生成する、ジオプロセシング タスクの公開方法を示します。

最短ルート計算タスクの出力の例
最短ルート計算タスクの出力の例

この例で使用されるサンフランシスコ ネットワーク データセットは、履歴交通量データで構成されています。これによって、指定された曜日と時刻での最短走行ルートの検索が可能になります。つまり、8.00 AM、10:00 AM、10:25 PM などにおける、A 点から B 点までの最短ルートを検索することができます。ルートの形状やルートの予定所要時間は変わる場合がありますが、いずれの場合も、指定された開始時刻での最短ルートが計算されます。

データ

この例のネットワーク データセットは、C:\arcgis\ArcTutor\GP Service Examples\Network Analyst\SanFrancisco.gdb にあります。マップ ドキュメント、ツールボックス、およびその他の補足データは、C:\arcgis\ArcTutor\GP Service Examples\Network Analyst\ShortestRoute に保存されています。

ShortestRoute フォルダーの内容
ShortestRoute フォルダーの内容

ネットワーク データセット

Network Analyst フォルダーには、SanFrancisco.gdb ファイル ジオデータベースが含まれています。Transportation フィーチャ データセットには、Streets_ND ネットワーク データセットが含まれています。このネットワーク データセットは、サンフランシスコ エリアの道路ネットワークをモデリングし、 TravelTime(各道路セグメントの分単位の走行時間を示す) や、メートル(各道路セグメントの長さを示す) などの複数のネットワーク属性を提供します。

ツールボックスとマップ ドキュメント

ジオプロセシング サービスのツールボックスは、[ShortestRouteService.tbx] です。

マップ ドキュメント、ShortestRouteService.mxd は、このワークフローのトピックから派生的な手順 (レイヤーの追加、分析範囲の周囲でのマップ範囲の調整など) を取り除くために含まれています。

[ShortestRouteService] には、スクリプト ツールとモデルが含まれています。[ルートの開始時刻の変更] スクリプト ツールは、[最短ルート計算] モデルの一部です。

モデル

モデルの概要

[最短ルート計算] モデルを以下の図に示します。

次の 3 つの入力パラメーターがあります。開始時刻は、オプションです。最初のストップからの出発時刻を表します。入力ストップは、ルートを検索するためにユーザーがデジタイズしたポイントを表します。ルート案内のファイル タイプは、出力ルート案内を HTML 形式で出力するのか、テキスト形式で出力するのかを指定します。

このモデルは、スクリプト ツールを使用して既存のネットワーク解析レイヤーのルート開始時刻を設定します。さらにモデルは、ストップ場所をルート解析レイヤーに追加し、最短ルートを検索し、ルートの形状とルート案内を出力します。結果として得られるルートは、デジタイズされた順序でストップを訪れます。

最短ルート計算モデル
最短ルート計算モデル

既存のネットワーク解析レイヤーの使用

[最短ルート計算] モデルでは、ネットワーク解析レイヤーは作成されません。このモデルは、レイヤーがすでに存在することを前提にしています。この設計では、このモデルおよびモデルから公開されるすべてのジオプロセシング タスクは、ネットワーク解析レイヤーを解析ごとに作成せずに、1 つのレイヤーを再利用しています。これによって、多くの不要な処理を省くことができます。

このモデルは、[ルートの開始時刻の変更] スクリプト ツールを参照します。このスクリプト ツールは、Python および Network Analyst モジュール (arcpy.na)を使用して既存のルート ネットワーク解析レイヤーにアクセスし、そのルート開始時刻プロパティをユーザーが入力した日時に変更します。具体的には、このスクリプトは、ネットワーク解析レイヤーを arcpy.na.GetSolverProperties に渡し、RouteSolverProperties オブジェクトを取得します。このオブジェクトの、ネットワーク解析レイヤーの timeOfDay プロパティが設定されます。

推奨方法ではありませんが、モデルを [ルート レイヤーの作成 (Make Route Layer)] ツールから開始し、このツールの [開始時間] パラメーターをモデル パラメーターとして公開し、スクリプト ツールを追加しないようにできます。ただし、モデルがタスクとしてサーバーで公開された場合、クライアントのリクエストごとに、新しいネットワーク解析レイヤーが作成されるようになります。そのため、この方法を使用すると、サーバーに多くの余分な処理が発生します。サービスで常に 1 つのレイヤーのみが作成され、使用されるようにするために、スクリプト ツールと Network Analyst モジュールを使用して既存のネットワーク解析レイヤーのプロパティを編集することができます。

レガシー:

ArcGIS 10.1 より前のバージョンには、Network Analyst モジュールはありませんでした。そのため、ネットワーク解析レイヤーのプロパティを変更する唯一の方法は、複数のレイヤー作成ジオプロセシング ツール (たとえば、[ルート レイヤーの作成 (Make Route Layer)]) のうちのいずれかを使用してモデルでレイヤーを新規作成してから、そのツールの 1 つ以上の解析パラメーターをモデル パラメーターとして公開することでした。

[最短ルート計算] モデルの入力変数として使用されるルート レイヤーは、まず Streets_ND ネットワーク データセットを ShortestRouteService.mxd に追加し、次に [ルート レイヤーの作成 (Make Route Layer)] ツールを使用して作成されています。このサンプルでは、ルート レイヤーの作成時に、以下のツール パラメーターが設定されています。この表にないパラメーターについてはデフォルト値が使用されています。

パラメーター

入力解析ネットワーク

Streets_ND

出力レイヤー名

ルート

インピーダンス属性

TravelTime

開始時間

累積

メートル、TravelTime

U ターン ポリシー

ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY (行き止まりと交差点のみ許可)

[ルート レイヤーの作成 (Make Route Layer)] ツールで使用されているパラメーター値

[ルート レイヤーの作成 (Make Route Layer)] ツールのダイアログ ボックスの設定
[ルート レイヤーの作成 (Make Route Layer)] ツールのダイアログ ボックスの設定

モデル プロセス

[ルートの開始時刻の変更 (Change Route Start Time)] スクリプト ツールを使用して、ルートの開始時刻を設定することにより、ネットワーク データセットの動的な移動時間を活用することができます。日時を設定しない場合、解析では、一般的な移動時間から生成されたネットワーク コスト属性に基づいて最短ルートが検索されます。しかし、日時を設定すれば、解析で履歴移動時間に基づくコスト属性が使用されるため、さらに良いルートが得られることが多くなります。

[ロケーションの追加 (Add Locations)] ツールは、ユーザーがデジタイズしたポイントをストップとして Route レイヤーに追加します。このツールの [入力ロケーション] パラメーターは、[入力ストップ] モデル パラメーターによって指定されます。このパラメーターはフィーチャ セット データ タイプです。フィーチャ セットのスキーマとシンボルは、ToolData フォルダーにある InputStops.lyr ファイルから取得されます。

Input Stops フィーチャ セットのスキーマには、Name というテキスト フィールドが含まれています。[フィールドの割り当て] で Name プロパティを Name フィールドにマッピングすることにより、ルート案内の生成時にこのフィールドを使ってストップ名を提供することができます。名前フィールドの値がユーザーによって指定されない場合は、ロケーション 1ロケーション 2 などのデフォルト値がストップ名に使用されます。

モデルを実行するたびに同じ Route レイヤーが使用されるため、新しいストップを追加する前に既存のストップを削除する必要があります。既存のストップを削除するには、[既存のロケーションを追加] チェックボックスをオフにします。

[ネットワークの制限部分を除外] はオンになっています。そのため、ストップが追加されたときに、それらが通行できないエッジ上に配置されることはありません。これによって、解析時にエラーが発生するのを防ぎます。

ストップの追加
ストップの追加

[解析の実行 (Solve)] ツールは、ルート レイヤーに指定された TravelTime ネットワーク属性、開始時刻の設定などのオプションに基づいて最短ルートを計算します。計算されたルートは、出力 Route レイヤーの Routes サブレイヤーに書き出されます。

ネットワーク解析レイヤー (ルート レイヤーなど) は、ArcGIS Server クライアントでサポートされる出力パラメーターのデータ タイプではありません。そのため、ルート解析レイヤーからのルート サブレイヤーの取得には [データの選択 (Select Data)] ツールを使用します。

[ルート案内 (Directions)] ツールは、ルート案内を生成し、ユーザーの選択に応じて、それらをテキスト ファイル、XML ファイル、または HTML ファイルに出力します。ただし、ArcGIS Server からタスクを実行している場合は、XML オプションはリストから削除されます。このオプションは、サービスを公開するときに、[サービス エディター] で、[ルート案内のファイル タイプ] の下の [XML] をオフにすると削除されます。[解析の実行 (Solve)] ツールから出力された SolveSucceeded 変数は、[ルート案内 (Directions)] ツールの前提条件として使用されます。つまり、ルート案内ファイルは、[解析の実行 (Solve)] ツールが入力ポイント間のルートを検出できた場合のみ生成されます。

アイテム説明

ジオプロセシング モデルのアイテム説明をドキュメント化することによって、公開ウィザードがそのテキストをサービスのアイテム説明にコピーするため、公開されたサービスおよびそのパラメーターもドキュメント化されます。サービスを説明する、つまりドキュメント化することは必要であり、サービスと適切に対話して最短ルートを検索する方法をユーザーに理解させるのに役立ちます。この例のモデルとスクリプト ツールはドキュメント化されています。[コンテンツ] ウィンドウ内のジオプロセシング モデルを右クリックし、[アイテム説明] を選択することによって、そのドキュメントを確認できます。

公開

ジオプロセシング サービスは、以下に示す手順に従って公開します。公開者は、サービスを正常に公開するために、データを ArcGIS Server にコピーできる必要があります。

  1. ShortestRouteService.mxd を開きます。チュートリアル データのデフォルトの場所は、C:\arcgis\ArcTutor\GP Service Examples\Network Analyst\ShortestRoute です。
  2. 最短ルート計算ジオプロセシング モデルを実行します。
    1. カタログ ウィンドウで、[ShortestRouteService.tbx] を展開し、[最短ルート計算] モデルをダブルクリックします。
    2. [最短ルート計算] ツールのダイアログ ボックスで、[ストップ] の横にあるシンボルをクリックしてから、マップ上をクリックしてストップを追加します。
    3. [OK] をクリックして、ルートとルート案内を生成します。
  3. [ジオプロセシング] > [結果] の順にクリックして、[結果] ウィンドウを開きます。
  4. [結果] ウィンドウで [現在のセッション] を展開します。
  5. CalculateShortestRoute (そのモデルが実行された時間と日付が後に続く) を右クリックして、[共有] > [ジオプロセシング サービス] の順に選択します。
  6. [サービスとして共有] ダイアログ ボックスで、[次へ] をクリックします。
  7. ドロップダウン リストから、公開者の権限で [ArcGIS Server 接続] を選択するか、ドロップダウン リストの右にあるボタンを使用して接続します。
  8. [次へ] をクリックします。
  9. サービスをルート フォルダーに公開することを選択するか、別のフォルダーを指定して [続行] をクリックします。

    [サービス エディター] ダイアログ ボックスが表示されます。サービスを説明するために、ジオプロセシング モデルとスクリプト ツールのアイテム説明から、テキストがコピーされています。そのテキストは、編集のためにダイアログ ボックスの [アイテム説明] セクションに表示されるとともに、すぐ上のセクション ([Route_Directions][開始時刻] など) にも表示されます。

  10. 分析範囲のルート解析がすばやく処理されるように、[パラメーター] タブをクリックし、[同期] をオンにして、サービスを同期モードにします。ロケーション-アロケーションまたは OD コスト マトリックスを解析するサービスを公開している場合は、このプロパティを [非同期] に設定し、[プール] タブの下にある [クライアントがインスタンスを使用できる最大時間] の値を増やすことを検討してください。
  11. タスクの実行時にエラー メッセージまたは警告メッセージが返されるようにするために、[メッセージ レベル][警告] に変更します。
  12. [ルート案内のファイル タイプ] をクリックし、XML をオフにすることによって、ルート案内のファイル形式のオプションから XML を削除します。
  13. [分析] 統計情報の更新 をクリックして、[公開者] ウィンドウに警告メッセージまたはエラー メッセージを表示します。

    データ ストアを設定していなければ、データがサーバーにコピーされることを知らせる警告メッセージが表示されます。

    その他のエラーの対策方法については、[公開者] ウィンドウの任意のエラー メッセージを右クリックしてください。

  14. [サービス エディター] ダイアログ ボックスで [公開] 公開 をクリックします。

    Streets_ND がサーバーにコピーされることを知らせるダイアログ ボックスが、即座に表示される場合があります。その場合は、[OK] をクリックします。サービスが正常に公開されると、[完了] ダイアログ ボックスが表示されます。

  15. [OK] をクリックします。

使用

  1. 空のマップ ドキュメントを開き、チュートリアル データ (C:/arcgis/ArcTutor/GP Service Examples/Network Analyst/SanFrancisco/Transportation/Streets) から道路フィーチャクラスを追加します。必要に応じて、ArcGIS Online からベースマップ レイヤーを追加し、道路フィーチャ レイヤーを削除します。
  2. ArcGIS Server へのユーザー接続が存在しない場合は、カタログ ウィンドウで作成します。
  3. ユーザー接続を展開し、CalculateShortestRoute サービスを展開します。
  4. [最短ルート計算] タスクをダブルクリックして開きます。
  5. 少なくとも 2 つのポイントを追加してストップ ロケーションを作成します。必要に応じて、[コンテンツ] ウィンドウに表示されているレイヤーの属性テーブル ([CalculateShortestRoute::Stops]) で、各ストップの名前を指定します。
  6. ルートが最初のストップから出発する日時を指定します。ルート案内をテキスト形式または HTML 形式のいずれかで出力するかを選択します。[OK] をクリックして、タスクを実行します。

    ArcGIS Server がリクエストを受信し、解析を実行し、「ルート」という名前のレイヤーを返し、ルート案内ファイルを一時ディレクトリに保存します。[結果] ウィンドウで、次のようにしてルート案内を参照できます。[現在のセッション] > CalculateShortestRoute の順に展開し、[ルート案内: RouteDirections] をダブルクリックします。([ルート案内: RouteDirections] を右クリックして、[ロケーションのコピー] を選択することによって、コンピューター上のファイルの保存場所を検索することもできます。)

関連トピック