Beispiel für GV-Service: Suchen nahe gelegener Features über ein Straßennetz
Ordner |
ClosestFacilities |
Zweck |
Ermittelt eine bestimmte Anzahl von nächstgelegenen Bibliotheken von einem Anfangspunkt basierend auf der Fahrzeit entlang des Straßennetzes, berechnet die kürzeste Route zu jeder nächstgelegenen Bibliothek und generiert eine Wegbeschreibung in einer Textdatei. |
Services |
|
Geoverarbeitungs-Task |
Find Nearby Libraries |
Eingaben |
Ein oder mehrere vom Benutzer digitalisierte Punkte und die Anzahl der zu suchenden nächstgelegenen Bibliotheken. |
Ausgaben |
|
Daten |
Verwendet ein Straßennetz-Dataset und eine Feature-Class mit allen Bibliotheksstandorten für den Bereich San Francisco, die im Ordner "ToolData" bereitgestellt sind. |
Erweiterungen |
|
Hinweis |
Veranschaulicht die Verwendung eines berechneten Netzwerkanalyse-Layers zur weiteren Analyse. |
Entsprechender Ordner
C:\arcgis\ArcTutor\GP Service Examples\ClosestFacilities enthält die fertigen Modelle und Daten.
Besonderheiten dieses Beispiels
Der in diesem Beispiel erstellte Service ClosestFacilitiesService zeigt, wie Geoverarbeitungs-Tasks veröffentlicht werden, die eine Analyse der nächstgelegenen Einrichtungen in einem Straßennetz ausführen. Der Task Find Nearby Libraries ermittelt die kürzeste Route zu einer benutzerdefinierten Anzahl von nächstgelegenen Bibliotheken anhand gegebener Punkte, basierend auf der Fahrzeit entlang des Straßennetzes. Der Task gibt außerdem Routen und Wegbeschreibungen zu den nächstgelegenen Bibliotheken aus.
Daten
Die Daten für dieses Beispiel stammen aus C:\arcgis\ArcTutor\GP Service Examples\ClosestFacilities.
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 Fahrzeit zu jedem Straßenabschnitt 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 nahegelegenen Bibliotheken bestimmt werden können.
SanFranciscoBaseMap wird als Karten-Service veröffentlicht.
Toolbox und Kartendokument
Die Toolbox für den Geoverarbeitungs-Service lautet ClosestFacilitiesService, und das Quellkartendokument für den Service lautet ClosestFacilitiesService.mxd. ClosestFacilitiesService.mxd enthält die folgenden vier Quelldaten-Layer und den Werkzeug-Layer "Find Nearby Libraries":
- Streets_ND: Das Netzwerk-Dataset.
- "Library": Feature-Layer mit den Standorten aller Bibliotheken in und um San Francisco.
- "ClosestLibrariesSymbology": Feature-Layer, der die Symbologie für die ausgegebenen Bibliotheken festlegt.
- "OutputRoutesSymbology": Feature-Layer, der die Symbologie für die ausgegebenen Routen festlegt.
Modell
Überblick über das Modell
Nachfolgend wird das Modell "Find Nearby Libraries" veranschaulicht. Es gibt zwei Eingabevariablen:
- Eingabepositionen, wobei es sich um benutzerdefinierte Punkte handelt, von denen aus die nächstgelegenen Bibliotheken gesucht werden.
- Anzahl der zu suchenden Bibliotheken
Das Modell erstellt einen Netzwerkanalyse-Layer der nächstgelegenen Einrichtungen, fügt die Bibliotheksstandorte vom Feature-Layer mit den Bibliotheken als Einrichtungen hinzu, ergänzt die benutzerdefinierten Standorte als Ereignisse und führt eine Berechnung aus, um die Routen zu den nächstgelegenen Bibliotheken festzulegen, Wegbeschreibungen zu generieren und aus allen Bibliotheken, die als Einrichtungen geladen sind, nur die diejenigen zu suchen, die sich auf der Route befinden.
Element |
Type |
Beschreibung |
---|---|---|
Straßennetz |
Netzwerk-Dataset-Layer |
Der Netzwerk-Dataset-Layer. |
Anzahl der zu suchenden Bibliotheken |
Long, Eingabeparameter |
Die Anzahl der zu suchenden Bibliotheken für jeden Eingabeort. |
Werkzeug |
Erstellt einen Netzwerkanalyse-Layer für die nächstgelegenen Einrichtungen. Dieser Layer enthält Daten und Eigenschaften, die bestimmen, wie die nächstgelegenen Einrichtungen berechnet werden, sowie die Berechnungsergebnisse. |
|
Closest Facility |
Network Analyst-Layer |
Layer der nächstgelegenen Einrichtungen. |
Library |
Feature-Layer |
Die Point-Feature-Class mit allen Bibliotheksstandorten. Die Lage dieser Punkte im Straßennetz wurde bereits berechnet, wie im Abschnitt Vorausberechnen von Netzwerkstandorten für Bibliotheken beschrieben. |
Werkzeug |
Fügt die Bibliotheksstandorte als Einrichtungen zum Layer der nächstgelegenen Einrichtungen hinzu. |
|
Closest Facility (1) |
Network Analyst-Layer |
Layer der nächstgelegenen Einrichtungen mit den Einrichtungen. |
Input Locations |
Feature-Set (Punkte), Eingabeparameter |
Punkt-Features, von denen ausgehend die nächstgelegenen Bibliotheken bestimmt werden. |
Standorte hinzufügen |
Werkzeug |
Fügt die Eingabepositionen als Ereignisse dem Layer der nächstgelegenen Einrichtungen hinzu. |
Closest Facility (2) |
Network Analyst-Layer |
Layer der nächstgelegenen Einrichtungen mit den Einrichtungen und Ereignissen. |
Werkzeug |
Berechnet die nächstgelegenen Einrichtungen und bestimmt die kürzeste Route zu jeder Einrichtung. |
|
Closest Facility (3) |
Network Analyst-Layer |
Layer der nächstgelegenen Einrichtungen mit allen Einrichtungen und der kürzesten Route zu den nächstgelegenen Einrichtungen. |
SolveSucceeded | Boolesch | Die abgeleitete Ausgabe aus dem Werkzeug Berechnen, die angibt, ob die Berechnung erfolgreich war. |
Werkzeug | Generiert die Wegbeschreibungen für die Routen zu den nächstgelegenen Einrichtungen. | |
Text Directions | Datei, Ausgabe-Parameter | Die Textdatei mit den Wegbeschreibungen. |
Closest Facility (4) | Network Analyst-Layer | Layer der nächstgelegenen Einrichtungen mit allen Einrichtungen und der kürzesten Route zu den nächstgelegenen Einrichtungen. |
Werkzeug |
Wählt den Sublayer "Routes" aus dem Layer der nächstgelegenen Einrichtungen aus. |
|
Routen |
Feature-Layer |
Der Layer "Routes" aus dem Network Analyst-Layer Closest Facility (3). |
OutputRoutesSymbology |
Layer |
Der Symbologie-Layer, anhand dessen Symbologie auf den Feature-Layer Routes angewendet wird. |
Werkzeug |
Wendet Symbologie aus dem OutputRoutesSymbology-Layer im Layer Routes an. |
|
Closest Routes | Feature-Layer, Ausgabeparameter | Der Layer "Routes" mit entsprechender Symbologie. |
Daten auswählen (Facilities) |
Werkzeug |
Wählt den Sublayer "Facilities" aus dem Layer der nächstgelegenen Einrichtungen aus. |
Facilities |
Feature-Layer |
Der Layer "Facilities" aus dem Network Analyst-Layer Closest Facility (3). |
Werkzeug |
Verbindet die Felder "FacilityID", "FacilityRank", "Total_TravelTime" und "Total_Meters" aus dem Layer "Routes" mit dem Layer "Facilities". |
|
Facilities (3) |
Tabellensicht |
Der abgeleitete Layer "Facilities" enthält die verbundenen Felder. |
Werkzeug |
Wählt nur die Einrichtungen aus, bei denen der FacilityID-Wert nicht Null ist. Nur die für die Ausgabe-Einrichtungen benötigten Felder sind sichtbar. |
|
Facilities_Layer |
Feature-Layer |
Der Feature-Layer "Facilities_Layer" enthält nur die Einrichtungen, die in den Routen enthalten sind. |
ClosestLibrariesSymbology |
Layer |
Der Symbologie-Layer, anhand dessen Symbologie auf den Layer Facilities_Layer angewendet wird |
Apply Symbology From Layer (1) |
Werkzeug |
Wendet Symbologie aus dem Layer "ClosestLibrariesSymbology" auf den Layer Facilities_layer an. |
Closest Libraries |
Feature-Layer, Ausgabeparameter |
Der Facilities_Layer mit entsprechender Symbologie. |
Vorausberechnen von Netzwerkstandorten für Bibliotheken
Die Bibliotheksstandorte, die in der Analyse der nächstgelegenen Einrichtung verwendet werden, sind nicht temporär. Ihre Positionen im Netzwerk bleiben konstant. Daher ist es effektiver, ihre Netzwerkstandorte nur einmal zu berechnen, anstatt sie jedes Mal zu berechnen, wenn sie als Einrichtungen hinzugefügt werden.
Das Werkzeug Standorte berechnen kann verwendet werden, um die Netzwerkstandorte der Bibliotheken zu ermitteln und diese Informationen in den Feldern "SourceID", "SourceOID", "PosAlong" und "SideOfEdge" zu speichern. Diese Information kann dann mit dem Werkzeug Standorte hinzufügen verwendet werden, um Bibliotheken als Einrichtungen in den neuen Layer der nächstgelegenen Einrichtungen zu laden. Dies ist erheblich schneller, als Standorte hinzufügen zu verwenden, um als erstes den Netzwerkstandort der Bibliotheken zu bestimmen, und sie dann als Einrichtungen zu laden. Für den Layer "Library" wurden die Netzwerkstandorte basierend auf dem Netzwerk-Dataset-Layer "Streets_ND" mit Hilfe des Werkzeugs "Standorte berechnen" ermittelt.
Beachten Sie Folgendes: Falls die Einrichtungen in einem anderen Szenario temporär sind, müssen ihre Netzwerkstandorte jedes Mal neu festgelegt werden, wenn sie als Einrichtungen hinzugefügt werden. Das Vorausberechnen ihrer Netzwerkstandorte mit dem Werkzeug "Standorte berechnen" bietet daher keinen Performance-Vorteil.
Modellprozesse
Mit dem Werkzeug Layer der nächsten Einrichtung erstellen wird der neue Network Analyst-Layer (NA), "Closest Facility", erstellt, in dem die Analyseeigenschaften gespeichert werden, der auf den für die Analyse verwendeten Netzwerk-Dataset-Layer "Streets_ND" verweist und in dem die Eingabe-Einrichtungen, Ereignisse und Ausgaberouten gespeichert werden. Das Netzwerk-Dataset verfügt über das Netzwerkkostenattribut "TravelTime", das die zum Durchfahren der einzelnen Straßenabschnitte erforderliche Fahrzeit in Minuten angibt. Dieses Attribut wird als Impedanz-Attribut verwendet. Die Variable Anzahl der zu suchenden Bibliotheken gibt die Anzahl der zu suchenden Einrichtungen an.
Mit dem Werkzeug Standorte hinzufügen (Bibliotheken) werden die Bibliotheksstandorte dem Layer der nächstgelegenen Einrichtungen als Einrichtungen hinzugefügt. Da die Netzwerkstandorte der Bibliotheken bereits mithilfe des Werkzeugs Standorte berechnen berechnet wurden, wurde die Option Netzwerkstandortfelder statt Geometrie verwenden aktiviert.
Das Werkzeug Standorte hinzufügen fügt dem Layer der nächstgelegenen Einrichtungen die vom Benutzer digitalisierten Punkte als Ereignisse hinzu. Der Parameter Eingabepositionen ist vom Datentyp "Feature-Set", sodass das Modell die vom Benutzer digitalisierten Punkte interaktiv als Ereignisse übernehmen kann. Das Schema und die Symbologie für das Feature-Set werden aus der Datei InputLocations.lyr im Ordner "ToolData" abgeleitet.
Das Werkzeug Berechnen sucht eine bestimmte Anzahl von nächstgelegenen Einrichtungen zu jedem Ereignis und berechnet die kürzeste Route zu jeder Einrichtung anhand des Netzwerkattributs "TravelTime". Die berechneten Routen werden in den Sublayer "Routes" im Ausgabe-Layer der nächstgelegenen Einrichtungen geschrieben.
Der Network Analyst-Layer ist kein unterstützter Ausgabeparameter-Datentyp für ArcGIS Server-Clients. Daher wird der Sublayer "Routes" mit dem Werkzeug Daten auswählen aus dem Network Analyst-Layer der nächstgelegenen Einrichtungen abgerufen.
Der Sublayer "Routes" verwendet die Symbologie des Network Analyst-Layers. Um eine andere Symbologie anwenden zu können, so dass beispielsweise jede Route eine andere Farbe erhält, wird das Werkzeug Symbologie aus Layer anwenden verwendet, um die Symbologie aus dem Layer OutputRoutesSymbology auf den Sublayer "Routes" anzuwenden.
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.
Der Sublayer "Routes" im Layer der nächstgelegenen Einrichtungen enthält das Feld "FacilityID", das die Objekt-ID der auf der Route liegenden Einrichtung angibt. Diese Informationen können verwendet werden, um unter allen Einrichtungen nur die auszuwählen, die auf der Route liegen. Das Werkzeug Join-Felder verbindet den Sublayer "Routes" mit Hilfe des Feldes "FacilityID" mit dem Einrichtungen-Layer. Das Werkzeug verbindet die Felder "FacilityID", "FacilityRank", "Total_TravelTime" und "Total_Meters" mit dem Sublayer der Einrichtungen anhand der Felder "FacilityID" im Sublayer "Routes" und "ObjectID" im Einrichtungen-Sublayer.
Die Ausgabe des Werkzeugs Join-Felder enthält das Feld "FacilityID" im Sublayer "Facilities". Das Feld hat den Wert "Null" für alle Einrichtungen, die nicht auf den Routen liegen. Bei der Verwendung des Werkzeugs Feature-Layer erstellen werden nur die Einrichtungen ausgewählt und an einen neuen Layer ausgegeben, deren Wert des Feldes "FacilityID" nicht Null ist.
Die Symbologie des Layers "Facilities" wird aus dem Layer "OutputLibrariesSymbology" mit Hilfe des Werkzeugs Symbologie aus Layer anwenden festgelegt.
Werkzeug-Layer
Der Werkzeug-Layer "Find Nearby Libraries" wird erstellt, indem das Modell "Find Nearby Libraries" in das Inhaltsverzeichnis von ArcMap gezogen wird.
Da die Ausgaben des Modells In-Memory-Feature-Layer sind, weisen die Sublayer "Closest Libraries" und "Routes" im Werkzeug-Layer eine defekte Datenquelle auf, wenn Sie zum ersten Mal die Datei ClosestFacilitiesService.mxd öffnen. Das Kartendokument wird dann unverändert veröffentlicht. Sie sollten jedoch den Werkzeug-Layer erneut ausführen und sicherstellen, dass das Modell funktioniert, bevor Sie den Service veröffentlichen.
Beachten Sie Folgendes: Wenn Sie die Symbologie für einen Ausgabe-Layer im Werkzeug-Layer verändern, wird die neue Symbologie nicht verwendet. Das liegt daran, dass die Ausgaben des Modells Feature-Layer sind und deren Symbologien bereits mit Hilfe des Werkzeugs Symbologie auf Layer anwenden im Modell definiert wurden.
Veröffentlichen
SanFranciscoBaseMap.mxd wird als Karten-Service veröffentlicht. ClosestFacilitiesService.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 ClosestFacilitiesService 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 "ClosestFacilitiesService.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 ClosestFacilitiesService, und öffnen Sie das Werkzeug "Find Nearby Libraries". In der Abbildung unten wird das Ergebnis dieser Schritte dargestellt:
- Fügen Sie einen Punkt hinzu, um eine Eingabeposition zu erstellen. Geben Sie als Anzahl der zu suchenden Bibliotheken 3 an, und klicken Sie auf OK, um den Task auszuführen.
Nach dem Ausführen des Tasks enthält das Inhaltsverzeichnis wie unten dargestellt die Ausgabe-Layer "Closest Libraries" und "Routes". Die Eingabepositionen 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. Diese Datei kann angezeigt werden, indem Sie im Fenster Ergebnisse darauf doppelklicken.