Ein Geoverarbeitungsservice kann in einer benutzerdefinierten Web-App verwendet werden, wodurch den Kunden Ihrer Web-App leistungsstarke 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 Ihrer Web-App Geoverarbeitungfunktionalität hinzugefügt wird:
- Initialisieren des Geoverarbeitungsservice
- Einrichten von Eingabeparametern
- Ausführung
- 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: 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);
}
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 die Ausführung als submit GP job oder execute GP task erfolgt. 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.
Eine detaillierte Erläuterung dieser Schritte finden Sie unter Verwenden von Geoverarbeitungs-Tasks in der ArcGIS API for JavaScript.
Tipp:
Das vorherige Beispiel gibt Features zurück, die die Positionen darstellen, die eine Person über die Sichtfeldanalyse auf der Erde sehen kann. Ein Geoverarbeitungsservice kann Text, Zahlen oder eine Datei-Ausgabe bereitstellen, d. h. Elemente, die sich nicht auf einer Karte darstellen lassen. In diesen Szenarien müssen Sie eine andere Methode verwenden und die Ausgabe des Service so anzeigen, sodass sie für die App geeignet ist, die Sie erstellen. Ein Pop-up-Feld mit einer Textausgabe oder ein Link zum Speichern einer Datei kann beispielsweise ausreichend sein.
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 Ihrer Web-App hinzugefügt und basierend auf Einstellungen symbolisiert, die während der ersten Veröffentlichung ausgewählt wurden.