Der Geoverarbeitungsservice, auf dem ein Webwerkzeug basiert, kann in einer benutzerdefinierten Web-App verwendet werden, wodurch den Clients Ihrer Web-App Geoverarbeitungs- und Analyselösungen zur Verfügung gestellt werden. Mithilfe von ArcGIS API for JavaScript können Sie Web-Apps von Grund auf neu erstellen. 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.
Web-Werkzeuge in 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:
- Initialisieren des Geoverarbeitungsservice
- Einrichten von Eingabeparametern
- Ausführen des Geoverarbeitungsservice
- 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.
Web-Werkzeuge in Web AppBuilder
Zur Verwendung eines Web-Werkzeugs mit Web AppBuilder benötigen Sie nur die Service-URL des Web-Werkzeugs. Es ist kein Code erforderlich. Die URL finden Sie in Portal for ArcGIS auf der Elementdetailseite des Werkzeugs im Abschnitt URL.
Zur Verwendung eines Web-Werkzeugs in Web AppBuilder wird ein Geoverarbeitungs-Widget konfiguriert. Erstellen Sie zunächst in Ihrem Portal eine Web-App. 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 ein Webwerkzeug beziehen. Diese Eingabe- und Ausgabeparameter, die das Webwerkzeug definieren, geben vor, welche Optionen über die Widget-Konfiguration verfügbar sind. Die Widget-Konfiguration ermöglicht Ihnen beispielsweise die Steuerung des Feature-Typs (Quadrat, Kreis, Freihand usw.), den ein Benutzer eingeben kann, wenn das Web-Werkzeug veröffentlicht wurde, um die Feature-Eingabe zu akzeptieren. Dieselben Voraussetzungen gelten für die Ausgabe. Ein Webwerkzeug, das für Ausgabe-Features eingerichtet wurde, ermöglicht Ihnen die Konfiguration der Symbolisierung und die Darstellung der Ausgabe des Webwerkzeugs durch die Web-App. Bei einem Webwerkzeug, das 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.