Web アプリケーションでの結果マップ サービスの使用

ジオプロセシング サービスは、非同期ジオプロセシング タスク出力を視覚的に表現するために結果マップ サービスを作成します。結果マップ サービスのオプションは、出力データをより良く理解するためにシンボルを定義した場合や、ダウンロードできない大規模データセット出力が存在する場合に有効化できます。

結果マップ サービスの詳細結果マップ サービスの有効化の詳細

ダイナミック マップ サービスを追加する方法と同様に、結果マップ サービスを Web アプリケーションに追加できます。結果マップ サービスのレイヤは、ジオプロセシング タスクのジオプロセシング出力に対応しています。結果マップサービスを Web アプリケーションに追加すると、結果マップ サービスのすべての出力レイヤが Web アプリケーションに追加されますが、出力の一部を除外したい場合は、必要に応じてレイヤの表示設定をオフにすることができます。結果マップ サービスにフィーチャ レイヤが存在する場合は、それらのフィーチャ レイヤをクライアント側のフィーチャ レイヤとして個別に Web アプリケーションに追加できます。クライアント側のフィーチャ レイヤは動的にフィーチャを検索して、それらのフィーチャをクライアント側でグラフィックスとしてレンダリングします。大規模データセット出力の場合は、Web アプリケーションの現在の範囲のフィーチャを動的にダウンロードするようにクライアント側のフィーチャ レイヤのプロパティを設定できます。

ダイナミック マップ サービスとしての結果マップ サービスの使用

結果マップ サービスには、URL http://<ArcGIS REST サービス>/<GP サービス名>/MapServer/jobs/<ジョブ ID> を使用してアクセスできます。jobId は、サーバによって非同期ジョブに割り当てられる一意の ID です。jobId は、jobComplete イベント ハンドラから返される JobInfo インスタンスから取得できます。次の JavaScript コードが示す操作手順:

  1. イベント ハンドラを非同期ジオプロセシング タスクの jobComplete イベントに接続します。
  2. jobComplete イベント ハンドラ内の jobId から結果マップ サービスの URL を特定します。
  3. ダイナミック マップ サービスとして結果マップ サービスを Web アプリケーションに追加します。

JavaScript API での結果マップ サービスの使用

//connect eventhandlers and submitJob.
function myGPSubmitJob(){ 
    // Connect event handler onJobComplete 
    dojo.connect(gpTask, "onJobComplete",onTaskComplete);
    dojo.connect(gpTask, "onError",onTaskFailure);
    dojo.connect(gpTask, "onStatusUpdate",onTaskStatus);
    //params is assumed as a name-value pair instance of gpparameter values.
    gpTask.submitJob(params);
}

// On Job Complete Callback add a dynamic map service using ResultMapService
function onTaskComplete(jobInfo){
    //replace mapservice url with your url and append jobid
    var mapurl = "http://..../<MyGPServiceName>/MapServer/jobs/" + jobinfo.jobId;
    //create a dynamic map service
    var gpResultLayer = new esri.layers.ArcGISDynamicMapServiceLayer(mapurl, {
                id: "gpLayer",
                opacity: 0.5
            });
    //add to web application.
     map.addLayer(gpResultLayer);
}

結果マップ サービスを Web アプリケーションに追加するための上記の 3 つのステップは Flex と Silverlight の API にも適用できます。FlexSilverlight API のコード スニペットはそれぞれのオンライン SDK で探すことができます。

タスク パラメータおよび他のイベント ハンドラの定義に関する詳細については、「Web アプリケーションでのジオプロセシング タスクの使用」をご参照ください。

クライアント側のフィーチャ レイヤとしての結果マップ サービスの使用

データ タイプ GPFeatureRecordSetLayer のジオプロセシング タスク出力パラメータは、結果マップ サービスのフィーチャ レイヤとしてレンダリングできます。これらのレイヤをクライアント側のフィーチャ レイヤとして追加できます。レイヤがクライアント側のフィーチャ レイヤとして追加されると、それらのフィーチャがクライアントにダウンロードされます。FeatureLayer メソッドを使用すると、対話型のポップアップ ウィンドウや情報ウィンドウを作成したり、属性値に基づいて動的なチャートやグラフを作成したりできます。また、HTML ポップアップ ウィンドウとアタッチメントにもアクセスできます(これらのレイヤで利用可能な場合)。次の JavaScript コードは、フィーチャ レイヤを Web アプリケーションに追加する方法を示しています。

Web アプリケーションへの featureLayers(フィーチャ レイヤ)の追加

// On Job Complete Callback add a featurelayer using ResultMapService
function onTaskComplete(jobInfo){
    //replace mapservice url with your url and append jobid
    var mapurl = "http://..../<MyGPServiceName>/MapServer/jobs/" + jobinfo.jobId;
    //the code snippet assumes the featureLayer is the first layer in the result map service
    var fLayerUrl = mapurl + “/0”;
    
    //create a feature layer 
    //the MODE_ONDEMAND property allows the client to restrictively download features for current web app extent
    var featurelayer=new esri.layers.FeatureLayer(fLayerUrl, {
                id: "gpfLayer",
                mode: esri.layers.FeatureLayer.MODE_ONDEMAND,
                outFields: ["*"]
            });
    map.addLayer(featurelayer);	

    
}

また、このコード スニペットのロジックは Flex API と Silverlight API にも適用可能です。ポップアップ ウィンドウ/情報ウィンドウ、グラフ、およびチャートの作成に関する詳細情報は JavaScriptFlex、および Silverlight の SDK で参照できます。

関連トピック

5/10/2014