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: Run 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 として実行されるかが決まります。 各ツールの出力についても、入力パラメーターと同じページで説明しています。タイプとその表示方法に関する情報が掲載されています。

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

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