a.erbeesri-de-esridist

ArcGIS Runtime 100.1 – Karten vollständig offline nehmen

Blog Post created by a.erbeesri-de-esridist Employee on Oct 12, 2017

ArcGIS Runtime ist eine Familie aus nativen SDKs zur Entwicklung von Geo-Apps für alle populären Mobile und Desktop Plattformen. Mit allen ArcGIS Runtime SDKs lassen sich Apps erstellen, die auch bei eingeschränkter oder fehlender Netzwerkverbindung den Zugang zu Karten und Daten und deren weitere Verwendung ermöglichen. Zusätzlich können Vektordaten auf das Gerät heruntergeladen, offline bearbeitet und später problemlos mit der Datenbank synchronisiert werden, sobald eine Internetverbindung besteht.

 

Für die Offline-Bereitstellung von unterschiedlichen Datentypen gibt es mehrere Möglichkeiten und Workflows, die in ArcGIS Runtime problemlos kombiniert werden können. Dabei ist zu beachten, dass die SDKs für Desktops (.NET/WPF, Java, Qt) mit der Local Server Technologie mit einigen Daten umgehen können, die in den anderen SDKs nicht möglich sind.

 

Grundsätzlich können wir drei Optionen unterscheiden:

  1. Prozessieren von Daten in ArcGIS Desktop in Form von ArcGIS Runtime Content oder verschiedene Arten von Packages und anschließende Bereitstellung per Side-Loading oder File-Download.
  2. Einbinden von „Originaldaten“ so wie sie sind, z.B. GeoTiff’s, KML, Shapes usw.
  3. Export der Daten von Services mit ArcGIS Runtime selbst, zur Laufzeit der App, so z.B. in Collector for ArcGIS (basiert auf ArcGIS Runtime Technologie)

 

Natürlich können die Karten vom Entwickler clientseitig Layer für Layer zusammengepuzzelt werden. Das bedeutet einen gewissen Mehraufwand. Um tatsächlich eine komplette Karte mit allen Daten in einem Rutsch offline zu nehmen und zu nutzen gab es bis zur Version 100.0 der ArcGIS Runtime nur zwei Möglichkeiten – als vorprozessiertes Mobile Map Package (.mmpk) und als Map Package (.mpk) in Kombination mit dem Local Server. Beide zählen zu Option 1 in der Aufzählung weiter oben. Mit ArcGIS Runtime Version 100.1 gibt es nun mit dem neuen OfflineMapTask die Möglichkeit, eine vollständigen Karte in der App zur Laufzeit zu exportieren (Option 3).

 

Der neue OfflineMapTask in ArcGIS Runtime v100.1

 

Voraussetzung für den OfflineMapTask ist eine WebMap, welche für die Offline-Verwendung konfiguriert wurde. Eine WebMap ist eine Beschreibung der Karte in Textformat (JSON) mit Informationen zu Datenquellen, Symbologie und Dingen wie Initial Extent, Design von PopUps u.s.w. Sämtliche ArcGIS Apps und Entwicklerwerkzeuge können WebMaps lesen und die Karte dementsprechend aufbauen. Sie sind somit das ganze Geheimnis, warum Karten durchgängig identisch aussehen egal welche ArcGIS Clients genutzt werden. WebMaps werden als Portal Items in ArcGIS Online oder ArcGIS Enterprise gespeichert und sie haben eine ID. Genau diese ID wird auch für den OfflineMapTask benötigt, um die Karte in ArcGIS Runtime offline zu nehmen.

 

 

Die Schritt für Schritt Implementierung eines OfflineMapTasks steht in der jeweiligen Dokumentation der verschiedenen ArcGIS Runtime SDks beschrieben, hier zum Beispiel für .NET. Zusätzlich gibt es Samples auf GitHub um es auszuprobieren, hier z.B. auch für .NET. Deshalb ist es nicht notwendig die Vorgehensweise in diesem Blog nochmal aufzuschlüsseln.

 

Interessant wiederum ist das Format, in welchem die Karte durch den OfflineMapTask auf dem Gerät abgelegt wird:

 

 

 

In der Doku steht, dass die Daten als Mobile Map Package lokal gespeichert werden. Ein Mobile Map Package, wie wir es bisher kennen, ist eine gepackte Datei mit der Endung .mmpk. Dies hatte ich eigentlich nach dem ersten Test auch erwartet.

 

Es wird aber ein Ordner mit .mmpk (Mobile Map Package) in der Bezeichnung angelegt, siehe Bild. Die Struktur darunter ähnelt stark der Struktur eines entpackten MMPKs (alle Packages sind gezippt). Unter diesem Ordner wiederum befindet sich die Beschreibung/Konfiguration der Karte (mobile_map.mmap), eine SQLite Datenbank (.geodatabase) mit den Vektordaten und auch Tile Packages (.tpk) der Basemaps. Zur Erinnerung, in den bestehenden, gepackten MMPK-Format sind Tile Packages bisher nicht erlaubt.

 

Zudem kann der entstandene Mobile Map Package - Ordner nur noch in ArcGIS Runtime verwendet werden (via MobileMapPackage-Klasse) und nicht wie die gezippten MMPKs auch in ArcGIS Desktop.

 

Ich persönlich vermute, dass wir es hier schon mit einer Weiterentwicklung zu tun haben, die auch auf der Developer Summit in Palm Springs in diversen Roadmaps erwähnt wurde: Mobile Map Packages sollen letztendlich lokal in ArcGIS Runtime verwaltet werden können, sämtlichen Inhalt des ArcGIS Runtime Contents enthalten können, Editierung von Vektordaten innerhalb des Packages ermöglichen und als Austauschformat zwischen ArcGIS Runtime und ArcGIS Desktop nutzbar sein. Genau der richtige Weg würde ich sagen.

Outcomes