Web ツールを動作させるジオプロセシング サービスは、カスタム Web アプリで使用できます。これにより、Web アプリのクライアントで、ジオプロセシングおよび解析ソリューションを使えるようになります。一般的に、Web アプリの作成は開発者 (またはプログラマー) のタスクであると考えられています。Web アプリは ArcGIS API for JavaScript を使用して最初から構築することもできます。また、開発者でなくても、Web AppBuilder で ArcGIS Enterprise を使用して、構成可能な Web アプリを配置することもできます。
Web アプリ構築の方法に関係なく、ジオプロセシング サーバーの通信は REST を介して行われ、ArcGIS Server のサービス エンド ポイントに接続します。
- サービス エンド ポイントとは、通常は http://<server>/arcgis/rest/<ServiceName> のような形式の URL です。
- 各サービス エンド ポイントには、サービスを説明する情報、実行できる操作、サービスを構成するリソースがあります。ジオプロセシングの場合は、サービスのリソースは 1 つ以上のツールで構成されます。
カスタム Web アプリによる Web ツールの使用
通常、カスタム Web アプリは ArcGIS API for JavaScript を使用して構築されます。REST を介してサービスと通信するアプリを構築できますが、以下のディスカッションでは JavaScript を中心に取り上げます。すでに JavaScript とジオプロセシングに慣れている場合は、サンプルとコード スニペットをご確認ください。このセクションの後半では、Web アプリにジオプロセシングを追加するために必要なステップについて説明します。
- ジオプロセシング サービスの初期化
- 入力パラメーターの設定
- 実行
- 結果 (複数可) の取得と処理
次の 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 により、入力パラメーターが定義されます。サービスは同期または非同期のいずれかとして設定され、その設定によって、実行が submitJob として行われるか、execute として行われるかがコントロールされます。各ツールの出力についても、入力パラメーターと同じページで説明しています。タイプとその表示方法に関する情報が掲載されています。
これらのステップの詳細については、「Web アプリケーションでのジオプロセシング タスクの使用」をご参照ください。
ヒント:
前の例では、可視領域解析により、地球上に見える場所を表すフィーチャを返します。ジオプロセシング サービスはテキスト、数値、ファイル (つまり、マップに描画できないアイテム) を表示できます。このようなシナリオでは異なるアプローチをとって、構築しているアプリに適した方法でサービスから出力を表示する必要があります。たとえば、テキスト出力やファイルを保存するリンクを含むポップアップ ボックスだけで十分なこともあります。
Web AppBuilder での Web ツールの使用
Web AppBuilder で Web ツールを使用するには、Web ツールのサービス URL のみが必要です。コードは必要ありません。URL は、エンタープライズ ポータルのツールの [アイテムの詳細] ページにある [URL] セクションに表示されています。
Web AppBuilder で Web ツールを使用するには、ジオプロセシング ウィジェットを構成します。まず、ポータルで Web アプリを作成します。スタイルとマップを選択したら、ジオプロセシング ウィジェットを追加して構成します。
ウィジェットを構成すると、Web ツールに関連する入力オプションと出力オプションを設定できます。Web ツールを定義するこれらの入力パラメーターや出力パラメーターにより、ウィジェット構成で使用できるオプションが決定します。たとえば、Web ツールがフィーチャ入力を受け入れるよう公開されている場合は、ユーザーが入力できるフィーチャのタイプ (四角形、円形、フリーハンドなど) をウィジェット構成でコントロールできます。同じことが出力にも言えます。フィーチャを出力するよう設定された Web ツールにより、シンボルを構成したり、Web アプリが Web ツールの出力をレンダリングする方法を決めたりできます。出力マップ レイヤーで構成された Web ツールにより、Web アプリに結果が追加され、最初の公開プロセスにおいて選択した設定に基づいてシンボル表示されます。