Dépannage des tâches de géotraitement dans les applications Web
Structure de jeu d'entités en entrée
Lorsque vous exécutez une tâche de géotraitement, l'application Web convertit les paramètres au format JSON et l'envoie au service de géotraitement pour exécution. Le serveur ArcGIS analyse les JSON envoyés par le client et les convertit les données en objets de données appropriés (ArcObjects). Les paramètres GPFeatureRecordSetLayer sont convertis en un jeu d'entités en fonction des propriétés de la structure geometryType et spatialReference et des champs définis dans le document JSON. Si les propriétés ne sont pas spécifiées dans le document JSON, le serveur ArcGis utilise les propriétés de la structure par défaut définie pour le jeu d'entités. La tâche peut échouer en raison d'ambiguïtés entre les valeurs en entrée et la structure par défaut. Pour éviter les échecs, le développeur Web doit définir ces propriétés lors de la création des jeux d'entités. Le code JavaScript ci-dessous indique comment définir les champs et les propriétés spatialReference et geometryType d'un jeu d'entités créé à partir d'une couche d'entités dans l'application Web.
Création de jeux d'entités à partir d'une couche d'entités dans une API JavaScript
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;
}
Référence spatiale en sortie (système de coordonnées)
La Référence spatiale des jeux d'entités en sortie dépend des paramètres en entrée et d'autres jeux de données utilisés dans le modèle ou le script. Les applications Web considèrent que la référence spatiale des entités en sortie est identique à la référence spatiale de son instance de carte (esri.Map). En conséquence, l'affichage des entités peut ne pas répondre à vos attentes. Pour éviter de telles ambiguïtés, vous devez définir la propriété outSpatialReference de l'instance de géotraitement de sorte qu'elle soit identique à la référence spatiale de la carte, comme indiqué dans le code ci-dessous. Lorsque la propriété de référence spatiale est définie, le serveur renvoie les jeux d'entités en sortie dans la valeur outSpatialReference requise.
Définition de la propriété outSpatialReference dans une API JavaScript
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;