Benutzerdefinierte Routing-Services sind Geoverarbeitungsservices mit benutzerdefinierten Funktionen. Während Standard-Routing-Services nur bestimmte Netzwerkanalyse-Workflows mit einer Reihe von Standardoptionen durchführen, können Sie einen benutzerdefinierten Routing-Service veröffentlichen, wenn Sie zusätzliche Funktionen oder mehr Flexibilität in den Analyse-Workflows benötigen. So können Sie beispielsweise eine Route zwischen zwei Stopps finden und ein Höhenprofil für diese Route erstellen oder mehrere verschiedene Netzwerkanalysen in einem einzigen Web-Service kombinieren. Für eine solche Analyse können Sie einen benutzerdefinierten Routing-Service erstellen. Benutzerdefinierte Routing-Services sind Geoverarbeitungsservices mit benutzerdefinierten Funktionen. Mit Geoverarbeitungsservices können Sie benutzerdefinierte Analysewerkzeuge in ArcGIS Server , einer Komponente von ArcGIS Enterprise, freigeben. Geoverarbeitungsservices werden häufig als im ArcGIS Enterprise-Portal gehostete Web-Werkzeuge ausgeführt. Diese Werkzeuge werden in ArcGIS Pro als Skriptwerkzeug erstellt und ausgeführt, bevor sie auf einem Server freigegeben werden.
Das Erstellen eines benutzerdefinierten Geoverarbeitungsservices ist wie unten beschrieben ein Prozess mit drei Schritten.
Erstellen eines Skriptwerkzeugs
Der erste Schritt bei der Erstellung eines benutzerdefinierten Routing-Service besteht darin, ein Geoverarbeitungs-Skriptwerkzeug zu erstellen und zu dokumentieren, das auf einem arcpy- und arcpy.nax-Modul in Python basiert, und den Python-Code zu schreiben, der die Logik zur Ausführung des Skriptwerkzeugs implementiert. Das Werkzeug wird in einer Toolbox erstellt.
Weitere Informationen zum Erstellen eines Python-Skriptwerkzeugs mithilfe von arcpy.nax
Veröffentlichen des Service
Nachdem Sie das Werkzeug erstellt haben, müssen Sie es als Nächstes in ArcGIS Pro ausführen, und es muss erfolgreich abgeschlossen werden. Wenn die Ausführung des Werkzeugs beendet ist, können Sie das Ergebnis im Geoverarbeitungsverlauf als Web-Werkzeug über ArcGIS Pro freigeben. Durch die Freigabe wird das Geoverarbeitungsservice-Element in der Serververbindung erstellt. Sie können mehrere Werkzeuge hinzufügen, die Sie beim Veröffentlichen für denselben Geoverarbeitungsservice ausgeführt haben. Sie können mit einer Administratorverbindung einen Geoverarbeitungsservice über ArcGIS Pro auf einem eigenständigen Server veröffentlichen, der mit keinem ArcGIS Enterprise-Portal verbunden ist. Wenn Sie mit einer Server-Site arbeiten, die mit einem ArcGIS Enterprise-Portal verbunden ist, geben Sie stattdessen Web-Werkzeuge für das ArcGIS Enterprise-Portal frei.
Weitere Informationen, wie Sie einen Geoverarbeitungsservice veröffentlichen und verwenden
Verwenden des Service
Wenn ein Geoverarbeitungsservice in ArcGIS Server veröffentlicht wurde (auch wenn ein Web-Werkzeug in einem Portal mit einer Verbundserver-Site freigegeben wurde), können autorisierte Benutzer auf der Server-Site unter Verwendung von verschiedenen Operationen in ArcGIS REST API direkt auf diesen Service zugreifen und mit ihm in ArcGIS Pro arbeiten und im Widget "Geoverarbeitung" in ArcGIS Web AppBuilder, in benutzerdefinierten Web-Apps mit ArcGIS API for JavaScript und mehr verwenden.
Hinweis:
Der benutzerdefinierte Routing-Service kann nicht in ArcGIS Pro über das Menüband "Netzwerkanalyse" genutzt werden.
Tipps für das Erstellen von Geoverarbeitungsservices
Um die Performance von Geoverarbeitungsservices zu verbessern, sollten Sie die folgenden Tipps beachten:
- Verwenden Sie bei der Definition des Netzwerk-Dataset-Parameters im Skriptwerkzeug für den Datentyp den Netzwerk-Dataset-Layer anstelle von Netzwerk-Dataset oder Netzwerkdatenquelle. Führen Sie das Skriptwerkzeug aus, bevor Sie es als Web-Werkzeug veröffentlichen, und stellen Sie ein Netzwerk-Dataset über die Karte zur Verfügung. Da die Verbindung zum Netzwerk-Dataset einmalig beim Start des Services hergestellt wird, müssen Sie das Netzwerk-Dataset nicht bei jeder Service-Anforderung öffnen, was Zeit spart.
- Verwenden Sie beim Lesen der Netzwerk-Dataset-Parameter im Skriptwerkzeug die GetParameterAsText-Methode anstelle der GetParameter-Methode, da die GetParameterAsText-Methode einen viel schnelleren Zugriff auf den Layer des Netzwerk-Datasets ermöglicht.
- Schreiben Sie ein Geoverarbeitungs-Skriptwerkzeug unter Verwendung des Python-Moduls arcpy.nax. Dies führt zu schnelleren Laufzeiten als bei Services, die mit dem Geoverarbeitungsmodell-Werkzeug erstellt wurden, oder Services, die mit einem Skriptwerkzeug unter Verwendung von arcpy.na und dem Layer-basierten Workflow erstellt wurden.
- Verwenden Sie bei der Definition der Feature-Eingabeparameter für das Skriptwerkzeug den Datentyp Feature-Set. Wenn Sie das Feature-Set verwenden und als Standard eine Layer-Datei festlegen, verweist die Layer-Datei intern auf die Feature-Class, die das Schema für das Feature-Set definiert. Wenn der Service veröffentlicht wird, gibt es ein genau definiertes Schema für die Ausgabe.
- Schreiben Sie Ausgaben in einen speicherbasierten Workspace anstelle eine File-Geodatabase.
- Vermeiden Sie es, zu viele Nachrichten mit dem Skriptwerkzeug zu schreiben.
- Wenn Sie das Analyseergebnis als Web-Werkzeug oder Geoverarbeitungsservice freigeben, sollten Sie den Eingabemodus für den Netzwerk-Dataset-Parameter auf "Konstante" setzen. Da der Service immer dasselbe Netzwerk-Dataset verwendet, stellt die Einstellung des Datasets als Konstante sicher, dass es in dem vom Werkzeug erstellten Service nicht verfügbar ist.
- Wählen Sie den synchronen Modus für kürzere Anfragen, um die beste Leistung zu erzielen.
- Wenn Sie den synchronen Modus für den Geoverarbeitungsservice wählen, können Sie die Leistung des Geoverarbeitungsservice weiter verbessern, indem Sie die Eigenschaft reusejobdir auf true setzen. Achten Sie bei der Einstellung dieser Eigenschaft jedoch auf die Bedingungen, da bei der Einstellung von reusejobdir auf true für jeden Job derselbe Job-Ordner verwendet wird. Wenn Sie also Ausgaben in das Job-Verzeichnis schreiben, müssen Sie sicherstellen, dass die Ausgaben bei jedem Lauf einen eindeutigen Namen haben, damit sie sich nicht gegenseitig beeinflussen.