Solucionar problemas de tareas de geoprocesamiento en aplicaciones Web
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 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; }
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;