Verwenden von Geoverarbeitungsservices in Web-Apps

Ein Geoverarbeitungsservice kann in einer benutzerdefinierten Web-App verwendet werden, wodurch den Benutzern Ihrer Web-App Geoverarbeitungs- und Analyselösungen zur Verfügung gestellt werden. Die Erstellung einer Web-App kann im Allgemeinen als Aufgabe eines Entwicklers (oder Programmierers) angesehen werden. Eine Web-App kann mit der JavaScript API von Grund auf neu erstellt werden. Alternativ kann eine konfigurierbare Web-App von einem Nicht-Entwickler mit Web AppBuilder in ArcGIS Enterprise bereitgestellt werden.

Unabhängig davon, welche Methode Sie zum Erstellen einer Web-App verwenden, erfolgt die Kommunikation des zugrunde liegenden Geoverarbeitungsservice über REST, wobei eine Verbindung mit dem Service-Endpunkt in ArcGIS Server hergestellt wird.

  • Der Service-Endpunkt ist eine URL, die in der Regel im folgenden Format vorliegt: http://<server>/arcgis/rest/<ServiceName>.
  • Jeder Service-Endpunkt verfügt über Informationen, die den Service, die durchführbaren Vorgänge und die Ressourcen beschreiben, aus denen der Service besteht. Bei der Geoverarbeitung stellen ein oder mehrere Werkzeuge die Ressourcen eines Service dar.

Weitere Informationen zur Verwendung von Web-Werkzeugen in ArcGIS REST API finden Sie unter Geoverarbeitungsservices.

Verwenden von Geoverarbeitungsservices mit benutzerdefinierten Web-Apps

In der Regel wird eine benutzerdefinierte App mit der ArcGIS API for JavaScript erstellt. Prinzipiell können Sie eine App beliebig konfigurieren, solange sie mit dem Service über REST kommunizieren kann. Die folgende Erläuterung befasst sich jedoch mit JavaScript. Wenn Sie bereits mit JavaScript und Geoverarbeitung vertraut sind, können Sie sich Beispiele und Codeausschnitte ansehen. Andernfalls werden im verbleibenden Teil dieses Abschnitts die Vorgehensweise veranschaulicht, wie einer Web-App Geoverarbeitungfunktionalität hinzugefügt wird:

  1. Initialisieren des Geoverarbeitungsservice
  2. Einrichten von Eingabeparametern
  3. Ausführen des Geoverarbeitungsservice
  4. Abrufen und Verarbeiten des Ergebnisses bzw. der Ergebnisse

Der folgende JavaScript-Code stammt aus dem Beispiel für die Berechnung von Sichtfeldern, wobei die vier erforderlichen Schritte zum Ausführen von Geoverarbeitungswerkzeugen lediglich anhand der relevanten Teile veranschaulicht werden. Das Beispiel in der JavaScript-Hilfe stellt ein vollständiges Beispiel bereit, während im Folgenden nur eine funktionierende Webseite mit zusätzlichem Code erzeugt wird:

// 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);
}

Im nachfolgenden Beispiel muss die Geoprocessor-Klasse geladen werden, und die REST-URL zum Service wird mit einer globalen Variable verwendet, um den Geoverarbeitungs-Task zu definieren. Der nächste Schritt besteht darin, die Parameter festzulegen, die für das von der App ausgeführte Werkzeug spezifisch sind. Für dieses Beispiel sind eine Punkt-(Feature-)Eingabe und eine Entfernung (lineare Einheit) erforderlich. Die für das Werkzeug im Service spezifische REST-URL definiert Eingabeparameter. Ein Service wird als synchron oder asynchron eingerichtet, und mit dieser Einstellung wird festgelegt, ob der Service als submit GP job oder execute GP task ausgeführt wird. Die Ausgabe für das jeweilige Werkzeug wird außerdem auf derselben Seite wie die Eingabeparameter erläutert; Informationen zum Typ und dessen Anzeigemöglichkeiten werden ebenfalls bereitgestellt.

Verwenden von Geoverarbeitungsservices mit Web AppBuilder

Um Web AppBuilder zu verwenden, ist keine Programmierung erforderlich. Sie müssen lediglich den Service-Endpunkt (REST-URL) des Geoverarbeitungsservice kennen. Ein Geoverarbeitungsservice wird in einer Web-App verwendet, die von Web AppBuilder erstellt wurde, indem Sie das Widget "Geoverarbeitung" konfigurieren. Sie müssen zunächst in Ihrem Portal eine Web-App erstellen. Nachdem Sie den Style und die Karte ausgewählt haben, können Sie ein neues Geoverarbeitungs-Widget hinzufügen und konfigurieren. Die Konfiguration des Widgets ermöglicht Ihnen die Festlegung von Eingabe- und Ausgabeoptionen, die sich auf den spezifischen Service beziehen. Diese Eingabe- und Ausgabeparameter, die den Service definieren, geben vor, welche Optionen über die Widget-Konfiguration verfügbar sind. Die Widget-Konfiguration ermöglicht beispielsweise die Steuerung des Feature-Typs (Quadrat, Kreis, Freihand usw.), den ein Benutzer eingeben kann, wenn der Geoverarbeitungsservice veröffentlicht wurde, um die Feature-Eingabe zu akzeptieren. Dieselben Voraussetzungen gelten für die Ausgabe. Ein Geoverarbeitungsservice, der für Ausgabe-Features eingerichtet wurde, ermöglicht Ihnen die Konfiguration der Symbolisierung und die Darstellung der Ausgabe des Geoverarbeitungsservice durch die Web-App. Bei einem Service, der mit einem Ergebniskarten-Layer konfiguriert wurde, wird das Ergebnis der Web-App hinzugefügt und basierend auf Einstellungen symbolisiert, die während der ersten Veröffentlichung ausgewählt wurden.