ジオプロセシング サービスの例:道路ネットワークの最短ルート
フォルダ |
ShortestRoute |
目的 |
指定された時刻での道路ネットワーク上のポイント間の最短ルートを表示し、テキスト ファイルまたは HTML ファイルでルート案内を生成します。 |
サービス |
ShortestRouteService(ジオプロセシング サービス) |
ジオプロセシング タスク |
Calculate Shortest Route |
入力 |
|
出力 |
|
データ |
ToolData フォルダで提供されるサンフランシスコ エリアの道路ネットワーク データセット |
エクステンション |
|
備考 |
|
対応するフォルダ
このチュートリアルのデータは、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 に保存されています。
ネットワーク データセット
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 |
出力レイヤ名 |
Route |
インピーダンス属性 |
TravelTime |
開始時刻 |
|
累積 |
メートル、TravelTime |
U ターン ポリシー |
ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY(行き止まりと交差点のみ許可) |
モデル プロセス
[ルートの開始時刻の変更(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 for Server からタスクを実行している場合は、XML オプションはリストから削除されます。このオプションは、サービスを公開するときに、[サービス エディタ] で、[ルート案内のファイル タイプ] の下の [XML] をオフにすると削除されます。[解析の実行(Solve)] ツールから出力された SolveSucceeded 変数は、[ルート案内(Directions)] ツールの前提条件として使用されます。つまり、ルート案内ファイルは、[解析の実行(Solve)] ツールが入力ポイント間のルートを検索できた場合にのみ生成されます。
アイテム説明
ジオプロセシング モデルのアイテム説明をドキュメント化することによって、公開ウィザードがそのテキストをサービスのアイテム説明にコピーするため、公開されたサービスおよびそのパラメータもドキュメント化されます。サービスを説明する、つまりドキュメント化することは必要であり、サービスと適切に対話して最短ルートを検索する方法をユーザに理解させるのに役立ちます。この例のモデルとスクリプト ツールはドキュメント化されています。[コンテンツ] ウィンドウ内のジオプロセシング モデルを右クリックし、[アイテム説明] を選択することによって、そのドキュメントを確認できます。
公開
ジオプロセシング サービスは、以下に示す手順に従って公開します。
- ShortestRouteService.mxd を開きます。チュートリアル データのデフォルトの場所は、C:\arcgis\ArcTutor\GP Service Examples\Network Analyst\ShortestRoute です。
-
最短ルート計算ジオプロセシング モデルを実行します。
- カタログ ウィンドウで、[ShortestRouteService.tbx] を展開し、[最短ルート計算] モデルをダブルクリックします。
- [最短ルート計算] ツールのダイアログ ボックスで、[ストップ] の横にあるシンボルをクリックしてから、マップ上をクリックしてストップを追加します。
- [OK] をクリックして、ルートとルート案内を生成します。
- [ジオプロセシング] → [結果] の順にクリックして、[結果] ウィンドウを開きます。
- [結果] ウィンドウで [現在のセッション] を展開します。
- モデルを実行した日時の次の [CalculateShortestRoute] を右クリックし、[共有] → [ジオプロセシング サービス] の順に選択します。
- [サービスとして共有] ダイアログ ボックスで、[次へ] をクリックします。
- ドロップダウン リストから、公開者の権限で [ArcGIS Server 接続] を選択するか、ドロップダウン リストの右にあるボタンを使用して接続します。
- [次へ] をクリックします。
-
サービスをルート フォルダに公開することを選択するか、別のフォルダを指定して [続行] をクリックします。
[サービス エディタ] ダイアログ ボックスが表示されます。サービスを説明するために、ジオプロセシング モデルとスクリプト ツールのアイテム説明から、テキストがコピーされています。そのテキストは、編集のためにダイアログ ボックスの [アイテム説明] セクションに表示されるとともに、すぐ上のセクション([Route_Directions]、[開始時刻] など)にも表示されます。
- 分析範囲のルート解析が素早く処理されるように、[パラメータ] タブをクリックし、[同期] をオンにして、サービスを同期モードにします。ロケーション-アロケーションまたは OD コスト マトリックスを解析するサービスを公開している場合は、このプロパティを [非同期] に設定し、[プール] タブの下にある [クライアントがインスタンスを使用できる最大時間] の値を増やすことを検討してください。
- タスクの実行時にエラー メッセージまたは警告メッセージが返されるようにするために、[メッセージ レベル] を [警告] に変更します。
- [ルート案内のファイル タイプ] をクリックし、XML をオフにすることによって、ルート案内のファイル形式のオプションから XML を削除します。
-
[分析] をクリックして、[公開者] ウィンドウに警告メッセージまたはエラー メッセージを表示します。
データ ストアを設定していなければ、データがサーバにコピーされることを知らせる警告メッセージが表示されます。
その他のエラーの対策方法については、[公開者] ウィンドウの任意のエラー メッセージを右クリックしてください。
-
[サービス エディタ] ダイアログ ボックスで、[公開] をクリックします。
Streets_ND がサーバにコピーされることを知らせるダイアログ ボックスが、即座に表示される場合があります。その場合は、[OK] をクリックします。サービスが正常に公開されると、[完了] ダイアログ ボックスが表示されます。
- [OK] をクリックします。
使用
- 空のマップ ドキュメントを開き、チュートリアル データ(C:/arcgis/ArcTutor/GP Service Examples/Network Analyst/SanFrancisco/Transportation/Streets)から道路フィーチャクラスを追加します。必要に応じて、ArcGIS Online からベースマップ レイヤを追加し、道路フィーチャ レイヤを削除します。
- ArcGIS Server へのユーザ接続が存在しない場合は、カタログ ウィンドウで作成します。
- ユーザ接続を展開し、CalculateShortestRoute サービスを展開します。
- [最短ルート計算] タスクをダブルクリックして開きます。
- 少なくとも 2 つのポイントを追加してストップ ロケーションを作成します。必要に応じて、コンテンツ ウィンドウに表示されているレイヤの属性テーブル([CalculateShortestRoute::Stops])で、各ストップの名前を指定します。
-
ルートが最初のストップから出発する日時を指定します。ルート案内をテキスト形式または HTML 形式のいずれかで出力するかを選択します。[OK] をクリックして、タスクを実行します。
ArcGIS for Server がリクエストを受信し、解析を実行し、「ルート」という名前のレイヤを返し、ルート案内ファイルを一時ディレクトリに保存します。[結果] ウィンドウで、次のようにしてルート案内を参照できます。[現在のセッション] → [CalculateShortestRoute] の順に展開し、[ルート案内: RouteDirections] をダブルクリックします。([ルート案内: RouteDirections] を右クリックして、[ロケーションのコピー] を選択することによって、コンピュータ上のファイルの保存場所を検索することもできます。)