GP サービス サンプル:道路ネットワークでの近傍フィーチャの検出
フォルダ |
ClosestFacilities |
目的 |
道路ネットワーク沿いの走行時間に基づいて出発点から最も近い図書館を指定された数だけ検出し、各図書館への最短ルートを計算して、ルート案内をテキスト ファイルで生成します。 |
サービス |
|
ジオプロセシング タスク |
Find Nearby Libraries |
入力 |
ユーザがデジタイズした 1 つ以上のポイントと、検出する最寄りの図書館の数。 |
出力 |
|
データ |
道路ネットワーク データセットと、ToolData フォルダで提供されるサンフランシスコ エリアにあるすべての図書館の場所が含まれたフィーチャクラス。 |
エクステンション |
|
備考 |
解決後にさらに解析を行うためにネットワーク解析レイヤを使用する方法を示します。 |
対応するフォルダ
C:\arcgis\ArcTutor\GP Service Examples\ClosestFacilities に完全なモデルとデータが含まれています。サンプルは英語環境で作成されているため、日本語環境でこのモデルを実行する場合は、以下の手順に従ってモデルを編集する必要があります。
このサンプルについて
このサンプルで作成する ClosestFacilitiesService は、道路ネットワークで最寄り施設の解析を実行するジオプロセシング タスクの公開方法を示します。Find Nearby Libraries タスクは、道路ネットワーク沿いの走行時間に基づいて、指定されたポイントから指定された数の最寄りの図書館までの最短ルートを求めます。最寄りの図書館へのルートとルート案内も出力します。
データ
このサンプルのデータは、C:\arcgis\ArcTutor\GP Service Examples\ClosestFacilities にあります。
ネットワーク データセット
ToolData フォルダには、ファイル ジオデータベース SanFrancisco.gdb が含まれています。このジオデータベースの Transportation フィーチャ データセットには、ネットワーク データセット Streets_ND が含まれています。このネットワーク データセットは、サンフランシスコ エリアの道路ネットワークをモデリングし、ネットワーク属性 TravelTime(各道路セグメントの走行時間(分)を示す)を提供します。
ベースマップ
SanFranciscoBaseMap.mxd 内のベースマップ レイヤには Streets というレイヤが 1 つ含まれています。このレイヤは、ネットワーク データセットの範囲を示します。つまり、このタスクを使用して、この範囲内でのみ最寄り施設を決定することができます。
SanFranciscoBaseMap はマップ サービスとして公開されます。
ツールボックスとマップ ドキュメント
このジオプロセシング サービスのツールボックスは ClosestFacilitiesService であり、サービスのソース マップ ドキュメントは ClosestFacilitiesService.mxd です。ClosestFacilitiesService.mxd には、次の 4 つのソース データ レイヤと Find Nearby Libraries ツール レイヤが含まれています。
- Streets_ND - ネットワーク データセット
- Library - サンフランシスコ エリアにあるすべての図書館の場所が含まれたフィーチャ レイヤ
- ClosestLibrariesSymbology - 出力図書館のシンボルを定義するフィーチャ レイヤ
- OutputRoutesSymbology - 出力ルートのシンボルを定義するフィーチャ レイヤ
モデル
モデルの概要
Find Nearby Libraries モデルは次のようになります。入力変数は次の 2 つです。
- Input Locations - 最寄りの図書館を検索するためにユーザが指定するポイント
- Number of libraries to find
このモデルは、最寄り施設ネットワーク解析レイヤを作成し、図書館フィーチャ レイヤから図書館の場所を施設として追加し、ユーザが指定した場所をインシデントとして追加し、最寄りの図書館へのルートを判断するために解析を実行し、ルート案内を生成し、施設として読み込まれているすべての図書館からのルートに含まれる図書館だけを検出します。
エレメント |
タイプ |
説明 |
---|---|---|
Street Network |
ネットワーク データセット レイヤ。 |
ネットワーク データセット レイヤ |
Number of libraries to find |
Long、入力パラメータ |
各入力位置に対して検出する図書館の数。 |
ツール |
最寄り施設ネットワーク解析レイヤを作成します。このレイヤには、最寄り施設が計算される方法を決定するデータとプロパティに加えて、計算の結果が含まれます。 |
|
Closest Facility |
Network Analyst レイヤ |
最寄り施設レイヤ。 |
Library |
フィーチャ レイヤ |
すべての図書館の場所が含まれたポイント フィーチャクラスです。道路ネットワーク上のこれらのポイントの位置は、「図書館のネットワーク ロケーションの事前計算」セクションの説明のとおり、すでに算出されています。 |
ツール |
最寄り施設レイヤに図書館の場所を施設として追加します。 |
|
Closest Facility (1) |
Network Analyst レイヤ |
施設が含まれた最寄り施設レイヤ。 |
Input Locations |
フィーチャ セット(ポイント)、入力パラメータ |
最寄りの図書館を判断するためのポイント フィーチャ。 |
ロケーションの追加(Add Locations) |
ツール |
最寄り施設レイヤに入力ロケーションをインシデントとして追加します。 |
Closest Facility (2) |
Network Analyst レイヤ |
施設とインシデントが含まれる最寄り施設レイヤ。 |
ツール |
最寄り施設を計算し、各施設への最短ルートを決定します。 |
|
Closest Facility (3) |
Network Analyst レイヤ |
すべての施設と最寄り施設への最短ルートが含まれた最寄り施設レイヤ。 |
SolveSucceeded | ブール値 | [解析の実行(Solve)] ツールが成功したことを示す [解析の実行(Solve)] の出力。 |
ツール | 最寄り施設へのルートに対するルート案内を生成します。 | |
Text Directions | ファイル、出力パラメータ | ルート案内が含まれたテキスト ファイル。 |
Closest Facility (4) | Network Analyst レイヤ | すべての施設と最寄り施設への最短ルートが含まれた最寄り施設レイヤ。 |
ツール |
最寄り施設レイヤから Routes サブレイヤを選択します。 |
|
Routes |
フィーチャ レイヤ |
Closest Facility (3) Network Analyst レイヤのルート レイヤ。 |
OutputRoutesSymbology |
レイヤ |
Routes フィーチャ レイヤにシンボルを適用するために使用されるシンボル レイヤ。 |
ツール |
OutputRoutesSymbology レイヤから Routes レイヤにシンボルを適用します。 |
|
Closest Routes | フィーチャ レイヤ、出力パラメータ | 適切なシンボルを含むルート レイヤ。 |
Select Data (Facilities) |
ツール |
最寄り施設レイヤから施設サブレイヤを選択します。 |
Facilities |
フィーチャ レイヤ |
Closest Facility (3) Network Analyst レイヤの施設レイヤ。 |
ツール |
Routes レイヤの FacilityID、FacilityRank、Total_TravelTime、Total_Meters フィールドを Facilities レイヤに結合します。 |
|
Facilities (3) |
テーブル ビュー |
結合フィールドが含まれた出力 Facilities レイヤ。 |
ツール |
FacilityID 値が Null ではない施設だけを選択します。出力施設に必要なフィールドだけを表示するように設定されます。 |
|
Facilities_Layer |
フィーチャ レイヤ |
ルートに含まれる施設だけが含まれた施設フィーチャ レイヤ。 |
ClosestLibrariesSymbology |
レイヤ |
Facilities_Layer にシンボルを適用するために使用されるシンボル レイヤ。 |
Apply Symbology From Layer (1) |
ツール |
ClosestLibrariesSymbology レイヤから Facilities_layer にシンボルを適用します。 |
Closest Libraries |
フィーチャ レイヤ、出力パラメータ |
適切なシンボルが含まれた Facilities_Layer。 |
図書館のネットワーク ロケーションの事前計算
最寄り施設解析で使用される図書館の場所は一時的なものでなく、ネットワーク上でのそれらの場所は常に固定です。したがって、図書館が施設として追加されるたびにそれらのネットワーク ロケーションを計算するのではなく、ネットワーク ロケーションを一度にまとめて計算するほうがより効率的な方法です。
[ロケーション フィールドの計算(Calculate Locations)] ツールを使用して、図書館のネットワーク ロケーションを判断し、SourceID、SourceOID、PosAlong、SideOfEdge フィールドに情報を格納することができます。次に、この情報を [ロケーションの追加(Add Locations)] ツール に使用して、新しい最寄り施設レイヤに図書館を施設として読み込むことができます。このほうが、[ロケーションの追加(Add Locations)] ツールを使って図書館のネットワーク ロケーションを判断してからそれらを施設として読み込むよりも、はるかに高速です。図書館レイヤの場合、ネットワーク ロケーションは [ロケーション フィールドの計算(Calculate Locations)] ツールを使用して、Streets_ND ネットワーク データセット レイヤに基づいて判断されています。
施設が一時的なものである場合は、それらが施設として追加されるたびに、それらのネットワーク ロケーションを判断する必要があります。このような場合は、[ロケーション フィールドの計算(Calculate Locations)] ツールを使ってネットワーク ロケーションを事前に計算しても、パフォーマンス上の利点はありません。
モデル プロセス
[最寄り施設の検出レイヤの作成(Make Closest Facility Layer )] ツールは、新しい Network Analyst レイヤ Closest Facility を作成します。このレイヤは、解析プロパティを格納し、解析に使用する Streets_ND ネットワーク データセット レイヤを参照し、入力施設とインシデントおよび出力ルートを格納します。このネットワーク データセットには、各道路セグメントをトラバースするために必要な走行時間(分)を指定する、TravelTime というネットワーク コスト属性があります。この属性は、インピーダンス属性として使用されます。Number of libraries to find 変数は、検出する施設の数を指定します。
[ロケーション(図書館)の追加(Add Locations (Libraries))] ツールは、図書館の場所を施設として最寄り施設レイヤに追加します。図書館のネットワーク ロケーションは [ロケーション フィールドの計算(Calculate Locations)] ツールを使ってすでに計算されているため、[ジオメトリの代わりにネットワーク ロケーション フィールドを使用する] オプションはオンになっています。
[ロケーションの追加(Add Locations)] ツールは、ユーザがデジタイズしたポイントをインシデントとして最寄り施設レイヤに追加します。Input Locations パラメータはフィーチャ セット データ タイプなので、ユーザがデジタイズしたポイントをインシデントとしてモデルに対話形式で指定することができます。フィーチャ セットのスキーマとシンボルは、ToolData フォルダにある InputLocations.lyr ファイルから取得されます。
[解析の実行(Solve)] ツールは、各インシデントから指定された数の最寄り施設を検索し、TravelTime ネットワーク属性に基づいて各施設への最短ルートを計算します。計算されたルートは、最寄り施設出力レイヤの Routes サブレイヤに書き出されます。
Network Analyst レイヤは、ArcGIS Server クライアントでサポートされる出力パラメータ データ タイプではありません。そのため、Closest Facility Network Analyst レイヤからの Routes サブレイヤの取得には [データの選択(Select Data)] ツールを使用します。
Routes サブレイヤは、Network Analyst レイヤのシンボルを使用します。ルートごとに色を変えるために異なるシンボルを適用するには、[レイヤのシンボル情報を適用(Apply Symbology From Layer)] ツールを使用して、OutputRoutesSymbology レイヤの Routes サブレイヤにシンボルを適用します。
[ルート案内(Directions)] ツールは、ルート案内を生成し、それらをテキスト ファイルに出力するために使用されます。%scratchworkspace% インライン変数を使用して、ルート案内が含まれた出力テキスト ファイルをサーバ上のジョブ ディレクトリに作成します。
Closest Facility レイヤ内の Routes サブレイヤには、ルートに含まれる施設のオブジェクト ID を示す FacilityID フィールドが含まれています。この情報を使用して、すべての施設から、ルートに含まれる施設だけを選択することができます。[フィールド結合(Join Field)] ツールは、FacilityID フィールドを使用して Routes サブレイヤを施設レイヤに結合します。このツールは、ルートの FacilityID と施設の ObjectID に基づいて、FacilityID、FacilityRank、Total_TravelTime、Total_Meters フィールドを施設サブレイヤに結合します。
[フィールド結合(Join Field)] ツールの出力には、施設サブレイヤの FacilityID フィールドが含まれています。このフィールドの値は、ルートに含まれない施設では Null になります。[フィーチャ レイヤの作成(Make Feature Layer)] ツールを使用すると、FacilityID フィールドの値が Null の施設だけが選択され、新しいレイヤに出力されます。
施設レイヤのシンボルは、[レイヤのシンボル情報を適用(Apply Symbology From Layer)] ツールを使って OutputLibrariesSymbology レイヤから設定されます。
ツール レイヤ
Find Nearby Libraries ツール レイヤは、Find Nearby Libraries モデルを ArcMap のコンテンツ ウィンドウにドラッグすることにより作成されます。
モデルの出力はメモリ内のフィーチャ レイヤなので、最初に ClosestFacilitiesService.mxd を開いた時点では、ツール レイヤ内の Closest Libraries and Routes サブレイヤのデータ ソースは無効になっています。マップ ドキュメントはそのまま公開されます。ただし、ツール レイヤを再実行し、サービスを公開する前にモデルが正常に動作することを確認する必要があります。
ツール レイヤにおいて出力レイヤのシンボルを変更すると、新しいシンボルが使用されないことに注意してください。これは、このモデルの出力がフィーチャ レイヤであり、それらのシンボルが [レイヤのシンボル情報を適用(Apply Symbology From Layer)] ツールによってすでにモデルに定義されているためです。
公開
SanFranciscoBaseMap.mxd はマップ サービスとして公開されます。ClosestFacilitiesService.mxd は、結果マップ サービスに基づかないジオプロセシング サービスとして公開されます。
- カタログ ウィンドウで、SanFranciscoBaseMap.mxd を右クリックして [ArcGIS Server で公開] をクリックします。
- すべてデフォルト設定を使用します。
- カタログ ウィンドウで、[GIS Servers] ノードの下のサーバ管理者接続に移動して右クリックし、[新規サービスの追加] を選択します。サービスの名前として ClosestFacilitiesService を指定し、タイプとして [Geoprocessing Service] を選択します。
- [次へ] をクリックします。
- 次のパネルでは、[実行方法] で [同期] を選択します。[ジオプロセシング サービスで公開されているツールの格納場所] オプションでは、[マップ] を選択し、[マップ ドキュメント] で ClosestFacilitiesService.mxd を指定します。サービスをテストするので、[メッセージの表示] をオンにします。
- [次へ] をクリックします。ここからは、ウィザードによって提供されるデフォルト値を使ってサービスを作成することができます。
使用
- ArcMap を空のドキュメントで開始します。
- ArcGIS Server へのユーザ接続が存在しない場合は、カタログ ウィンドウで作成します。
- ArcMap のコンテンツ ウィンドウに SanFranciscoBaseMap マップ サービスを追加します。
- カタログ ウィンドウの [GIS Servers] ユーザ接続ノードの下にある ClosestFacilitiesService ツールボックスを展開し、Find Nearby Libraries ツールを開きます。結果は次のようになります。
- ポイントを追加して入力ロケーションを作成します。検出する図書館の数を 3 に指定し、[OK] をクリックしてタスクを実行します。
タスクが完了すると、コンテンツ ウィンドウに Closest Libraries and Routes 出力レイヤが表示されます。入力ロケーションはタスクから出力されるのではなく、[結果] ウィンドウの [入力] ノードからコンテンツ ウィンドウに追加されます。
- ルート案内が含まれたテキスト ファイルがサーバ上のジョブ ディレクトリから現在の ArcMap セッションのテンポラリ ワークスペースにコピーされます。このファイルは、[結果] ウィンドウでダブルクリックすると表示できます。