Skip To Content

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

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

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

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

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

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

チュートリアル データ

このチュートリアルのデータは ArcGIS Server と一緒にインストールされ、<ArcGIS Server installation directory>\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 を入力します (例: http://gisserver.domain.com:6080/arcgis)。
  6. [サーバー タイプ] ドロップダウン リストから、[ArcGIS Server] を選択します。

    公開プロセス中に、サービス定義ファイルが作成されローカルのディスクに一時的に保存されます。 公開プロセスが完了すると、サービス定義がサーバーにアップロードされ、ローカル ファイルは削除されます。

  7. このチュートリアルでは、デフォルトのステージング フォルダーを使用して操作を続けます。
  8. サーバー管理者がサイトのセキュリティを有効にしている場合は、[ユーザー名][パスワード] に値を入力します。 [完了] をクリックします。
  9. 必要に応じて、[サービスを公開] ウィンドウでサービスの新しい名前を入力します。 120 文字を超える名前や、英数字とアンダースコア (_) 以外の文字が含まれた名前を使用することはできません。 [次へ] をクリックします。
  10. デフォルトでは、ArcGIS Server のルート フォルダー (root) にサービスが公開されます。 サービスはルート フォルダー以下のサブディレクトリに整理することができます。 サービスを公開するフォルダーを選択するか、サービスを格納する新しいフォルダーを作成します。 [続行] をクリックします。

    サービス エディターが表示されます。 [サービス エディター] を使用して、ネットワーク解析サービスでユーザーが実行できる操作を選択し、サーバーがサービスを公開する方法を調整します。

  11. [ケーパビリティ] タブをクリックします。

    デフォルトでは、マッピングと KML が有効になっています。

  12. [Network Analysis] をオンにします。
  13. [サービス エディター] の左側のウィンドウで、[Network Analysis] タブをクリックして、ネットワーク解析サービスで有効なオペレーションとプロパティを確認します。 このチュートリアルでは、デフォルトの設定を使用して操作を続けます。 詳細については、「ネットワーク解析サービス」をご参照ください。 ネットワーク解析サービスを配備するための最適な構成方法については、「サービスのチューニングと構成」をご参照ください。
  14. [分析]統計情報の更新 をクリックします。 マップ ドキュメントをサーバーに公開できるかどうかが検証されます。
    ヒント:

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

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

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

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

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

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

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

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

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

ArcMap でルート サービスを利用するには、次の手順を実行します。

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

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

Web アプリでルート サービスを利用するには、次の手順を実行します。

  1. ネットワーク解析サービスを Web アプリケーションで利用する前に、URL を確認しておく必要があります。 Web ブラウザーで ArcGIS Server Services Directory (例: http://gisserver.domain.com:6080/arcgis/rest/services) を参照します。
  2. サービス リストで、使用するネットワーク解析サービスをクリックします。 ネットワーク解析サービスには「(NAServer)」が付加されます。 サービスがフォルダーに存在する場合は、そのフォルダーに移動してサービスを選択します。

    サービスの名前、サービスの説明、および利用可能な解析レイヤーのリストを示すページが表示されます。

  3. [ルート] をクリックします。

    ルート レイヤーのプロパティを示すページが表示されます。

  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 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>

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