Web アプリケーションでのジオプロセシング タスクのトラブルシューティング
入力フィーチャ セット スキーマ
ジオプロセシング タスクの実行時に、Web アプリケーションはパラメータを JSON に変換し、実行のためジオプロセシング サービスに送信します。ArcGIS Server は、クライアントから送信された JSON を解析して、それらを適切なデータ オブジェクト(ArcObjects)に変換します。GPFeatureRecordSetLayer パラメータは、JSON に定義されたスキーマ プロパティ geometryType、spatialReference、および fields に基づいて、フィーチャ セットに変換されます。JSON にこれらのプロパティが指定されていない場合、ArcGIS Server は、そのフィーチャ セットに対して定義されているデフォルト スキーマからプロパティを引き継ぎます。このタスクは、入力値およびデフォルト スキーマの不明確さが原因で失敗することがあります。失敗を避けるには、Web 開発者として、フィーチャ セットの作成時にこれらのプロパティを設定する必要があります。次の JavaScript コードは、Web アプリケーションでフィーチャ レイヤから作成されたフィーチャ セットの spatialReference と geometryType プロパティ フィールドを設定する方法を示しています。
JavaScript API でのフィーチャ レイヤからのフィーチャ セットの作成
function getFeatureSetFromFLayer(){
//create featuresets
var featureSet = new esri.tasks.FeatureSet();
//get featurelayer from map's featurelayer (ex:myFeatureLayer)
var layer=map.getLayer("myFeatureLayer")
//get features from featurelayer
featureSet.features = layer.graphics;
//assign fields property
featureSet.fields=layer.fields;
//assign map's spatial reference
// Assumption: map variable is esri.Map instance in the application
featureset.spatialReference=map.spatialReference;
//assign geometryType
featureSet.geometryType=layer.geometryType;
return featureSet;
}
出力の空間参照(座標系)
出力フィーチャ セットの空間参照は、モデルまたはスクリプトで使用されている入力パラメータとその他のデータセットによって決まります。Web アプリケーションは、出力フィーチャの空間参照が、マップ インスタンス(esri.Map)と同じ空間参照に属すると仮定します。このため、フィーチャが期待どおりにレンダリングされない場合があります。このようなあいまいさを排除するために、次のコードに示すように、ジオプロセシング インスタンスの outSpatialReference プロパティをマップの空間参照に設定する必要があります。出力の空間参照プロパティが設定されている場合、サーバは、要求された outSpatialReference で出力フィーチャ セットを返します。
JavaScript API での outSpatialReference の設定
var gpTask = new esri.tasks.Geoprocessor(
"http://<gp-task-url>");
//map is assumed to be the map instance of the web application
gpTask.outSpatialReference=map.spatialReference;