Beispiel für GV-Service: Kürzeste Route in einem Straßennetz
Ordner |
ShortestRoute |
Zweck |
Erstellt die kürzeste Route zwischen angegebenen Punkten in einem Straßennetz und generiert eine Wegbeschreibung in einer Text- oder HTML-Datei. |
Services |
|
Geoverarbeitungs-Tasks |
|
Eingaben |
Zwei oder mehr vom Benutzer digitalisierte Punkte. |
Ausgaben |
|
Daten |
Verwendet ein Straßennetz-Dataset für den Bereich San Francisco, das im Ordner "ToolData" bereitgestellt wird. |
Erweiterungen |
|
Hinweis |
|
Entsprechender Ordner
C:\arcgis\ArcTutor\GP Service Examples\ShortestRoute enthält die fertigen Modelle, das Skriptwerkzeug und die Daten.
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. Mit dem Task "Calculate Shortest Route and Text Directions" wird die Wegbeschreibung in einer Textdatei generiert, und mit dem Task "Calculate Shortest Route and HTML Directions" wird die Wegbeschreibung in einer HTML-Datei generiert. Mit beiden Tasks wird außerdem die kürzeste Route als Feature-Set ausgegeben.
Daten
Die Daten für dieses Beispiel stammen aus C:\arcgis\ArcTutor\GP Service Examples\ShortestRoute.
Netzwerk-Dataset
Der Ordner "ToolData" enthält die File-Geodatabase SanFrancisco.gdb. Diese Geodatabase enthält im Feature-Dataset "Transportation" das Netzwerk-Dataset Streets_ND. Dieses Netzwerk-Dataset bildet das Straßennetz des Bereichs San Francisco ab. Es stellt das Netzwerkattribut TravelTime bereit, das die Fahrtzeit zu jedem Straßenabschnitt in Minuten angibt.
Grundkarte
Der Grundkarten-Layer in SanFranciscoBaseMap.mxd verfügt über den Layer "Streets" (siehe Abbildung unten). Dieser Layer stellt die Ausdehnung des Netzwerk-Datasets dar. Dies bedeutet, dass mit dem Task nur in dieser Ausdehnung die kürzeste Route bestimmt werden kann.
SanFranciscoBaseMap.mxd wird als Karten-Service veröffentlicht.
Toolbox und Kartendokument
Die Toolbox für den Geoverarbeitungs-Service lautet ShortestRouteService, und das Quellkartendokument für den Service lautet ShortestRouteService.mxd. ShortestRouteService enthält zwei Modelle und das Skriptwerkzeug Convert directions to HTML. Dieses Skriptwerkzeug wird im Modell "Calculate Shortest Route and HTML Directions" verwendet. ShortestRouteService.mxd enthält die beiden Quelldaten-Layer "Streets_ND" (das Netzwerk-Dataset) und "Route" (den Netzwerkanalyse-Layer).
Modell
Überblick über das Modell
Das Modell Calculate Shortest Route and Text Directions wird in der folgenden Abbildung veranschaulicht. Es gibt einen Eingabeparameter, Input Stops, bei dem es sich um Punkte handelt. Die kürzeste Route verläuft in der digitalisierten Reihenfolge über die Stopps. Das Modell fügt einem vorhandenen Netzwerkanalyse-Layer für Routen die vom Benutzer digitalisierten Punkte als Stopps hinzu, berechnet die kürzeste Route, generiert eine Wegbeschreibung und schreibt diese in eine Textdatei.
Verwenden eines vorhandenen Netzwerkanalyse-Layers
Im Gegensatz zum Beispiel "DriveTimePolygonsService" wird in diesem Modell kein Netzwerkanalyse-Layer erstellt. Stattdessen wird der vorhandene Routen-Layer Route verwendet. (Dieser Layer wurde mit dem Werkzeug Routen-Layer erstellen erstellt.) Der vorhandene Layer kann verwendet werden, weil keine der Analyseeigenschaften für den Routen-Layer, z. B. das Impedanz-Attribut, als Modellparameter verfügbar gemacht werden. Im Beispiel "DriveTimePolygonsService" wurden die Standardunterbrechungswerte (eine Analyseeigenschaft für Einzugsgebiets-Layer) als Modellparameter verfügbar gemacht, daher war das Werkzeug Einzugsgebiets-Layer erstellen als Modellprozess erforderlich.
Wenn eine der Routenanalyseeigenschaften, z. B. das Impedanz-Attribut, als Modellparameter verfügbar gemacht werden sollen, muss das Werkzeug Routen-Layer erstellen als erster Prozess im Modell verwendet werden.
Der als Eingabevariable im Modell 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 Parameter für das Werkzeug Routen-Layer erstellen verwendet. Für die in der Tabelle nicht angegebenen Parameter wurden Standardwerte verwendet.
Parameter |
Wert |
Eingabe-Analysenetzwerk |
Streets_ND |
Ausgabe-Layer-Name |
Route |
Impedanz-Attribut |
TravelTime |
Akkumulatoren |
TravelTime; Meter |
Wendenregel |
ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY |
Modellprozesse
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.
Das Werkzeug Berechnen berechnet die kürzeste Route anhand des Netzwerkattributs "TravelTime" und weiterer im Routen-Layer angegebener Optionen. Die berechnete Route wird in den Sublayer "Routes" im Ausgabe-Routen-Layer geschrieben.
Netzwerkanalyse-Layer (z. B. "Route") sind keine unterstützten Ausgabeparameter-Datentypen für ArcGIS Server-Clients. Daher wird der Sublayer "Routes" mit dem Werkzeug Daten auswählen aus dem Routen-Layer abgerufen.
Mit dem Werkzeug Wegbeschreibung wird die Wegbeschreibung generiert und in eine Textdatei ausgegeben. Die Ausgabe-Textdatei mit der Wegbeschreibung wird mit Hilfe der Inline-Variablen %scratchworkspace% im Auftragsverzeichnis auf dem Server erstellt. 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.
Werkzeug-Layer
Der Werkzeug-Layer Calculate Shortest Route and Text Directions wird erstellt, indem das Modell Calculate Shortest Route and Text Directions in das Inhaltsverzeichnis von ArcMap gezogen wird. Da der vorhandene Routen-Layer durch das Modell aktualisiert wird, wird die Symbologie für die Ausgabe des Werkzeug-Layers vom Routen-Sublayer im Routen-Layer des Inhaltsverzeichnisses abgeleitet.
Veröffentlichen
SanFranciscoBaseMap.mxd wird als Karten-Service veröffentlicht. ShortestRouteService.mxd wird wie folgt als Geoverarbeitungs-Service ohne Karten-Service des Ergebnisses veröffentlicht:
- Klicken Sie im Fenster Katalog mit der rechten Maustaste auf SanFranciscoBaseMap.mxd, und klicken Sie auf Mit ArcGIS Server veröffentlichen.
- Übernehmen Sie alle Standardeinstellungen.
- Navigieren Sie im Fenster Katalog zur Anmeldung als Administrator beim Server unter dem Knoten GIS-Server, klicken Sie mit der rechten Maustaste, und wählen Sie dann Neuen Service hinzufügen aus. Weisen Sie dem Service den Namen ShortestRouteService zu, und wählen Sie als Typ Geoverarbeitungs-Service aus.
- Klicken Sie auf Weiter.
- Wählen Sie im nächsten Fenster Synchron als Ausführungstyp aus. Wählen Sie für Die vom Geoverarbeitungsdienst bereitgestellten Werkzeuge sind gespeichert in die Option Einer Karte aus, und geben Sie "ShortestRouteService.mxd" als Kartendokument an. Da Sie den Service testen, aktivieren Sie Meldungen anzeigen.
- Klicken Sie auf Weiter. Von nun an können Sie die vom Assistenten angegebenen Standardwerte übernehmen und den Service erstellen.
Verwenden
- Starten Sie ArcMap mit einem leeren Dokument.
- Erstellen Sie eine Benutzerverbindung zu ArcGIS Server im Fenster Katalog, wenn noch keine besteht.
- Fügen Sie dem Inhaltsverzeichnis von ArcMap den Karten-Service SanFranciscoBaseMap hinzu.
- Erweitern Sie im Fenster Katalog unter dem Knoten GIS-Server der Benutzerverbindung die Toolbox ShortestRouteService, und öffnen Sie das Werkzeug Calculate Shortest Route and Text Directions. In der Abbildung unten wird das Ergebnis dieser Schritte dargestellt:
- Fügen Sie mehrere Punkte hinzu, um Stopps zu erstellen. Optional können Sie für jeden Stopp einen Namen angeben. Klicken Sie auf OK, um den Task auszuführen.
Nach dem Ausführen des Tasks enthält das Inhaltsverzeichnis wie unten dargestellt den Ausgabe-Layer "Shortest Route". Die Eingabestopps werden nicht von dem Task ausgegeben, sondern werden dem Inhaltsverzeichnis aus dem Knoten Eingaben im Fenster Ergebnisse hinzugefügt.
- Die Textdatei mit der Wegbeschreibung wird aus dem Auftragsverzeichnis auf dem Server in den Scratch-Workspace der aktuellen ArcMap-Sitzung kopiert. Die Textdatei mit der Wegbeschreibung kann durch Doppelklicken auf die Textdatei auf der Registerkarte Ergebnisse angezeigt werden.
Generieren einer HTML-Wegbeschreibung
Mit dem Werkzeug Wegbeschreibung im Modell Calculate Shortest Route and Text Directions können Wegbeschreibungen im Text- oder XML-Format generiert werden. Wegbeschreibungen im XML-Format lassen sich durch Anwenden eines Stylesheets mithilfe eines Python-Skriptes in eine ansprechend formatierte HTML-Datei konvertieren. Mit dem Skript ApplyStyleSheet.py im Unterordner "Scripts" des Ordners "ShortestRoute" können Wegbeschreibungen von XML in HTML konvertiert werden. Der Ordner "Scripts" enthält außerdem die Stylesheet-Datei Dir2WebDocumentNoMaps.xsl, in der das Format der HTML-Datei festgelegt ist.
Installieren der externen Python-Bibliothek
Für das Skript ApplyStyleSheet.py wird die externe Python-Bibliothek lib2xml verwendet. Diese Bibliothek wird nicht mit ArcGIS mitgeliefert, und sie wird nicht von Esri unterstützt. Es handelt sich um externe Software von Drittanbietern. Sie müssen die Bibliothek herunterladen und auf den ArcGIS Server SOC-Computern installieren. Rufen Sie http://xmlsoft.org/sources/win32/python/ auf, und laden Sie die aktuelle libxml2-Installationsdatei für Python 2.6 herunter (z. B. libxml2-python-2.7.4.win32-py2.6.exe – frühere Versionen sind eventuell nicht funktionsfähig). Doppelklicken Sie nach dem Herunterladen auf die ausführbare Datei, um die Bibliothek zu installieren.
Erstellen des Skriptwerkzeugs
Zum Verwenden des Skripts ApplyStyleSheet.py im Modell wird es der Toolbox ShortestRouteService als Skriptwerkzeug mit dem Namen "Convert Directions to HTML" hinzugefügt. Das Skriptwerkzeug akzeptiert die Stylesheet-Datei und die XML-Datei als Eingabe und generiert als Ausgabe eine HTML-Datei.
Hinzufügen des Skriptwerkzeugs zum Modell
Das Modell Generate Shortest Route and Text Directions wird umbenannt und unter dem Namen Generate Shortest Route and HTML Directions neu gespeichert, um das Skriptwerkzeug "Convert Directions to HTML" hinzuzufügen. In diesem Modell wird der Parameter "Ausgabedateityp" für das Werkzeug Wegbeschreibung in XML geändert. Diese XML-Datei und die Datei Dir2WebDocumentNoMaps.xsl dienen als Eingabevariablen für das Skriptwerkzeug. Die HTML-Ausgabedatei wird mit der Inline-Variablen %scratchworkspace% in das Auftragsverzeichnis auf dem Server geschrieben.
Veröffentlichen und verwenden
Das Modell Calculate Shortest Route and HTML Directions kann wie folgt im zuvor erstellten Geoverarbeitungs-Service "ShortestRouteService" als neuer Task veröffentlicht werden:
- Erstellen Sie den Werkzeug-Layer Calculate Shortest Route and HTML Directions in "ShortestRouteService.mxd", indem Sie das Modell Calculate Shortest Route and HTML Directions aus dem Fenster Katalog in das Inhaltsverzeichnis von ArcMap ziehen.
- Speichern Sie "ShortestRouteService.mxd".
- Beenden Sie im Fenster Katalog den Geoverarbeitungs-Service "ShortestRouteService", und starten Sie ihn neu.
Der Service ShortestRouteService verfügt jetzt über einen zweiten Task mit dem Namen "Calculate Shortest Route and HTML Directions". Dieser Task stimmt mit dem Task Calculate Shortest Route and Text Directions überein, jedoch erzeugt er die Wegbeschreibung im HTML-Format.