Dépannage des tâches de géotraitement dans les applications Web
Dans cette rubrique
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 JavaScriptfunction 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;
}
Astuce:
Les jeux d'entités créés dans des applications Web sont généralement en projections Web Mercator (wkid:4326) ou Sphère auxiliaire Web Mercator (wkid:102100). Toutefois, le modèle ou le script sous-jacent de la tâche de géotraitement peut utiliser d'autres jeux de données comme des données de projet qui participent d'une référence spatiale différente. Dans certains cas, si la référence spatiale des jeux d'entités en entrée et des données de projet de la tâche est différente, la tâche peut échouer. Le créateur de la tâche doit donc anticiper la réception d'entités dont les références spatiales sont différentes des données de projet. La rubrique Remarques concernant la référence spatiale pour les services de géotraitement explique les solutions à mettre en oeuvre pour éviter de tels échecs.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;
Rubriques connexes
Vous avez un commentaire à formuler concernant cette rubrique ?