Select to view content in your preferred language

World Routing Service - Nutzung im ArcMap Model Builder

1533
0
09-22-2014 01:53 PM
JörgMoosmeier
Esri Contributor
1 0 1,533

In einem meiner letzten Beiträge habe ich mich schon mit der Nutzung der ArcGIS Online Routing Dienstes im 'Routen suchen' Dialog von ArcMap beschäftigt. World Routing Service - Nutzung in ArcMap
Für einzelne Routen oder für die gelegentliche Nutzung ist es ein sehr gut passendes Tool.

Wenn man allerdings viele Routen berechnen will, oder mit den Ergebnissen noch weiter arbeiten will, dann bietet ArcMap mit dem Model Builder eine sehr mächtige Möglichkeit eigene Tools zu bauen. Und das funktioniert auch mit Online Services nicht nur mit den ArcMap eigenen Tools.

Routes_8.JPG

Hier könnt ihr Euch eine File Geodatabase mit Daten und den Modellen runterladen: http://bit.ly/1v9mxIP

Nutzung von ArcGIS Online Diensten

Wenn man in ArcMap in seiner Organisation angemeldet ist, stehen in Katalog von ArcMap (bzw ArcCatolog) einige Online Dienste zur Verfügung, Die Verbindung heißt "Einsatzbereite Services (<Subskriptions Name>)". Rein technisch ist das nichts anderes als das Service Directory eines ArcGIS for Server mit allen angebotenen GP Diensten.

login.jpg

Man findet hier nicht alle ArcGIS Online Analyse Services. Im Wesentlichen sind es die Dienste die Daten als Voraussetzung haben, also Netzwerk- und Geokodierungsdienste und Höhendienste. ArcGIS Online Tools wie 'Punkte aggregieren' werden nicht angeboten. ArcMap hat für solche Aufgaben genügend eigene Tools.

Direkte Nutzung des Routing Service als Tool

Sobald man eines der Tools mit einem Doppelklick startet, bekommt man eine generische Geoprocessing Oberfläche zu sehen, mit allen möglichen Input und Output Parametern.

Das Geoprocessing Tool FindRoutes hat so viele mögliche Parameter, dass ich zwei Screenshots machen musste.

findroutes_1.JPGfindroutes_2.JPG

Die Hilfe für die einzelnen Parameter ist sehr gut und umfangreich, darum an dieser Stelle nur ein paar Tipps für die Nutzung von 'FindRoutes'

Eine der wichtigsten Einstellungen ist der Parameter 'TravelMode'. Wenn man 'Custom' eingibt, kann man viele Parameter (max Höhe, welche Strassentypen,...) selbst definieren. Alle anderen Einstellungen (Driving,....) bringen einen eigenen Satz an Parametern. Alles was man manuell eingibt wird dann ignoriert!

Für Europa gibt es noch keine LKW Fahrzeiten. Man kann zwar Logistik Attribute benutzen (Höhe, Breite, Länge, Gewicht,...) aber die Fahrzeiten stehen erst im Laufe des Jahres für LKW zur Verfügung. Momentan läuft man in einen Fehler, wenn man z.B. als Travel Mode 'Trucking' wählt.

Eigene Restriktionen wählt man mit 'Restrictions' aus. Man muss dazu dann aber auch Werte unter 'Attribute Parameter Values' angeben. Wenn man also Routen mit Höhenbeschränkung rechnen lassen will, muss man auch eine Höhe mitgeben.

Einbinden des Routing Dienstes in ArcMap Model Builder

Normalerweise braucht man diese Fülle an Parametern, die man in den Screenshots oben sieht, nicht. Es bietet sich deshalb an das Tool 'Find Routes' in einem eigenen Model zu benutzen.

1 Definieren der notwendigen Parameter

Zum Start einfach eine neue Toolbox definieren, ein Model öffnen und das Tool 'Find Routes' per drag&drop in das blanke Model einbinden.

Routes_1.JPG

Ich möchte zum Start eine Reihe von Parametern selbst definieren:

Stopps, Restriktionen und die zugehörigen Parameter und deshalb auch den Drive Mode.

Das Model und die zugehörige Eingabemaske sehen jetzt so aus:

Routes_3.JPG

Konvertieren des Ergebnis

Als Ergebnis der Analyse möchte ich nur die Routen sehen. Es reicht wenn man bei 'Output Routes' die Optionen 'Zur Anzeige hinzufügen' und 'Modellparameter' aktiviert.

Das Ergebnis von 'FindRoutes' ist vom Typ 'Feaure Set' und dieser Datentyp hat einige Einschränkungen. Man kann nicht direkt abspeichern, nicht umbenennen und das Feature Set kann auch nicht als Eingabe Datensatz für die meisten anderen Tools benutzt werden.

Für das Umwandeln von Feature Sets kann die Funktion 'Features in Linie' benutzt werden. Damit man das Ergebnis auch in der Karte sehen kann, braucht man noch das Tool 'Werte erfassen'. Das Tool 'Werte erfassen' ist nur im und für den Model Builder verfügbar. Es kann im Model Builder über Einfügen/Nur Modellwerkzeuge hinzugefügt werden.

Das Model sieht jetzt so aus:

Routes_5.JPG

Damit 'Features in Linie' richtig funktioniert, muss das Tool einmal erfolgreich gelaufen sein, damit das Tool den Typ des Feature Sets erkennen kann.


Berechnung vieler Routen

Wenn man nur eine Route zwischen zwei (oder mehr) Stopps berechnen will, dann ist ein Modell nicht zwingend notwendig. Richtig interessant wird es erst, wenn man mehrere Routen in einem Rutsch berechnen will.

Hierfür müssen wir eine Schleife einbauen. Hierfür gibt es im Model Builder verschieden Möglichkeiten. Ich benutze hier sog. Iteratoren.

Über den Menüpunkt Einfügen/Iteratoren kann man auf eine Auswahl von verschiedenen Iteratoren zugreifen. Für diesen Fall ist der Iterator 'Feature Auswahl iterieren'  passend.

Route_1.PNG

  1. Die Stopps erfasse ich in einer Punkt Featureklasse. Die Punkte die zu einer Route gehören haben einen gemeinsamen Attribut Wert. Über dieses Attribut erzeugt der Iterator auch die Feature-Auswahl. Funktioniert genauso wie 'gruppieren nach' in einer SQL Abfrage.
    Der Iterator erzeugt für jeden Satz an Punkten (mit einem gleichen Attribut Wert) eine Route. Momentan wird aber immer ein Linienfeature mit dem gleichen Namen erzeugt und das alte Ergebnis überschrieben.
  2. Damit für jede Route auch eine eigenes Feature erzeugt wird, muss der Name des Ergebnis des Tools 'Feature in Linie' ebenfalls iteriert werden. Dafür fügt man in den Namen der Featureklasse eine Variable ein, zum Beispiel: Default.gdb\Route_%wert%
    Wenn also z.B. der Attribut Wert a,b und c ist, dann heißen die Ergebnisrouten route_a, route_b und route_c

Noch ein paar Konfigurationen

Restriktionen

In dem Modell kann man auch Restriktionen angeben. Damit man nicht bei jedem Durchlauf die Parameter für Länge, Höhe, Gewicht,... angeben muss, kann man auch eine Tabelle mit den Werten für ein bestimmtes Fahrzeug abspeichern und darauf referenzieren.

Nicht vergessen: Das funktioniert nur, wenn der Travel Mode auf 'Custom' eingestellt ist.

Barrieren

Im Model kann man auch flächige Barrieren angeben. Es sind aber nicht nur Barrieren, es können auch Gebiete definiert werden, die nur die Durchfahrt verlangsamen oder auch beschleunigen.

Fazit und Ressourcen

Die Online Dienste lassen sich nahtlos in eigene Tools integrieren. Die Online Tools haben zwar ein paar Besonderheiten, z.B. dass das Ergebnis ein Feature Set ist, aber ansonsten merkt man im Umgang mit den Online Tools keinen großen Unterschied zu lokalen Tools.

Für einige der oben beschriebenen Punkte braucht man allerdings etwas vertiefte Kenntnisse über den Model Builder. Ein solches Tool zu erstellen braucht ein wenig Zeit und lohnt sich nur, wenn man den Analyse Prozess oft durchführen muss, wenn man das Model an einen Kollegen weitergeben will oder auch wenn man einen Analyse Workflow dokumentieren will.

Damit das nachbauen von solchen Tools einfacher wird, habe ich eine File Geodatabase hochgeladen mit ein paar Stopps, der Attribut Tabelle mit den Restriktionen und ein paar Modellen. Bei den Modellen müssen evtl. noch Pfade geändert werden, weil die Ergebnisse teilweise noch auf absolute Pfade auf meinem Rechner zeigen.

Hier zu finden: http://bit.ly/1v9mxIP

About the Author
- studied survey in Munich (TU) - engaged with GIS since 2000 - working for Esri Germany since 2003