Solucionar problemas de tareas de geoprocesamiento en aplicaciones Web
En este tema
Esquema de conjunto de entidades de entrada
Cuando se ejecuta una tarea de geoprocesamiento, la aplicación Web convierte los parámetros a JSON y los envía al servicio de geoprocesamiento para la ejecución. El ArcGIS 10.1 for Server analiza los parámetros JSON enviados desde el cliente y los convierte en los objetos de datos adecuados (ArcObjects). Los parámetros GPFeatureRecordSetLayer se convierten en un conjunto de entidades basándose en las propiedades de esquema geometryType, spatialReference y campos definidos en los parámetros JSON. Si las propiedades no se especifican en los parámetros JSON, el ArcGIS 10.1 for Server hereda las propiedades del esquema predeterminado definido para el conjunto de entidades. La tarea puede fracasar debido a las ambigüedades en los valores de entrada y el esquema predeterminado. Para evitar fallos como desarrollador web, debe configurar estas propiedades cuando crea conjuntos de entidades. El código JavaScript código que aparece a continuación muestra cómo establecer los campos de las propiedades spatialReference y geometryType de un conjunto de entidades creadas a partir de una capa de entidades en la aplicación Web.
Crear conjuntos de entidades desde featureLayer en la API de 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; }
Sugerencia:
Los conjuntos de entidades de entrada que se crearon en las aplicaciones Web están normalmente proyecciones de Web Mercator (wkid:4326) o de Web Mercator Auxiliary Sphere (wkid:102100). Sin embargo, el modelo o la secuencia de comandos subyacente de la tarea de geoprocesamiento puede utilizar otros datasets como datos de proyecto que se encuentran en una referencia espacial diferente. En algunos casos, si la referencia espacial de los conjuntos de entidades de entrada y la tarea de datos de proyecto son diferentes, la tarea puede fallar. Esto se debe a que el autor de la tarea no anticipó recibir entidades en referencias espaciales diferentes a las de los datos de proyecto. El tema Consideraciones de referencia espacial para los servicios de geoprocesamiento analiza algunas soluciones para que el autor de la tarea evite dichos fallos.Referencia espacial de salida (sistema de coordenadas)
La referencia espacial de los conjuntos de entidades de salida depende de los parámetros de entrada y de otros datasets que se utilizan en el modelo o secuencia de comandos. Las aplicaciones Web asumen que la referencia espacial de las entidades de salida se encuentran en la misma referencia espacial que su instancia de mapa (esri.Mapa). Por tanto, es posible que las entidades no se representen como se espera. Para evitar este tipo de ambigüedades, debe establecer la propiedad outSpatialReference de la instancia de geoprocesamiento para la referencia espacial del mapa como se muestra en el código que aparece a continuación. Cuando la propiedad de referencia espacial de salida se establece, el servidor devuelve los conjuntos de entidades de salida en la outSpatialReference solicitada.
Establecer outSpatialReference en la API de 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;