Beispiel für GV-Service: Kürzeste Route in einem Straßennetz

Komplexität: Fortgeschritten Erforderliche Daten: ArcGIS Tutorial Data Setup Datenpfad: C:\ArcGIS\ArcTutor\GP Service Examples\ShortestRoute Ziel: Erstellen, Veröffentlichen und Verwenden eines Geoverarbeitungs-Services, der die kürzeste Route in einem Straßennetz sucht und Wegbeschreibungen erstellt.

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

  • SanFranciscoBaseMap (Karten-Service)
  • ShortestRouteService (Geoverarbeitungs-Service)

Geoverarbeitungs-Tasks

  • Calculate Shortest Route and Text Directions
  • Calculate Shortest Route and HTML Directions

Eingaben

Zwei oder mehr vom Benutzer digitalisierte Punkte.

Ausgaben

  • Die kürzeste Route zwischen den vom Benutzer angegebenen Punkten, basierend auf der Fahrzeit.
  • Eine HTML- oder Textdatei (je nach verwendetem Task) mit der Wegbeschreibung.

Daten

Verwendet ein Straßennetz-Dataset für den Bereich San Francisco, das im Ordner "ToolData" bereitgestellt wird.

Erweiterungen

Network Analyst

Hinweis

  • Veranschaulicht, wie ein vorhandener Netzwerkanalyse-Layer für Routen bei jedem Ausführen des Tasks wiederverwendet wird.
  • Der Task "Calculate Shortest Route and HTML Directions" veranschaulicht, wie eine externe Python-Bibliothek in einem Skriptwerkzeug verwendet werden kann, um eine Wegbeschreibung vom XML- in das HTML-Format zu konvertieren.

Besonderheiten dieses Beispiels

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.

Beispielausgabe aus dem Task "Calculate Shortest Route and Text Directions"
Beispielausgabe aus dem Task "Calculate Shortest Route and Text Directions"

Daten

Die Daten für dieses Beispiel stammen aus C:\arcgis\ArcTutor\GP Service Examples\ShortestRoute.

Inhalt des Ordners "ShortestRoute"
Inhalt des Ordners "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.

Grundkarte von San Francisco, die die Ausdehnung des Netzwerk-Datasets anzeigt
Grundkarte von San Francisco, die die Ausdehnung des Netzwerk-Datasets anzeigt

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.

Modell "Calculate Shortest Route and Text Directions"

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

Mit dem Werkzeug Routen-Layer erstellen verwendete Parameterwerte
Erstellen eines Routen-Layers
Erstellen eines Routen-Layers

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.

Hinzufügen von Stopps
Hinzufügen von Stopps

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.

Generieren von Wegbeschreibungen
Generieren von Wegbeschreibungen

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.

Symbologie für den Werkzeug-Layer
Symbologie für den Werkzeug-Layer

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:

  1. Klicken Sie im Fenster Katalog mit der rechten Maustaste auf SanFranciscoBaseMap.mxd, und klicken Sie auf Mit ArcGIS Server veröffentlichen.
  2. Übernehmen Sie alle Standardeinstellungen.
  3. 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.
  4. Klicken Sie auf Weiter.
  5. 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.
    Veröffentlichen des ShortestRouteService
    Veröffentlichen des ShortestRouteService
  6. Klicken Sie auf Weiter. Von nun an können Sie die vom Assistenten angegebenen Standardwerte übernehmen und den Service erstellen.

Verwenden

  1. Starten Sie ArcMap mit einem leeren Dokument.
  2. Erstellen Sie eine Benutzerverbindung zu ArcGIS Server im Fenster Katalog, wenn noch keine besteht.
  3. Fügen Sie dem Inhaltsverzeichnis von ArcMap den Karten-Service SanFranciscoBaseMap hinzu.
  4. 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:
    Task "Calculate Shortest Route and Text Directions" in einer ArcMap-Sitzung
  5. 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.

    Task-Ergebnis
    Task-Ergebnis
  6. 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.
    Anzeigen der Wegbeschreibungsdatei
    Anzeigen der Wegbeschreibungsdatei

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.

Inhalt des Ordners "Scripts"
Inhalt des Ordners "Scripts"

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
Hinzufügen des Skriptwerkzeugs

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.

Modell "Calculate Shortest Route and HTML Directions

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:

  1. 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.
  2. Speichern Sie "ShortestRouteService.mxd".
  3. 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.

Wegbeschreibung im HTML-Format
Wegbeschreibung im HTML-Format

Verwandte Themen


3/6/2012