Usar herramientas web en las aplicaciones web

El servicio de geoprocesamiento que alimenta una herramienta web se puede consumir en una aplicación web personalizada, lo que proporciona a los clientes de la aplicación web soluciones de geoprocesamiento y análisis. Puede crear una aplicación web desde cero usando ArcGIS API for JavaScript. Como alternativa, 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 herramientas web con las 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. Ejecución
  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: Execute 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 sincrónico o asíncrono, y este ajuste controla si la ejecución se realiza 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.

Para obtener una explicación más detallada de estos pasos, consulte Utilizar tareas de geoprocesamiento en ArcGIS API for JavaScript.

Sugerencia:

El ejemplo anterior devuelve entidades que representan las ubicaciones que una persona podría ver en el suelo según el análisis de la cuenca visual. Un servicio de geoprocesamiento puede proporcionar una salida de texto, números o archivo, es decir: elementos que no se pueden dibujar en un mapa. En estas situaciones, tiene que adoptar una estrategia diferente y mostrar la salida del servicio de una manera que resulte apropiada para la aplicación que está creando. Por ejemplo, un cuadro emergente con salida de texto o un vínculo para guardar un archivo puede ser suficiente.

Usar herramientas web con Web AppBuilder

Para utilizar una herramienta web con Web AppBuilder, solo necesita la URL de servicio de su herramienta web; no se requiere código. Encontrará la URL en su Portal for ArcGIS en la página de detalles del elemento de la herramienta, en la sección URL.

Para usar una herramienta web en Web AppBuilder, debe configurar un widget de geoprocesamiento. Primero, cree una aplicación web en el portal. Una vez que haya seleccionado el estilo y el mapa, podrá agregar un widget de geoprocesamiento y configurarlo.

La configuración del widget permite definir opciones de entrada y salida relacionadas con la herramienta web. Estos parámetros de entrada y salida que definen la herramienta web determinan las opciones que están disponibles a través de la configuración del widget. Por ejemplo, la configuración del widget permite controlar el tipo de entidad (cuadrado, círculo, mano alzada, etc.) que un usuario puede introducir si la herramienta web se ha publicado para aceptar entradas de entidades. La misma premisa es válida para la salida. Una herramienta web configurada para generar entidades permite configurar la simbología y la forma en que la aplicación web renderizará la salida de la herramienta web. Una herramienta web configurada con una capa de mapa de resultado hará que el resultado se agregue a la aplicación web y se simbolice en función de la configuración elegida durante el proceso de publicación inicial.