Web アプリでのジオプロセシング サービスの使用

ジオプロセシング サービスは、カスタム Web アプリで使用できます。これにより、Web アプリのクライアントで、パワフルなジオプロセシングおよび解析ソリューションを使えるようになります。 一般的に、Web アプリの作成は開発者 (またはプログラマー) のタスクであると考えられています。 Web アプリは JavaScript API を使用して最初から構築することもできます。 また、開発者でなくても、ArcGIS EnterpriseWeb AppBuilder を使用して、構成可能な Web アプリを配置することもできます。

Web アプリ構築の方法に関係なく、ジオプロセシング サーバーの通信は REST を介して行われ、ArcGIS Server のサービス エンド ポイントに接続します。

  • サービス エンド ポイントとは、通常は http://<server>/arcgis/rest/<ServiceName> のような形式の URL です。
  • 各サービス エンド ポイントには、サービスを説明する情報、実行できる操作、サービスを構成するリソースがあります。 ジオプロセシングの場合は、サービスのリソースは 1 つ以上のツールで構成されます。

ArcGIS REST API での Web ツールの使用の詳細については、「ジオプロセシング サービス」をご参照ください。

カスタム Web アプリによるジオプロセシング サービスの使用

通常、カスタム Web アプリは ArcGIS API for JavaScript を使用して構築されます。 REST を介してサービスと通信するアプリを構築できますが、以下のディスカッションでは JavaScript を中心に取り上げます。 すでに JavaScript とジオプロセシングに慣れている場合は、サンプルとコード スニペットをご確認ください。 このセクションの後半では、Web アプリにジオプロセシングを追加する手順について説明します。

  1. ジオプロセシング サービスの初期化
  2. 入力パラメーターの設定
  3. 実行
  4. 結果の取得と処理

次の JavaScript コードは「可視領域の計算の例」から抽出したものです。ただし、ジオプロセシング ツールの実行に必要な 4 つのステップを例示するため、関連部分のみを取り出しています。 JavaScript ヘルプのサンプルには完全なコード例があります。以下に示すのは、コードを追加して、動作する Web ページを表示する例です。

// esri.tasks.Geoprocessor is required for using Geoprocessor.
//  Add it along with other dojo.require statements.
dojo.require(esri.tasks.Geoprocessor); 

// Step 1: Initialize the geoprocessing and point to the REST URL
var gpUrl = "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Elevation/ESRI_Elevation_World/GPServer/Viewshed";
var gp = new Geoprocessor(gpUrl);	

// Set output spatial reference 
gp.outSpatialReference = { wkid: 102100 };

function computeViewshed(event) { 
   graphicsLayer.removeAll();

   // Step 2: Set up input parameters and assign or collect inputs from user
   var point = new Point({ 
        longitude: event.mapPoint.longitude,
        latitude: event.mapPoint.latitude  
   });  

   var inputGraphic = new Graphic({
      geometry: point, 
      symbol: markerSymbol 
   }); 
   graphicsLayer.add(inputGraphic); 

   var inputGraphicContainer = [];
   inputGraphicContainer.push(inputGraphic);
   var featureSet = new FeatureSet();
   featureSet.features = inputGraphicContainer;  

   var vsDistance = new LinearUnit();  
   vsDistance.distance = 5;
   vsDistance.units = "miles";  
   var params = {  
      "Input_Observation_Point": featureSet,
      "Viewshed_Distance": vsDistance  
   };  

   // Step 3: Execute the service. In this instance, the service is Synchronous; Execute
   // will be called. An Asynchronous service will use gp.submitJob.
   gp.execute(params).then(drawResultData); 
}  

// Step 4: Render the result. Symbology is assigned and the graphics are added to the map.
function drawResultData(result) { 
   var resultFeatures = result.results[0].value.features;  
   // Assign each resulting graphic a symbol  
   var viewshedGraphics = resultFeatures.map(function(feature) { 
      feature.symbol = fillSymbol;     
      return feature; 
   });       
   // Add the resulting graphics to the graphics layer  
   graphicsLayer.addMany(viewshedGraphics);
}

上記の例では、Geoprocessor クラスを読み込む必要があります。また、サービスへの REST URL をグローバル変数とともに使用して、ジオプロセシング タスクを定義します。 次のステップでは、アプリが実行するツール特有のパラメーターを構築します。 この例には、ポイント (フィーチャ) 入力と距離 (距離単位) が必要です。 サービスのツール固有の REST URL により、入力パラメーターが定義されます。 サービスは同期または非同期のいずれかとして設定され、その設定によって、実行が submit GP job として行われるか、execute GP task として行われるかがコントロールされます。 各ツールの出力についても、入力パラメーターと同じページで説明しています。タイプとその表示方法に関する情報が掲載されています。

これらのステップの詳細については、「ArcGIS API for JavaScript でのジオプロセシング タスクの使用」をご参照ください。

ヒント:

前の例では、可視領域解析により、地球上に見える場所を表すフィーチャを返します。 ジオプロセシング サービスはテキスト、数値、ファイル (つまり、マップに描画できないアイテム) を表示できます。 このようなシナリオでは異なるアプローチをとって、構築しているアプリに適した方法でサービスから出力を表示する必要があります。 たとえば、テキスト出力やファイルを保存するリンクを含むポップアップ ボックスだけで十分なこともあります。

Web AppBuilder でのジオプロセシング サービスの使用

Web AppBuilder を使用するにはコードを作成する必要はありません。ジオプロセシング サービスのサービス エンドポイント (REST URL) のみ知っておく必要があります。 ジオプロセシング サービスは、ジオプロセシング ウィジェットを構成し、Web AppBuilder によって作成された Web アプリで使用されます。 まず、ポータルで Web アプリを作成します。 スタイルとマップを選択したら、新しいジオプロセシング ウィジェットを追加して構成します。 ウィジェットを構成すると、特定のサービスに関連する入力オプションと出力オプションを設定できます。 サービスを定義するこれらの入力パラメーターや出力パラメーターにより、ウィジェット構成で使用できるオプションが決定します。 たとえば、ジオプロセシング サービスがフィーチャ入力を受け入れるよう公開されている場合は、ユーザーが入力できるフィーチャのタイプ (四角形、円形、フリーハンドなど) をウィジェット構成でコントロールできます。 同じことが出力にも言えます。 フィーチャを出力するよう設定されたジオプロセシング サービスにより、シンボルを構成したり、Web アプリがジオプロセシング サービス出力をレンダリングする方法を決めたりできます。 結果マップ レイヤーが構成されたサービスにより、Web アプリに結果が追加され、最初の公開プロセスにおいて選択された設定に基づいてシンボル表示されます。