Network Analyst のライセンスで利用可能。
ArcGIS Server サイトでネットワーク解析サービスをホストすることにより、Web 上で交通ネットワークのネットワーク解析を実行できます。 ネットワーク解析には、最寄り施設の検索、単一車両向けおよび複数車両向けの最適ルートの検索、ロケーション-アロケーションを使用した施設の検索、OD コスト マトリックスの計算、および到達圏の解析が含まれます。 このチュートリアルでは、ネットワーク解析に使用できるマップ ドキュメントを作成し、ネットワーク解析サービスとして公開する手順を示します。 その後に、ArcMap と Web アプリケーションでネットワーク解析サービスを使用する方法について説明します。 さまざまな種類のネットワーク解析とそれらの機能の詳細については、ArcGIS ヘルプの「ネットワーク解析の種類」をご参照ください。
チュートリアルを始める前に
現在 ArcGIS Server をインストールしただけの状態であれば、サーバーに接続してサービスを公開する前に、いくつかの準備作業が必要です。
- ArcGIS Server サイトを構成する方法については、このヘルプ システムの「インストール後の作業」セクションをご参照ください。
- GIS リソースで参照されているデータをサーバーで利用できるようにする方法については、「データを ArcGIS Server でアクセス可能にする」をご参照ください。
チュートリアル データ
このチュートリアルのデータは ArcGIS Server と一緒にインストールされ、<ArcGIS Server installation directory>\help\samples\data\network_analyst にあります。
必要に応じて、代わりに自分のデータを使って手順を試すこともできます。
マップ ドキュメントの作成
ネットワーク解析サービスには、ネットワーク解析レイヤーが 1 つ以上含まれたマップ サービスが必要です。 つまり、サーバーに公開されるマップ ドキュメントには、[Network Analyst] ツールバーのツールを使用して作成されたネットワーク解析レイヤーが、少なくとも 1 つ含まれている必要があります。 ネットワーク解析サービスは、ルート解析レイヤー、最寄り施設解析レイヤー、および到達圏解析レイヤーをサポートします。
次の手順に従って、これら 3 種類のネットワーク解析をすべて実行できる単一のマップ ドキュメントを作成します。
- ArcMap を起動して、新しい空のマップ ドキュメントを開きます。
- [カスタマイズ] > [エクステンション] の順にクリックし、[Network Analyst] をオンにして、Network Analyst エクステンションを有効にします。
- [カスタマイズ] > [ツールバー] > [Network Analyst] の順にクリックして、[Network Analyst] ツールバーが表示されるようにします。
- 標準ツールバーの [データの追加] をクリックして、ネットワーク データセットを追加します。このデータセットは、ネットワーク解析レイヤーを作成するためにマップに含まれている必要があります。 SanFrancisco データベースにある Streets_ND ネットワーク データセットを参照します。 Streets_ND に含まれるフィーチャクラスをすべて追加するかどうかを確認するメッセージが表示されたら、[いいえ] をクリックします。
- [Network Analyst] ツールバーの [Network Analyst] ドロップダウン メニューをクリックし、[新規ルート] を選択して、ルート ネットワーク解析レイヤーをマップに追加します。
ネットワーク解析レイヤーは、ArcMap で作成するときに自動的にアクティブなネットワーク データセットに関連付けられます。 ルート解析レイヤーの作成時に San Francisco ネットワークがアクティブであったため、これら 2 つのレイヤーは一緒に関連付けられます。 また、ネットワーク解析レイヤーは関連付けられたネットワーク データセットをファイル パスで参照します。したがってネットワーク データセット レイヤーは、これ以降 ArcMap では必要ありません。
- Streets_ND またはネットワーク データセット レイヤーの名前を右クリックし、[削除] をクリックします。
マップは空ですが、ルート解析レイヤーが存在し、サービスとして公開できます。 最終的に公開したネットワーク解析サービスをマップに追加するとき、最初は (つまり、結果を生成するまで) フィーチャは表示されません。 ネットワーク解析サービスを利用するとき、追加コンテキストを指定するために、ArcGIS Online などで提供されるキャッシュされたマップ サービスを利用することもできます。
- [ファイル] > [名前を付けて保存] の順にクリックして、マップ ドキュメントを保存します。
ネットワーク解析サービスの公開
ネットワーク解析レイヤーが含まれたマップ ドキュメントを作成したら、それをネットワーク解析サービスとして公開できます。 マップ ドキュメントをサービスとして公開し、ネットワーク解析ケーパビリティを有効にすると、同じ名前のネットワーク解析サービスが作成されます。
ArcMap を使用してマップ ドキュメントを構成し ArcGIS Server で公開するには、以下の手順に従います。
- ArcMap のメイン メニューで、[ファイル] > [共有] > [サービス] の順に選択します。
- [サービスとして共有] ウィンドウで、[サービスを公開] を選択します。 [次へ] をクリックします。
- [サービスを公開] ダイアログ ボックスで、[ArcGIS Server に接続] をクリックして、サーバーへの接続を新規に作成します。
- [ArcGIS Server サーバーの追加] ウィンドウで、[GIS サービスを公開する] を選択します。 [次へ] をクリックします。
- [サーバーの URL] に接続先の ArcGIS Server サイトの URL を入力します (例: http://gisserver.domain.com:6080/arcgis)。
- [サーバー タイプ] ドロップダウン リストから、[ArcGIS Server] を選択します。
公開プロセス中に、サービス定義ファイルが作成されローカルのディスクに一時的に保存されます。 公開プロセスが完了すると、サービス定義がサーバーにアップロードされ、ローカル ファイルは削除されます。
- このチュートリアルでは、デフォルトのステージング フォルダーを使用して操作を続けます。
- サーバー管理者がサイトのセキュリティを有効にしている場合は、[ユーザー名] と [パスワード] に値を入力します。 [完了] をクリックします。
- 必要に応じて、[サービスを公開] ウィンドウでサービスの新しい名前を入力します。 120 文字を超える名前や、英数字とアンダースコア (_) 以外の文字が含まれた名前を使用することはできません。 [次へ] をクリックします。
- デフォルトでは、ArcGIS Server のルート フォルダー (root) にサービスが公開されます。 サービスはルート フォルダー以下のサブディレクトリに整理することができます。 サービスを公開するフォルダーを選択するか、サービスを格納する新しいフォルダーを作成します。 [続行] をクリックします。
サービス エディターが表示されます。 [サービス エディター] を使用して、ネットワーク解析サービスでユーザーが実行できる操作を選択し、サーバーがサービスを公開する方法を調整します。
- [ケーパビリティ] タブをクリックします。
デフォルトでは、マッピングと KML が有効になっています。
- [Network Analysis] をオンにします。
- [サービス エディター] の左側のウィンドウで、[Network Analysis] タブをクリックして、ネットワーク解析サービスで有効なオペレーションとプロパティを確認します。 このチュートリアルでは、デフォルトの設定を使用して操作を続けます。 詳細については、「ネットワーク解析サービス」をご参照ください。 ネットワーク解析サービスを配備するための最適な構成方法については、「サービスのチューニングと構成」をご参照ください。
- [分析] をクリックします。 マップ ドキュメントをサーバーに公開できるかどうかが検証されます。
ヒント:
ネットワーク解析サービスを構成するときに表示領域を広くするには、[サービス エディター] の上部にある [折りたたみ] ボタンをクリックします。
- [準備] ウィンドウでエラーを修正します。エラーの修正は公開の前に行う必要があります。 さらに必要であれば、警告メッセージと情報メッセージに従って問題を修正し、ネットワーク解析サービスのパフォーマンスと外観を改善します。 これらの問題の解決の詳細については、「GIS リソースの分析」をご参照ください。
メモ:
サーバーが確実にデータを認識して使用できるように、フォルダー、ジオデータベース、およびクラウド ストレージの場所を ArcGIS Server サイトに登録することができます。 以下の手順を続ける場合、未登録のデータ ソースに基づくマップ ドキュメントが参照するデータはすべて、公開時にサーバーにコピーされます。 これは、サーバーがサービスで使用されているすべてのデータにアクセスできることを保証するための予防的な処置です。 データ ソースを ArcGIS Server サイトに登録する手順の詳細は、「ArcMap を使用したデータの ArcGIS Server への登録」をご参照ください。
- マップ ドキュメント内のエラーを修正したら、[公開] をクリックします。
マップ ドキュメントが ArcGIS Server で公開され、マップ サービスおよび関連するネットワーク解析サービスが同じ名前で作成されます。
ネットワーク解析サービスの使用
ArcGIS Server のクライアント (たとえば、ArcGIS Desktop や Web ブラウザー) は、ネットワーク解析サービスを利用する機能を備えています。 ArcMap では、[ルート検索] ボタンを使用して、ネットワーク解析サービスが備えるルーティング機能を利用できます。 Web ブラウザーでは、ネットワーク解析サービスは、ArcGIS Online、ArcGIS Enterprise、および ArcGIS API for JavaScript で作成された Web アプリケーションを使用してプログラムにより使用されます。 これらのクライアントの詳細については、「ネットワーク解析サービス」をご参照ください。
ネットワーク解析サービスを ArcGIS Desktop で利用する方法、または ArcGIS API for JavaScript で構築された基本的な Web アプリケーションで利用する方法については、次のセクションをご参照ください。
ArcMap でのルート サービスの利用
ArcMap でルート サービスを利用するには、次の手順を実行します。
- ArcMap を起動して、新しい空のマップ ドキュメントを開きます。
- ArcGIS Server への公開者接続は今もあるはずですが、このサービスを ArcMap で利用するにはユーザー接続が必要です。 [カタログ] ウィンドウで、[GIS サーバー] ノードを展開し、[ArcGIS Server サーバーの追加] をダブルクリックして、ユーザー接続の作成を開始します。 接続を設定するステップごとの手順については、「ArcGIS Desktop から ArcGIS Server への接続」をご参照ください。
- [カタログ] ウィンドウで、[GIS Servers] ノードを展開し、新しい ArcGIS Server 接続 (最後に「(ユーザー)」が付いています) をダブルクリックします。
- サーバー接続内で、ネットワーク解析サービスが含まれているマップ サービスを検索して、[コンテンツ] ウィンドウにドラッグします。
- レイヤーが [コンテンツ] ウィンドウに存在していますが、マップは空のままです。 マップにコンテキストを指定するには、ArcGIS Online からベースマップを追加します。
- [標準] ツールバーの [データの追加] ボタン の横にあるドロップダウン矢印をクリックして [ベースマップの追加] を選択します。
- [地形図] などのベースマップをダブルクリックします。
- マップの南側にあるサンフランシスコ半島を拡大します。追加するストップは、ネットワーク解析レイヤーの作成に使用する San Francisco ネットワーク データセットの範囲内に収まる必要があります。 提供された SanFrancisco データベースを使用していない場合は、この手順を省略します。
- [ツール] ツールバーで、[ルート検索] をクリックします。
- [ルート検索] ダイアログ ボックスで、[オプション] タブをクリックします。
- [ルート サービス] ドロップダウン リストをクリックし、[ルート <Layers\[ルート サービス名]>] を選択します。
- [ストップ] タブをクリックします。 [ストップ] タブのコントロールとパラメーターを使用して、ネットワーク解析の入力を設定します。
- ルートを解析する準備ができたら、[ルート検索] をクリックします。
基本的な Web アプリケーションでのルート サービスの利用
Web アプリでルート サービスを利用するには、次の手順を実行します。
- ネットワーク解析サービスを Web アプリケーションで利用する前に、URL を確認しておく必要があります。 Web ブラウザーで ArcGIS Server Services Directory (例: http://gisserver.domain.com:6080/arcgis/rest/services) を参照します。
- サービス リストで、使用するネットワーク解析サービスをクリックします。 ネットワーク解析サービスには「(NAServer)」が付加されます。 サービスがフォルダーに存在する場合は、そのフォルダーに移動してサービスを選択します。
サービスの名前、サービスの説明、および利用可能な解析レイヤーのリストを示すページが表示されます。
- [ルート] をクリックします。
ルート レイヤーのプロパティを示すページが表示されます。
- ブラウザーのアドレス バーに表示されているこのページの URL をコピーして、テキスト エディターに貼り付けます。
これがネットワーク解析サービスのルート タスクの REST URL です。 URL の形式は http://gisserver.domain.com:6080/arcgis/rest/services/folder/service/NAServer/Route です。
- 次のサンプル コードをコピーして、メモ帳などのテキスト エディターに貼り付けます。
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"> <title>Simple Routing</title> <link rel="stylesheet" href="https://js.arcgis.com/3.16/dijit/themes/claro/claro.css"> <link rel="stylesheet" href="https://js.arcgis.com/3.16/esri/css/esri.css"> <script src="https://js.arcgis.com/3.16/"></script> <script> require([ "esri/urlUtils", "esri/map", "esri/graphic", "esri/tasks/RouteTask", "esri/tasks/RouteParameters", "esri/tasks/FeatureSet", "esri/symbols/SimpleMarkerSymbol", "esri/symbols/SimpleLineSymbol", "esri/Color", "dojo/on", "dijit/registry", "dijit/layout/BorderContainer", "dijit/layout/ContentPane", "dijit/form/HorizontalSlider", "dijit/form/HorizontalRuleLabels" ], function ( urlUtils, Map, Graphic, RouteTask, RouteParameters, FeatureSet, SimpleMarkerSymbol, SimpleLineSymbol, Color, on, registry ) { var map, routeTask, routeParams; var stopSymbol, routeSymbol, lastStop; //When referencing a local route task, the proxy rule may be removed or commented out. urlUtils.addProxyRule({ urlPrefix: "route.arcgis.com", proxyUrl: "/sproxy/" }); map = new Map("map", { basemap : "streets", center : [-117.195, 34.057], zoom : 14 }); map.on("click", addStop); routeTask = new RouteTask("https://route.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World"); //setup the route parameters routeParams = new RouteParameters(); routeParams.stops = new FeatureSet(); routeParams.outSpatialReference = { "wkid" : 102100 }; routeTask.on("solve-complete", showRoute); routeTask.on("error", errorHandler); //define the symbology used to display the route stopSymbol = new SimpleMarkerSymbol().setStyle(SimpleMarkerSymbol.STYLE_CROSS).setSize(15); stopSymbol.outline.setWidth(4); routeSymbol = new SimpleLineSymbol().setColor(new dojo.Color([0, 0, 255, 0.5])).setWidth(5); //Adds a graphic when the user clicks the map. If 2 or more points exist, route is solved. function addStop(evt) { var stop = map.graphics.add(new Graphic(evt.mapPoint, stopSymbol)); routeParams.stops.features.push(stop); if (routeParams.stops.features.length >= 2) { routeTask.solve(routeParams); lastStop = routeParams.stops.features.splice(0, 1)[0]; } } //Adds the solved route to the map as a graphic function showRoute(evt) { map.graphics.add(evt.result.routeResults[0].route.setSymbol(routeSymbol)); } //Displays any error returned by the Route Task function errorHandler(err) { alert("An error occured\n" + err.message + "\n" + err.details.join("\n")); routeParams.stops.features.splice(0, 0, lastStop); map.graphics.remove(routeParams.stops.features.splice(1, 1)[0]); } }); </script> </head> <body class="claro"> <div id="map" style="width:600px; height:400px; border:1px solid #000;"></div> <p>Click on the map to add stops to the route. The route from the last stop to the newly added stop is calculated. If a stop is not reachable, it is removed and the last valid point is set as the starting point.</p> </body> </html>
- routeTask = new RouteTask パラメーターを検索し、括弧内の URL をネットワーク解析ルート タスクの REST URL に一致するように変更します。
- テキスト ドキュメントを保存して閉じます。
- ドキュメントのファイル拡張子を、元の拡張子から *.html に変更します (例: Route.txt を Route.html に変更)。
- HTML ドキュメントを Web ブラウザーで開きます。 Web アプリケーションの指示に従って、ネットワーク解析サービスを使用します。