Beispiel für Geoverarbeitungs-Service: Kürzeste Route in einem Straßennetz
Mit der Network Analyst-Lizenz verfügbar.
In diesem Thema
- Entsprechender Ordner
- Besonderheiten dieses Beispiels
- Daten
- Modell
- Elementbeschreibung
- Veröffentlichung
- Verwenden
Ordner | ShortestRoute |
Zweck | Zeigt die schnellste Route für eine bestimmte Uhrzeit zwischen Punkten in einem Straßennetz und erstellt eine Wegbeschreibung in einer Text- oder HTML-Datei |
Services | ShortestRouteService (Geoverarbeitungs-Service) |
Geoverarbeitungs-Tasks | Calculate Shortest Route |
Eingaben |
|
Ausgaben |
|
Daten | Verwendet ein Straßennetz-Dataset für den Bereich San Francisco, das im Ordner "ToolData" bereitgestellt wird |
Erweiterungen | |
Hinweis |
|
Entsprechender Ordner
Die Daten für dieses Lernprogramms können von ArcGIS.com heruntergeladen werden. Extrahieren Sie die Daten unter C:\arcgis\ArcTutor\. Das Modell und einige verknüpfte Daten befinden sich unter C:\arcgis\ArcTutor\GP Service Examples\Network Analyst\ShortestRoute. Das Netzwerk-Dataset, das vom Netzwerkanalyse-Layer im Modell referenziert wird, ist in der SanFrancisco-Geodatabase unter C:\arcgis\ArcTutor\GP Service Examples\Network Analyst\ShortestRoute gespeichert.
Besonderheiten dieses Beispiels
Der in diesem Beispiel erstellte Service "ShortestRouteService" veranschaulicht, wie Sie Geoverarbeitungs-Tasks veröffentlichen, mit denen die kürzeste Route zwischen vom Benutzer angegebenen Punkten in einem Straßennetz berechnet wird, und eine Datei mit der Wegbeschreibung generieren.
Das in diesem Beispiel verwendete Netzwerk-Dataset "San Francisco" wird mit historischen Verkehrsdaten konfiguriert, sodass die schnellste Fahrroute für einen bestimmten Wochentag und eine bestimmte Uhrzeit ermittelt werden kann. Das bedeutet, Sie können die beste Route von Punkt A zu B um 8:00 Uhr, 10:00 Uhr, 10:25 Uhr usw. ermitteln. Das Routen-Shape kann variieren oder die erwartete Routendauer sich ändern, es wird jedoch in jedem Fall die schnellste Route für die angegebene Startzeit berechnet.
Daten
Das Netzwerk-Dataset für dieses Beispiel stammt von C:\arcgis\ArcTutor\GP Service Examples\Network Analyst\SanFrancisco.gdb. Das Kartendokument, die Toolbox und andere zusätzliche Daten werden unter C:\arcgis\ArcTutor\GP Service Examples\Network Analyst\ShortestRoute gespeichert.
Netzwerk-Dataset
Der Ordner "Network Analyst" enthält die File-Geodatabase SanFrancisco.gdb. Das Feature-Dataset Transportation enthält das Netzwerk-Dataset Streets_ND. Dieses Netzwerk-Dataset bildet das Straßennetz des Bereichs San Francisco ab. Es stellt mehrere Netzwerkattribute bereit, einschließlich TravelTime (Fahrzeit zu jedem Straßenabschnitt in Minuten) und Meters (Länge jedes Straßenabschnitts).
Toolbox und Kartendokument
Die Toolbox für den Geoverarbeitungs-Service ist ShortestRouteService.tbx.
Das Kartendokument ShortestRouteService.mxd ist enthalten, um sekundäre Schritte aus diesem Workflow-Thema zu entfernen, wie Hinzufügen von Layern oder Einpassen von Kartenausdehnungen um das Untersuchungsgebiet.
ShortestRouteService enthält ein Skriptwerkzeug und ein Modell. Das Skriptwerkzeug Change Route Start Time ist Teil des Modells Calculate Shortest Route.
Modell
Überblick über das Modell
Das Modell Calculate Shortest Route ist unten dargestellt.
Es gibt drei Eingabeparameter: Start Time (optional/repräsentiert die Abfahrtszeit beim ersten Stopp), Input Stops (repräsentiert die vom Benutzer digitalisierten Punkte für die Route) und File Type for Directions (gibt an, ob Beschreibungen in HTML- oder Textformat ausgegeben werden).
Das Modell verwendet ein Skriptwerkzeug, um die Routenstartzeit eines vorhandenen Netzwerkanalyse-Layer festzulegen, fügt Stopps zum Routenanalyse-Layer hinzu, ermittelt die beste Route und gibt das Routen-Shape und die Wegbeschreibung aus. Die resultierende Route verläuft in der digitalisierten Reihenfolge über die Stopps.
Verwenden eines vorhandenen Netzwerkanalyse-Layers
Ein Netzwerkanalyse-Layer wird nicht im Modell Calculate Shortest Route erstellt. Das Modell geht stattdessen davon aus, dass ein Layer bereits vorhanden ist. Durch dieses Design verwenden das Modell und alle aus ihm veröffentlichten Geoverarbeitungs-Tasks einen Netzwerkanalyse-Layer wieder, statt einen Layer für jede Berechnung zu erstellen. Dies vermeidet unnötigen Verarbeitungsaufwand.
Das Modell referenziert das Skriptwerkzeug Change Route Start Time, das Python und das ArcGIS Network Analyst-Modul (arcpy.na) verwendet, um auf den vorhandenen Netzwerkanalyse-Layer der Route zuzugreifen und seine Routen-Startzeiteigenschaft auf das Datum und die Uhrzeit zu ändern, die der Benutzer eingibt. Genauer ausgedrückt: Das Skript gibt den Netzwerkanalyse-Layer an arcpy.na.GetSolverProperties weiter. Dann wird ein RouteSolverProperties-Objekt zurückgegeben. Aus diesem Objekt wird die Eigenschaft timeOfDay des Netzwerkanalyse-Layer festgelegt.
Obwohl dies nicht empfohlen wird, können Sie das Hinzufügen des Skriptwerkzeugs verhindern, indem Sie das Modell mit dem Werkzeug Routen-Layer erstellen starten und den Parameter Startzeit des Werkzeugs als Modellparameter bereitstellen. Es wird jedoch ein neuer Netzwerkanalyse-Layer für jede Client-Anforderung erstellt, wenn das Modell als Task auf einem Server veröffentlicht wird. Mit diesem Ansatz wird ein erheblicher zusätzlicher Verarbeitungsaufwand für Ihre Server generiert. Das Skriptwerkzeug und das ArcGIS Network Analyst-Modul ermöglichen Ihnen die Bearbeitung der Eigenschaften eines vorhandenen Netzwerkanalyse-Layer, sodass nur ein Layer erstellt und vom Service verwendet wird.
Ältere Versionen:
Vor ArcGIS 10.1 war das ArcGIS Network Analyst-Modul nicht verfügbar. Die einzige Möglichkeit, Eigenschaften eines Netzwerkanalyse-Layer zu ändern, war die Erstellung eines neuen Layer in einem Modell mit einem von mehreren Geoverarbeitungswerkzeugen zur Layer-Erstellung (beispielsweise Routen-Layer erstellen) und die nachfolgende Bereitstellung eines oder mehrerer Analyseparameter aus dem Werkzeug als Modellparameter.
Der als Eingabevariable im Modell Calculate Shortest Route verwendete Routen-Layer wurde erstellt, indem zunächst ShortestRouteService.mxd das Netzwerk-Dataset Streets_ND hinzugefügt und dann das Werkzeug Routen-Layer erstellen verwendet wurde. In diesem Beispiel wurden die folgenden Werkzeugparameter beim Erstellen des Routen-Layer festgelegt. Für die in der Tabelle nicht angegebenen Parameter wurden Standardwerte verwendet.
Parameter | Wert |
Eingabe-Analysenetzwerk | Streets_ND |
Ausgabe-Layer-Name | Route |
Impedanzattribut | TravelTime |
Startzeit | |
Akkumulatoren | Meters; TravelTime |
Wendenregel | ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY |
Modellprozesse
Mit dem Skriptwerkzeug Change Route Start Time können Sie von den dynamischen Fahrzeiten des Netzwerk-Dataset profitieren, indem Sie eine Startzeit für die Route festlegen. Wenn Sie keine Uhrzeit und kein Datum festlegen, ermittelt der Solver die beste Route basierend auf einem Netzwerkkostenattribut, das aus generischen Fahrzeiten erstellt wurde. Wenn Sie eine Uhrzeit und ein Datum festlegen, verwendet der Solver dennoch ein Kostenattribut basierend auf historischen Fahrzeiten, was in der Regel zu besseren Routen führt.
Mit dem Werkzeug Standorte hinzufügen werden dem Routen-Layer vom Benutzer digitalisierte Punkte als Stopps hinzugefügt. Der Parameter Eingabepositionen für das Werkzeug wird über den Modellparameter Input Stops angegeben. Dieser Parameter ist vom Datentyp "Feature-Set". Das Schema und die Symbologie für das Feature-Set werden aus der Datei InputStops.lyr im Ordner "ToolData" abgeleitet.
Das Schema für das Feature-Set Input Stops enthält das Textfeld Name. Mit diesem Feld können während des Generierens einer Wegbeschreibung Stoppnamen bereitgestellt werden, indem dem Namensfeld in Feldzuordnung die Eigenschaft "Name" zugeordnet wird (siehe Abbildung unten). Wenn der Wert für das Namensfeld nicht vom Benutzer angegeben wird, werden als Stoppnamen die Standardwerte Location 1, Location 2 usw. verwendet.
Da bei jeder Ausführung des Modells derselbe Routen-Layer verwendet wird, müssen vor dem Hinzufügen neuer Stopps ggf. vorhandene Stopps entfernt werden. Zum Löschen vorhandener Stopps wird die Option An vorhandene Standorte anhängen (siehe Abbildung unten) deaktiviert.
Nicht passierbare Teile des Netzwerks ausschließen ist aktiviert, sodass Stopps nicht auf Kanten hinzugefügt werden, die nicht passierbar sind. Dies verhindert Fehler bei der Berechnung.
Das Werkzeug Berechnen berechnet die kürzeste Route anhand des Netzwerkattributs "TravelTime", der Startzeiteinstellung und weiterer im Routen-Layer angegebener Optionen. Die berechnete Route wird in den Sublayer "Routes" im Ausgabe-Routen-Layer geschrieben.
Netzwerkanalyse-Layer (z. B. "Routen-Layer") sind keine unterstützten Ausgabeparameter-Datentypen für ArcGIS for Server-Clients. Daher wird der Sublayer "Routen" mit dem Werkzeug Daten auswählen aus dem Routenanalyse-Layer abgerufen.
Das Werkzeug Wegbeschreibung erstellt die Wegbeschreibung und gibt sie in einer Text-, XML- oder HTML-Datei aus, je nach Auswahl des Benutzers. Die XML-Option wird allerdings bei Ausführung des resultierenden Tasks aus ArcGIS for Server aus der Liste entfernt. Diese Option wird entfernt, indem Sie XML im Service-Editor unter File Type for Directions deaktivieren, wenn Sie den Service veröffentlichen. Die vom Werkzeug Berechnen abgeleitete Variable SolveSucceeded wird als Vorbedingung für das Werkzeug Wegbeschreibung verwendet. Dies bedeutet, dass die Wegbeschreibungsdatei nur generiert wird, wenn das Werkzeug Berechnen eine Route zwischen Eingabepunkten finden kann.
Elementbeschreibung
Durch das Dokumentieren der Elementbeschreibung des Geoverarbeitungsmodells dokumentieren Sie auch den resultierenden Service und seine Parameter, da der Veröffentlichungsassistent den Text in die Elementbeschreibung des Service kopiert. Die Beschreibung oder Dokumentation des Service ist erforderlich und unterstützt Benutzer bei der erfolgreichen Interaktion mit dem Service und der Ermittlung der kürzesten Routen. Das Modell und Skriptwerkzeug für dieses Beispiel sind dokumentiert. Sie können die Dokumentation prüfen, indem Sie im Fenster Inhaltsverzeichnis mit der rechten Maustaste auf das Geoverarbeitungsmodell klicken und Elementbeschreibung wählen.
Veröffentlichung
Der Geoverarbeitungs-Service wird wie in den Schritten unten beschrieben veröffentlicht.
- Öffnen Sie ShortestRouteService.mxd. Der Standardspeicherort für die Lernprogrammdaten ist C:\arcgis\ArcTutor\GP Service Examples\Network Analyst\ShortestRoute.
- Führen Sie das Geoverarbeitungsmodell "Calculate Shortest Route" aus.
- Erweitern Sie ShortestRouteService.tbx im Fenster Katalog, und doppelklicken Sie auf das Modell Calculate Shortest Route.
- Klicken Sie im Werkzeugdialogfeld Calculate Shortest Route auf das Symbol neben Stopps, und klicken Sie auf die Karte, um Stopps hinzuzufügen.
- Klicken Sie auf OK, um eine Route und Wegbeschreibung zu erstellen.
- Um das Fenster Ergebnisse zu öffnen, klicken Sie auf Geoverarbeitung > Ergebnisse.
- Erweitern Sie Aktuelle Sitzung im Ergebnisfenster.
- Klicken Sie mit der rechten Maustaste auf CalculateShortestRoute (gefolgt von der Uhrzeit und dem Datum der Modellausführung), und wählen Sie Freigeben als > Geoverarbeitungs-Service.
- Klicken Sie im Dialogfeld Als Service freigeben auf Weiter.
- Wählen Sie eine ArcGIS for Server-Verbindung mit Publisher-Funktionen aus der Dropdown-Liste aus, oder stellen Sie eine Verbindung über die Schaltfläche rechts neben der Dropdown-Liste her.
- Klicken Sie auf Weiter.
- Veröffentlichen Sie den Service im Stammordner, oder geben Sie einen anderen Ordner an, und klicken Sie auf Fortfahren.
Das Dialogfeld Service-Editor wird angezeigt. Der Text aus den Elementbeschreibungen des Geoverarbeitungsmodells und des Skriptwerkzeugs wird kopiert, um den Service zu beschreiben. Er wird zur Bearbeitung im Bereich Elementbeschreibung des Dialogfeldes sowie in den Bereichen direkt darüber (Route_Directions, Startzeit usw.) angezeigt.
- Da eine Routenanalyse in diesem Untersuchungsgebiet schnell durchgeführt werden kann, synchronisieren Sie den Service, indem Sie auf die Registerkarte Parameter klicken und Synchron aktivieren. Wenn Sie einen Service für das Beheben von Location-Allocation- oder Start-Ziel-Kostenmatrix-Problemen veröffentlichen, stellen Sie für diese Eigenschaft Asynchron ein, und erhöhen Sie ggf. den Wert für Die maximale Zeit, die ein Client einen Service verwenden kann auf der Registerkarte Pooling.
- Ändern Sie Meldungsebene in Warnung, sodass bei Ausführung des Tasks Fehler- oder Warnmeldungen zurückgegeben werden.
- Entfernen Sie XML als Option für das Wegbeschreibungsdateiformat, indem Sie auf File Type for Directions klicken und XML deaktivieren.
- Klicken Sie auf Analysieren , um Warn- oder Fehlermeldungen im Fenster Publisher anzuzeigen.
Wenn Sie keinen Datenspeicher eingerichtet haben, erhalten Sie eine Warnung, dass Daten auf den Server kopiert werden.
Klicken Sie mit der rechten Maustaste im Fenster Publisher auf andere Fehlermeldungen, um Hilfe zur Behebung zu erhalten.
- Klicken Sie auf Veröffentlichen im Dialogfeld Service-Editor.
Eventuell wird sofort ein Dialogfeld angezeigt, um Sie darüber zu informieren, dass Streets_ND auf den Server kopiert wird. Klicken Sie in diesem Fall auf OK. Nach der erfolgreichen Veröffentlichung des Service wird das Dialogfeld Erfolgreich angezeigt.
- Klicken Sie auf OK.
Verwenden
- Öffnen Sie ein leeres Kartendokument, und fügen Sie die Streets-Feature-Class aus den Lernprogrammdaten hinzu (C:/arcgis/ArcTutor/GP Service Examples/Network Analyst/SanFrancisco/Transportation/Streets). Fügen Sie optional einen Grundkarten-Layer aus ArcGIS Online hinzu, und entfernen Sie das Straßen-Feature-Layer.
- Erstellen Sie eine Benutzerverbindung zu ArcGIS for Server im Fenster Katalog, wenn noch keine besteht.
- Erweitern Sie die Benutzerverbindung und den Service CalculateShortestRoute.
- Öffnen Sie den Task Calculate Shortest Route per Doppelklick.
- Fügen Sie mindestens zwei Punkte hinzu, um Stopps zu erstellen. Geben Sie optional Namen für jeden Stopp in der Attributtabelle für den Layer an, der im Inhaltsverzeichnis angezeigt wird: CalculateShortestRoute::Stops.
- Geben Sie ein Datum und eine Uhrzeit für die Abfahrt vom ersten Stopp auf der Route an. Wählen Sie, ob Wegbeschreibungen in Text- oder HTML-Format ausgegeben werden sollen. Klicken Sie auf OK, um den Task auszuführen.
ArcGIS for Server empfängt die Anforderung, berechnet die Analyse, gibt einen Layer namens "Routen" zurück und speichert die Wegbeschreibungsdatei in Ihrem temp-Verzeichnis. Sie können im Ergebnisfenster auf die Wegbeschreibung zugreifen: Blenden Sie Aktuelle Sitzung > CalculateShortestRoute ein, und doppelklicken Sie auf Route Directions: RouteDirections. (Klicken Sie mit der rechten Maustaste auf Route Directions: RouteDirections, und wählen Sie Speicherort kopieren, um zu ermitteln, wo auf dem Computer die Datei gespeichert ist.)