Web アプリで Web ツールを使用するための手法

Web ツールを動作させるジオプロセシング サービスは、カスタム Web アプリで使用できます。これにより、Web アプリのクライアントで、ジオプロセシングおよび解析ソリューションを使えるようになります。 ArcGIS API for JavaScript を使用して、Web アプリを最初から構築できます。 また、ArcGIS EnterpriseWeb AppBuilder を使用して、構成可能な Web アプリを配置することもできます。

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

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

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

カスタム 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 ツール

Web AppBuilder で Web ツールを使用する場合は、その Web ツールのサービス URL だけが必要となります。コードは必要ありません。 URL は、Portal for ArcGIS のツールのアイテムの詳細ページにある URL セクションに表示されています。

Web AppBuilder で Web ツールを使用するには、ジオプロセシング ウィジェットを構成します。 まず、ポータルで Web アプリを作成します。 スタイルとマップを選択したら、ジオプロセシング ウィジェットを追加して構成します。

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