Usar servicios de geoprocesamiento en aplicaciones web

Los servicios de geoprocesamiento se pueden consumir en una aplicación web personalizada, lo que proporciona a los usuarios de la aplicación web soluciones de geoprocesamiento y análisis. En términos generales, crear una aplicación web se puede considerar tarea de un desarrollador o programador. Se puede crear una aplicación web desde cero utilizando el lenguaje API de JavaScript. Como alternativa, un no desarrollador puede implementar una aplicación web configurable usando Web AppBuilder en ArcGIS Enterprise.

Con independencia del método utilizado para crear una aplicación web, la comunicación del servicio de geoprocesamiento subyacente se produce a través de REST y se conecta al extremo del servicio de ArcGIS Server.

  • El extremo del servicio es una dirección URL que normalmente tiene el siguiente formato: http://<server>/arcgis/rest/<ServiceName>.
  • Cada extremo del servicio tiene información que describe el servicio, las operaciones que se pueden realizar y los recursos que componen el servicio. En el contexto de geoprocesamiento, una o varias herramientas componen los recursos de un servicio.

Para obtener más información sobre el uso de herramientas web con API REST de ArcGIS, consulte Servicios de geoprocesamiento.

Usar servicios de geoprocesamiento con aplicaciones web personalizadas

Normalmente, una aplicación web personalizada se crea usando ArcGIS API for JavaScript. Aunque se puede crear cualquier aplicación de forma que pueda comunicarse con el servicio a través de REST, el siguiente análisis se centra en JavaScript. Si ya se ha familiarizado con JavaScript y el geoprocesamiento, puede revisar las muestras y los fragmentos de código. De lo contrario, el resto de esta sección describe el proceso para agregar el geoprocesamiento a la aplicación web:

  1. Inicialización del servicio de geoprocesamiento
  2. Configuración de los parámetros de entrada
  3. Ejecutar el servicio de geoprocesamiento
  4. Obtención y manejo del resultado o los resultados

El siguiente código de JavaScript se ha tomado de la muestra Calculate Viewshed con solo algunos fragmentos relevantes para mostrar los cuatro pasos requeridos para ejecutar las herramientas de geoprocesamiento. La muestra de la Ayuda de JavaScript proporciona un ejemplo completo, mientras que lo siguiente solo produce una página web funcional con código adicional:

// esri.tasks.Geoprocessor is required for using Geoprocessor.
//  Add it along with other dojo.require statements.
dojo.require(esri.tasks.Geoprocessor); 

// Step 1: Initialize the geoprocessing and point to the REST URL
var gpUrl = "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Elevation/ESRI_Elevation_World/GPServer/Viewshed";
var gp = new Geoprocessor(gpUrl);	

// Set output spatial reference 
gp.outSpatialReference = { wkid: 102100 };

function computeViewshed(event) { 
   graphicsLayer.removeAll();

   // Step 2: Set up input parameters and assign or collect inputs from user
   var point = new Point({ 
        longitude: event.mapPoint.longitude,
        latitude: event.mapPoint.latitude  
   });  

   var inputGraphic = new Graphic({
      geometry: point, 
      symbol: markerSymbol 
   }); 
   graphicsLayer.add(inputGraphic); 

   var inputGraphicContainer = [];
   inputGraphicContainer.push(inputGraphic);
   var featureSet = new FeatureSet();
   featureSet.features = inputGraphicContainer;  

   var vsDistance = new LinearUnit();  
   vsDistance.distance = 5;
   vsDistance.units = "miles";  
   var params = {  
      "Input_Observation_Point": featureSet,
      "Viewshed_Distance": vsDistance  
   };  

   // Step 3: Run the service. In this instance, the service is Synchronous; Execute
   // will be called. An Asynchronous service will use gp.submitJob.
   gp.execute(params).then(drawResultData); 
}  

// Step 4: Render the result. Symbology is assigned and the graphics are added to the map.
function drawResultData(result) { 
   var resultFeatures = result.results[0].value.features;  
   // Assign each resulting graphic a symbol  
   var viewshedGraphics = resultFeatures.map(function(feature) { 
      feature.symbol = fillSymbol;     
      return feature; 
   });       
   // Add the resulting graphics to the graphics layer  
   graphicsLayer.addMany(viewshedGraphics);
}

En el ejemplo anterior, se debe cargar la clase Geoprocessor, y la URL REST del servicio se usa con una variable global para definir la tarea de geoprocesamiento. El siguiente paso es crear los parámetros específicos de la herramienta que ejecutará la aplicación. Este ejemplo requiere una entrada de punto (entidad) y una distancia (unidad lineal). La dirección URL REST específica de la herramienta en el servicio definirá los parámetros de entrada. Un servicio se configura como síncrono o asíncrono, y este ajuste controla si el servicio se ejecuta como submit GP job o execute GP task. La salida de cada herramienta se explica también en la misma página que los parámetros de entrada y se proporciona información sobre el tipo y sobre cómo se puede mostrar.

Utilizar servicios de geoprocesamiento con Web AppBuilder

Para usar Web AppBuilder no necesita escribir código; solo tiene que conocer el extremo (URL REST) del servicio de geoprocesamiento. Un servicio de geoprocesamiento se usa en una aplicación web creada por Web AppBuilder configurando el widget de geoprocesamiento. Primero debe crear una aplicación web en su portal. Una vez que haya seleccionado el estilo y el mapa, podrá agregar un nuevo widget de geoprocesamiento y configurarlo. La configuración del widget permite definir opciones de entrada y salida relacionadas con el servicio en concreto. Estos parámetros de entrada y salida que definen el servicio determinan las opciones que están disponibles a través de la configuración del widget. Por ejemplo, la configuración del widget le permite controlar el tipo de entidad (cuadrado, círculo, mano alzada, etc.) que un usuario puede introducir si el servicio de geoprocesamiento se publicó para aceptar la entrada de entidades. La misma premisa es válida para la salida. Un servicio de geoprocesamiento configurado para generar entidades le permite configurar la simbología y la forma en que la aplicación web debería renderizar la salida del servicio de geoprocesamiento. Un servicio configurado con una capa de mapa de resultado agregará el resultado a la aplicación web y se simbolizará en función de la configuración elegida durante el proceso de publicación inicial.