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 clientes de la aplicación web eficaces soluciones de geoprocesamiento y análisis. En términos generales, crear una aplicación web se puede considerar tarea de un desarrollador o programador. Una aplicación web se puede crear desde cero usando JavaScript API. 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 ArcGIS REST API, 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. 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 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 tiene que crear una aplicación web en el 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 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.