Skip To Content

チュートリアル: ネットワーク解析サービスの公開

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

複雑度: 初級 データ要件: ソフトウェアと共にインストール済み データ パス: <ArcGIS for Server インストール ディレクトリ>\help\samples\data\network_analyst\SanFrancisco.gdb 目的: ネットワーク解析サービスを ArcGIS Server で公開して、ArcMap および Web アプリケーションで利用します。

ArcGIS Server でネットワーク解析サービスをホストすることにより、Web 上で交通ネットワークのネットワーク解析を実行できます。ネットワーク解析には、最寄り施設の検索、単一車両向けおよび複数車両向けの最適ルートの検索、ロケーション-アロケーションを使用した施設の検索、OD コスト マトリックスの計算、および到達圏の解析が含まれます。このチュートリアルでは、ネットワーク解析に使用できるマップ ドキュメントを作成し、ネットワーク解析サービスとして公開する手順を示します。その後に、ArcMap と Web アプリケーションでネットワーク解析サービスを使用する方法について説明します。さまざまな種類のネットワーク解析とそれらの機能の詳細については、ArcGIS ヘルプの「ネットワーク解析の種類」をご参照ください。

チュートリアルを始める前に

現在 ArcGIS Server をインストールしただけの状態であれば、サーバーに接続してサービスを公開する前に、いくつかの準備作業が必要です。

チュートリアル データ

このチュートリアルのデータは ArcGIS Server と共にインストールされ、<ArcGIS for Server インストール ディレクトリ>\help\samples\data\network_analyst にあります。

必要に応じて、代わりに自分のデータを使って手順を試すこともできます。

マップ ドキュメントの作成

ネットワーク解析サービスには、ネットワーク解析レイヤーが 1 つ以上含まれたマップ サービスが必要です。つまり、サーバーに公開されるマップ ドキュメントには、[Network Analyst] ツールバーのツールを使用して作成されたネットワーク解析レイヤーが、少なくとも 1 つ含まれている必要があります。ネットワーク解析サービスは、ルート解析レイヤー、最寄り施設解析レイヤー、および到達圏解析レイヤーをサポートします。

次の手順に従って、これら 3 種類のネットワーク解析をすべて実行できる単一のマップ ドキュメントを作成します。

  1. ArcMap を起動して、新しい空のマップ ドキュメントを開きます。
  2. [カスタマイズ] > [エクステンション] の順にクリックし、[Network Analyst] をオンにして、Network Analyst エクステンションを有効にします。
  3. [カスタマイズ] > [ツールバー] > [Network Analyst] の順にクリックして、[Network Analyst] ツールバーが表示されるようにします。
  4. 標準ツールバーの [データの追加]データの追加 をクリックして、ネットワーク データセットを追加します。このデータセットは、ネットワーク解析レイヤーを作成するためにマップに含まれている必要があります。SanFrancisco データベースにある Streets_ND ネットワーク データセットを参照します。Streets_ND に含まれるフィーチャクラスをすべて追加するかどうかを確認するメッセージが表示されたら、[いいえ] をクリックします。
  5. [Network Analyst] ツールバーの [Network Analyst] ドロップダウン メニューをクリックし、[新規ルート] を選択して、ルート ネットワーク解析レイヤーをマップに追加します。

    Network Analyst ツールバー

    ネットワーク解析レイヤーは、ArcMap で作成するときに自動的にアクティブなネットワーク データセットに関連付けられます。ルート解析レイヤーの作成時に San Francisco ネットワークがアクティブであったため、これら 2 つのレイヤーは一緒に関連付けられます。また、ネットワーク解析レイヤーは関連付けられたネットワーク データセットをファイル パスで参照します。したがってネットワーク データセット レイヤーは、これ以降 ArcMap では必要ありません。

  6. Streets_ND またはネットワーク データセット レイヤーの名前を右クリックし、[削除] をクリックします。マップは空ですが、ルート解析レイヤーが存在し、サービスとして公開できます。最終的に公開したネットワーク解析サービスをマップに追加するとき、最初は (つまり、結果を生成するまで) フィーチャは表示されません。ネットワーク解析サービスを利用するとき、追加コンテキストを指定するために、ArcGIS Online などで提供されるキャッシュされたマップ サービスを利用することもできます。
  7. [ファイル] > [名前を付けて保存] の順にクリックして、マップ ドキュメントを保存します。

ネットワーク解析サービスの公開

ネットワーク解析レイヤーが含まれたマップ ドキュメントを作成したら、それをネットワーク解析サービスとして公開できます。マップ ドキュメントをサービスとして公開し、ネットワーク解析ケーパビリティを有効にすると、同じ名前のネットワーク解析サービスが作成されます。

ArcMap を使用してマップ ドキュメントを構成し ArcGIS Server で公開するには、以下の手順に従います。

  1. ArcMap のメイン メニューで、[ファイル] > [共有] > [サービス] の順に選択します。
  2. [サービスとして共有] ウィンドウで、[サービスを公開] を選択します。[次へ] をクリックします。
  3. [サービスを公開] ダイアログ ボックスで、[ArcGIS Server に接続]ArcGIS Server の追加 をクリックして、サーバーへの新しい接続を作成します。
  4. [ArcGIS Server サーバーの追加] ウィンドウで、[GIS サービスを公開する] を選択します。[次へ] をクリックします。
  5. [サーバーの URL] に、接続する ArcGIS Server サイトの URL を入力します。URL の例は http://gisserver.domain.com:6080/arcgis です。
  6. [サーバー タイプ] ドロップダウン リストから、[ArcGIS Server] を選択します。
  7. 公開プロセス中に、サービス定義ファイルが作成され、ローカルのディスクに一時的に保存されます。公開プロセスが完了すると、サービス定義がサーバーにアップロードされ、ローカル ファイルは削除されます。このチュートリアルでは、デフォルトのステージング フォルダーを使用して操作を続けます。
  8. サーバー管理者がサイトのセキュリティを有効にしている場合は、[ユーザー名][パスワード] に値を入力します。[完了] をクリックします。
  9. 必要に応じて、[サービスを公開] ウィンドウでサービスの新しい名前を入力します。120 文字を超える名前や、英数字とアンダースコア (_) 以外の文字が含まれた名前を使用することはできません。[次へ] をクリックします。
  10. デフォルトでは、ArcGIS Server のルート フォルダー (root) にサービスが公開されます。サービスはルート フォルダー以下のサブディレクトリに整理することができます。サービスを公開するフォルダーを選択するか、サービスを格納する新しいフォルダーを作成します。[続行] をクリックします。
  11. サービス エディターが表示されます。[サービス エディター] を使用して、ネットワーク解析サービスでユーザーが実行できる操作を選択し、サーバーがサービスを公開する方法を調整します。[機能] タブをクリックします。
  12. デフォルトでは、マッピングと KML が有効になっています。[Network Analysis] をオンにします。
  13. [サービス エディター] の左側のウィンドウで、[Network Analysis] タブをクリックして、ネットワーク解析サービスで有効なオペレーションとプロパティを確認します。このチュートリアルでは、デフォルトの設定を使用して操作を続けます。詳細については、「ネットワーク解析サービス」をご参照ください。ネットワーク解析サービスを配備するための最適な構成方法については、「サービスのチューニングと構成」をご参照ください。
  14. [分析] 統計情報の更新 をクリックします。マップ ドキュメントをサーバーに公開できるかどうかが検証されます。
    ヒント:

    ネットワーク解析サービスを構成するときに表示領域を広くするには、[サービス エディター] の上部にある [折りたたみ]折りたたみ ボタンをクリックします。

  15. [準備] ウィンドウでエラーエラー を修正します。エラーの修正は公開の前に行う必要があります。さらに必要であれば、警告メッセージと情報メッセージに従って問題を修正し、ネットワーク解析サービスのパフォーマンスと外観を改善します。これらの問題の解決の詳細については、「GIS リソースの分析」をご参照ください。
    注意:

    サーバーが確実にデータを認識して使用できるように、フォルダーとジオデータベースを ArcGIS Server サイトに登録することができます。以下の手順を続ける場合、未登録のフォルダーまたはジオデータベースからマップ ドキュメントが参照するデータはすべて、公開時にサーバーにコピーされます。これは、サーバーがサービスで使用されているすべてのデータにアクセスできることを保証するための予防的な処置です。フォルダーまたはジオデータベースを ArcGIS Server サイトに登録する手順については、「ArcGIS for Desktop を使用したデータの ArcGIS Server への登録 」をご参照ください。

  16. マップ ドキュメント内のエラーを修正したら、[公開]公開 をクリックします。

マップ ドキュメントが ArcGIS Server で公開され、マップ サービスおよび関連するネットワーク解析サービスが同じ名前で作成されます。

ネットワーク解析サービスの使用

ArcGIS Server のクライアント (たとえば、ArcGIS for Desktop や Web ブラウザー) は、ネットワーク解析サービスを利用する機能を備えています。ArcMap では、[ルート検索]ルート検索 ボタンを使用して、ネットワーク解析サービスが標準で備えるルーティング機能を利用できます。Web ブラウザーでは、ネットワーク解析サービスは、ArcGIS.com、Portal for ArcGIS、および ArcGIS API for JavaScript で作成された Web アプリケーションを使用してプログラムにより使用されます。これらのクライアントの詳細については、「ネットワーク解析サービス」をご参照ください。

ネットワーク解析サービスを ArcGIS for Desktop で利用する方法、または ArcGIS API for JavaScript で構築された基本的な Web アプリケーションで利用する方法については、次のセクションをご参照ください。

ArcMap でのルート サービスの利用

  1. ArcMap を起動して、新しい空の ArcMap ドキュメントを開きます。
  2. ArcGIS Server への公開者接続は今もあるはずですが、このサービスを ArcMap で利用するにはユーザー接続が必要です。[カタログ] ウィンドウで、[GIS Servers] ノードを展開し、[ArcGIS Server サーバーの追加] をダブルクリックして、ユーザー接続の作成を開始します。接続を設定する手順を追った説明については、「ArcGIS for Desktop での ArcGIS Server へのユーザー接続の作成」をご参照ください。
  3. [カタログ] ウィンドウで、[GIS Servers] ノードを展開し、新しい ArcGIS Server 接続 (最後に「 (ユーザー) 」が付いています) をダブルクリックします。
  4. サーバー接続内で、ネットワーク解析サービスが含まれているマップ サービスを検索して、[コンテンツ] ウィンドウにドラッグします。
  5. レイヤーが [コンテンツ] ウィンドウに存在していますが、マップは空のままです。マップにコンテキストを指定するには、ArcGIS Online からベースマップを追加します。
    1. [標準] ツールバーの [データの追加] ボタン データの追加 の横にあるドロップダウン矢印をクリックして、[ベースマップの追加] を選択します。
    2. [Topographic] などのベースマップをダブルクリックします。
  6. マップの南側にあるサンフランシスコ半島を拡大します。追加するストップは、ネットワーク解析レイヤーの作成に使用する San Francisco ネットワーク データセットの範囲内に収まる必要があります。提供された SanFrancisco データベースを使用していない場合は、この手順を省略します。
  7. [ツール] ツールバーで、[ルート検索]ルート検索 をクリックします。
  8. [ルート検索] ダイアログ ボックスで、[オプション] タブをクリックします。
  9. [ルート サービス] ドロップダウン リストをクリックし、[ルート <Layers\[ルート サービス名]>] を選択します。
  10. [ストップ] タブをクリックします。[ストップ] タブのコントロールとパラメーターを使用して、ネットワーク解析の入力を設定します。
  11. ルートを解析する準備ができたら、[ルート検索] をクリックします。

基本的な Web アプリケーションでのルート サービスの利用

  1. ネットワーク解析サービスを Web アプリケーションで利用する前に、URL を確認しておく必要があります。Web ブラウザーを開き、ArcGIS Server Services Directory に移動します。URL の例は、http://gisserver.domain.com:6080/arcgis/rest/services です。
  2. サービス リストで、使用するネットワーク解析サービスをクリックします。ネットワーク解析サービスには「(NAServer)」が付加されます。サービスがフォルダーに存在する場合は、そのフォルダーに移動してサービスを選択します。
  3. サービスの名前、サービスの説明、および利用可能な解析レイヤーのリストを示すページが表示されます。[Route] をクリックします。
  4. ルート レイヤーのプロパティを示すページが表示されます。ブラウザーのアドレス バーに表示されているこのページの URL をコピーして、テキスト エディターに貼り付けます。これがネットワーク解析サービスのルート タスクの REST URL です。URL 形式は次のとおりです。http://gisserver.domain.com:6080/arcgis/rest/services/folder/service/NAServer/Route
  5. 下記のサンプル コードをコピーして、メモ帳などのテキスト エディターに貼り付けます。

    <!DOCTYPE html>
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=7, IE=9, IE=10">
        <!--The viewport meta tag is used to improve the presentation and behavior of the samples 
          on iOS devices-->
        <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
        <title>Simple Routing</title>
    
        <link rel="stylesheet" href="http://js.arcgis.com/3.6/js/dojo/dijit/themes/claro/claro.css">
        <link rel="stylesheet" href="http://js.arcgis.com/3.6/js/esri/css/esri.css">
        
        <script src="http://js.arcgis.com/3.6/"></script>
        <script>
          dojo.require("esri.map");
          dojo.require("esri.tasks.route");
    
          var map, routeTask, routeParams;
          var stopSymbol, routeSymbol, lastStop;
    
          function init() {
            map = new esri.Map("map", {
              basemap: "streets",
              center: [-122.44, 37.78],
              zoom: 12
            });
    
            dojo.connect(map, "onClick", addStop);
    
            routeTask = new esri.tasks.RouteTask("http://tasks.arcgisonline.com/ArcGIS/rest/services/NetworkAnalysis/ESRI_Route_NA/NAServer/Route");
            
            //set up the route parameters
            routeParams = new esri.tasks.RouteParameters();
            routeParams.stops = new esri.tasks.FeatureSet();
            routeParams.outSpatialReference = {"wkid":102100};
            
            dojo.connect(routeTask, "onSolveComplete", showRoute);
            dojo.connect(routeTask, "onError", errorHandler);
    
            //define the symbology used to display the route
            stopSymbol = new esri.symbol.SimpleMarkerSymbol().setStyle(esri.symbol.SimpleMarkerSymbol.STYLE_CROSS).setSize(15);
            stopSymbol.outline.setWidth(4);
            routeSymbol = new esri.symbol.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 esri.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(solveResult) {
            map.graphics.add(solveResult.routeResults[0].route.setSymbol(routeSymbol));
          }
    
          //Displays any error returned by the Route Task
          function errorHandler(err) {
            alert("An error occurred\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]);
          }
          dojo.ready(init);
        </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>

  6. routeTask = new esri.tasks.RouteTask」パラメーターを検索し、括弧内の URL をネットワーク解析ルート タスクの REST URL に一致するように変更します。
  7. テキスト ドキュメントを保存して閉じます。
  8. ドキュメントのファイル拡張子を、元の拡張子から「.html」に変更します。たとえば、Route.txtRoute.html に変更します。
  9. HTML ドキュメントを Web ブラウザーで開きます。Web アプリケーションの指示に従って、ネットワーク解析サービスを使用します。