Skip navigation
All Places > GeoDev Germany > Blog > 2018 > April
2018

Mit AppStudio for ArcGIS können mithilfe von Templates native Apps für alle gängigen Plattformen erstellt werden. Die Power von ArcGIS Runtime wird dafür voll genutzt. Nun ist eine neue Version mit einigen Neuerungen verfügbar:

 

Highlights sind:

 

  • Unterstützung hochgenauer GPS/GNSS Empfänger
  • Änderungen/Verbesserungen der Esri Templates (z.B. kann die Map Tour komplett offline genommen werden)
  • ArcGIS Runtime wurde auf Version 100.2.1 hochgezogen
  • AppStudio Player wurde verbessert
  • mehr..

 

 

Ausführliche Informationen zu den Neuerungen von AppStudio for ArcGIS Version 3 findet Ihr in diesem News Blog von Esri Inc. und in der AppStudio GeoNet Gruppe.

Es geht Schlag auf Schlag. Erst Anfang März wurde die ArcGIS API for Python 1.4 released, nun gibt es schon wieder ein neues Update. Und das ist nicht klein. Neben Bugfixing wurden viele neue Funktionen hinzugefügt und bestehende verbessert.

 

Python Notebook

Python Notebook

 

Hier einige Highlights:

 

Workflows

 

Datenmanagement

  • Verbesserung des Attachment Managers (Filtern von Attachments, kann mit großen Dateien umgehen)
  • clone_items() Funktion wurde überarbeitet und ist jetzt performanter
  • GroupManager wurde um neue Funktionen erweitert

 

Analsyen

 

Verwaltung von AGOL und ArcGIS Enterprise

  • Funktionen zur Überwachung von Anmeldungen/Anmeldeinformationen

 

Samples

  • Python Samples wurden aktualisiert und es wurden neue hinzugefügt

 

 

Ausführliche Informationen zu allen Neuerungen der ArcGIS API for Python 1.4.1 findet Ihr in diesem News Blog von Esri Inc. und in den Release Notes auf dem ArcGIS Developer Portal.

Ab sofort stehen allen Entwicklern die neuen Versionen der ArcGIS API for JavaScript zur Verfügung. In den Updates der Version 4.7 sowie 3.24 sind neue Features wie z.B. die Unterstützung von 3D Inhalten auf mobilen Geräten, das Rendering von Kanten in 3D, eine neue clientseitige Projection Engine und viele Updates bei vorhandenen Widgets

enthalten. Außerdem wurde in der Version 3.24 das Drucken noch einmal verbessert.

 

Wichtig: bei der Unterstützung von ES Promises gab es einige Breaking Changes. Mehr dazu in der Dokumentation, siehe unten.

 

 

Alle Neuerungen werden in diesem Blog-Post detailliert vorgestellt:

ArcGIS API for JavaScript versions 4.7 and 3.24 released 

 

Mehr dazu zeigen auch die neusten Beispielcodes:

3.24 Latest Samples

4.7 Latest Samples

 

und die Release Notes:

3.24 Release Notes

4.7 Release Notes

 

Zu den Unterschieden zwischen den beiden Versionen 3.24 und 4.7 und dazu, welche Version in welchem Anwendungsfall zu bevorzugen ist, gibt die aktualisierte FAQ einige gute Hinweise: 
ArcGIS API for JavaScript FAQ

 

Happy coding!

ArcGIS ist eine leistungsfähige Plattform für das Entwickeln von Geolösungen. Doch oft fällt der Anfang nicht leicht. Wir haben Euch zugehört und konsequent das ArcGIS Developer Portal unter https://developers.arcgis.com für Euch verbessert. Im Folgenden möchte ich auf einige der Verbesserungen eingehen:

 

Verbesserte Startseite

Zunächst einmal haben wir die Startseite selbst übersichtlicher und vor allem selbsterklärender gemacht. Einsteiger finden hier zunächst eine Übersicht wesentlicher Funktionalitäten wie bspw. Geocoding, Data Visualization oder Spatial Analysis.

 

 

Ein Klick auf eines der Kernfunktionalitäten bringt Euch auf eine Detailseite, auf der ihr Euch weiter einlesen könnt. So werden bspw. die verschiedenen Spielarten von Geocoding erläutert und anhand von Live Samples (JavaScript, eh klar) verdeutlicht.

 

Erfahrene Entwickler profitieren ebenfalls von der verbesserten Startseite, indem sie gleich oben auf per Shortcut zur Programmiersprache ihrer Wahl gelangen:

 

GeoDev Labs

Habt Ihr Euch einen Überblick verschafft und wollt mit der konkreten Arbeit loslegen? Dann schaut unbedingt bei unseren GeoDev Labs vorbei. Hierbei handelt es sich um kurze Übungen, die Euch durch die verschiedenen Aspekte des Entwickelns mit ArcGIS führen. So gibt es bspw. Labs zum Importieren von Daten, Komponieren von Webkarten, Geosuche uvm. Die Labs können auf der linken Seite einfach nach Thema und Zielplattform gefiltert werden.

 

Jedes Lab dauert zwischen 5 und 15 Minuten und führt Euch durch die jeweilige Aufgabenstellung. Nach einem Überblick erhaltet Ihr Schritt-für-Schritt Anleitungen. Auf GitHub findet Ihr den zugehörigen Source Code sowie Testdaten. Außerdem könnt Ihr Live Demos des Ergebnisses anschauen.

 

 

Esri baut die Labs kontinuierlich aus, schon heute gibt es bereits über 100 Labs.

 

Example Apps

Wollt Ihr Euch lieber fertige Apps anschauen, um das ein oder andere abzukupfern? Auch kein Problem! Hier stellen wir euch eine Reihe von Beispielanwendungen bereit. Wie bei den GeoDev Labs erhaltet Ihr umfangreiche Infos und könnt Euch den Source Code herunterladen.

 

Success Stories

Schließlich könnt Ihr Euch auch einfach von "echten" Anwendungen aus der Praxis inspirieren lassen. Schaut hierzu bei den Success Stories vorbei. Diese lassen sich nach Branche filtern. Hier mit Fast@Home mal ein schönes deutsches Beispiel aus der Branche Telekommunkation:

 

 

 

 

 

Wir arbeiten natürlich weiterhin daran, Euch beim Entwickeln mit ArcGIS zu unterstützen. Freut Euch auf weitere Verbesserungen im Laufe des Jahres. Und solltet Ihr einen Verbesserungsvorschlag für uns haben, dann hören wir es natürlich gerne!

Mit ArcGIS Runtime können native Apps für alle gängigen Plattformen erstellt werden. Native Apps sind besonders geeignet für mobile Szenarien für den Außendienst. Da im Feld eine stabile Internetverbindung oftmals nicht garantiert ist, sollten die Maps inklusive aller zugehörigen Daten lokal auf dem Gerät gespeichert sein. Es gibt bisher schon mehrere Möglichkeiten, dies mit ArcGIS Runtime zu tun:

 


Diese Möglichkeiten werden auch in ArcGIS Apps wie Collector, Navigator oder Explorer genutzt. Seit der ArcGIS Runtime Version 100.2 gibt es nun zusätzlich noch den Preplanned Workflow für die durchgängige und automatisierbare Planung von mobilen offline Szenarien.

 

Der Preplanned Workflow


In einem üblichen Außendienstszenario haben mehrere Außendienstmitarbeiter den gleichen Auftrag, aber in verschiedenen Arbeitsgebieten. Ein Beispiel ist die Inspektion von Straßen in einer Stadt, in der verschiedene Mitarbeiter in unterschiedlichen Stadtgebieten unterwegs sind. Ein Mitarbeiter benötigt in der Regel nur die mobilen Daten von seinem Gebiet und nicht die Daten der kompletten Map. Oftmals darf er auch nur die Daten seines eigenen Gebietes sehen.

 

 

Der Preplanned Workflow ist genau für solche Szenarien konzipiert. Er besteht im Wesentlichen aus zwei Teilen – die Planung von Arbeitsgebieten im Büro und die Nutzung der „Teil-Maps“ in ArcGIS Runtime Apps im Außendienst.

 

 

Planung von Arbeitsgebieten im Büro

Voraussetzung ist eine offlinefähige WebMap. Von dieser WebMap wird die Portal Item ID benötigt (die Zeichenfolge in der URL).

 


Dann werden die relevanten Arbeitsgebiete (MapAreas) in der WebMap definiert. Der einfachste Weg ist Bookmarks zu erstellen. Es können aber auch Extents der Gebiete ermittelt und im JSON Format genutzt werden, z.B. so:

 

{
  "xmin": -13184700,
  "ymin": 3988556,
  "xmax": -13004945,
  "ymax": 4061479,
  "spatialReference": {
       "wkid": 102100
}}

 

Mithilfe des neuen Offline Packaging Geoprocessing Service für den Preplanned Workflow können dann folgende Tasks erledigt werden:

 


Für eine WebMap können bis zu 16 MapAreas erstellt werden. Die mobilen Daten der jeweiligen MapAreas werden direkt im offline nutzbaren Format im Portal gespeichert:

 

  • Features als SQLite Datenbank
  • Vector Tile Layer als Vector Tile Packages (.vtpk)
  • Rasterdaten als Tile Packages (.tpk)

 

Die mobilen Daten haben eine Referenz zu der zugehörigen MapArea. Und alle MapAreas haben eine Referenz zu der zugehörigen WebMap. Das bedeutet: wird eine MapArea gelöscht, werden auch die zugehörigen mobilen Daten im Portal gelöscht. Und wird die WebMap gelöscht, sind alle MapAreas plus mobile Daten auch weg.

MapAreas und zugehörige mobile Daten werden nicht in der Standard-Oberfläche des Portals angezeigt. Im Catalog in ArcGIS Pro können diese Items angezeigt oder gelöscht werden. Eine weitere Möglichkeit ist mit dem AGOL Assistant.

 

Wie wird es in der Praxis umgesetzt?

Geoprocessing Services können in Web Apps mit der ArcGIS API for JavaScript und in nativen Apps mit ArcGIS Runtime genutzt werden. Mit beiden wäre es z.B. möglich, Konfigurator-Apps für Planer im Büro zu erstellen. Eine weitere Option ist die Nutzung des Offline Packaging Geoprocessing Service direkt in ArcGIS Desktop. Mein persönlicher Favorit ist allerdings die Implementierung mit der ArcGIS API for Python und dem OfflineMapAreaManager. Mit diesen paar Zeilen Python Code werden MapAreas von allen Bookmarks einer WebMap erzeugt und auch gleich die zugehörigen mobilen Daten generiert:

 

# Import modules
from arcgis.gis import GIS
from arcgis.mapping import WebMap
from getpass import getpass

# Setup the organization and user information
password=getpass()
gis = GIS('https://www.arcgis.com', 'my named user', password)

# get the webmap from the portal item id
offline_map_item = gis.content.get("my webmap id")
offline_webmap = WebMap(offline_map_item)

# Loop through the webmap's bookmarks and create a map area for each one bookmark
for bookmark in offline_webmap.definition.bookmarks:
    bookmark_name = bookmark.name
    item_prop = {'title': offline_map_item.title + '_' + bookmark_name + '_MapArea',
            'snippet': 'my snippet',
            'description': 'my description',
            'tags': ['python api', 'MapArea', 'my tag']}
    offline_area = offline_webmap.offline_areas.create(area=bookmark_name, folder='my portal content folder', item_properties=item_prop)  

 

Für einen schnellen Test kann das Python Notebook im Anhang dieses Blogs auf notebooks.esri.com genutzt werden (Upload).

 

Nutzen von MapAreas in ArcGIS Runtime Apps im Außendienst

Die MapAreas einer WebMap und die zugehörigen mobilen Daten sind nun im Portal erstellt worden. Jetzt müssen sie nur noch mit ArcGIS Runtime heruntergeladen und genutzt werden. Die Preplanned Workflow Funktionen in den SDKs sind erst ab ArcGIS Runtime Version 100.2 verfügbar. Hier sind die groben Schritte für die Implementierung am Beispiel des .NET SDKs:

 

1. Laden der WebMap

var portal = await ArcGISPortal.CreateAsync();
var webmapItem = await PortalItem.CreateAsync(portal, "WebMap Portal ID");
var myMap = new Map(webmapItem);

 

2. Abfragen der MapAreas einer WebMap

var offlineMapTask = await OfflineMapTask.CreateAsync(myMap);
var preplannedMapAreas = await offlineMapTask.GetPreplannedMapAreasAsync();

 

3. Download der Infos und Daten einer MapArea als exploded Mobile Map Package

var myArea = preplannedMapAreas.FirstOrDefault();

var downloadJob = offlineMapTask.DownloadPreplannedOfflineMap(myArea, "Speicherpfad");
var results = await downloadJob.GetResultAsync();

 

4. Laden und Anzeigen der lokal gespeicherten MapArea in der Map

var offlineMapArea = await MobileMapPackage.OpenAsync("Speicherpfad");
myMap = offlineMapArea.Maps[0];

 

Synchronisierung von Edits mit dem Feature Service

Für die Synchronisierung von Feature Edits in beide Richtungen wird die lokale SQLite Geodatabase automatisch durch den OfflineMapTask beim Feature Service  registriert. Darum muss sich der Entwickler nicht kümmern. So wird synchronisiert:

 

var editLayer = (FeatureLayer)myMap.OperationalLayers[0];
var featureTable = (GeodatabaseFeatureTable)editLayer.FeatureTable;

var syncTask = await GeodatabaseSyncTask.CreateAsync(featureTable.Geodatabase.Source);

// sync geodatabase
var taskParameters = await syncTask.CreateDefaultSyncGeodatabaseParametersAsync(featureTable.Geodatabase);

var syncJob = syncTask.SyncGeodatabase(taskParameters, featureTable.Geodatabase);
var result = await syncJob.GetResultAsync();

 

Bevor eine Geodatabase auf dem Gerät gelöscht werden soll, muss sie vorher beim Feature Service auch wieder deregistriert werden (sonst wird er irgendwann mit Unmengen Replicas zugemüllt). Weiterführende Informationen dazu stehen in der Dokumentation. So kann es umgesetzt werden:

var editLayer = (FeatureLayer)myMap.OperationalLayers[0];
var featureTable = (GeodatabaseFeatureTable)editLayer.FeatureTable;

var syncTask = await GeodatabaseSyncTask.CreateAsync(featureTable.Geodatabase.Source);

// unregister geodatabase
await syncTask.UnregisterGeodatabaseAsync(featureTable.Geodatabase);

// delete geodatabase

 

Abschließende Worte

Mit dem Preplanned Workflow wurde das Thema mobile offline Szenarien in ArcGIS zu Ende gedacht. Das Ganze ist jetzt eine runde Sache, hat aber noch an der einen oder anderen Stelle Optimierungspotential, z.B. wären Shapes als MapAreas nützlicher statt nur rechteckiger Flächen (welches Arbeitsgebiet ist schon exakt rechteckig). Wir werden noch Verbesserungen sehen und insgesamt ist er schon sehr hilfreich. Den Preplanned Workflow werden wir demnächst auch in einigen ArcGIS Apps (Collector, Explorer) wiederfinden. Momentan ist er nur in ArcGIS Online verfügbar, in ArcGIS Enterprise wird er in einer späteren Version implementiert.

 

 

 

P.s.: Die Abschnitte zum Erzeugen von MapAreas mit der Python API (Im Anhang ist ein neues Python Notebook) und Synchronisieren von Feature Edits wurden leicht überarbeitet. Vielen Dank an Antti Kajanus vom ArcGIS Runtime Team für den Tipp mit der smarten Python API  Implementierung und seine Korrektur von Register/Unregister von Geodatenbanken. 

Filter Blog

By date: By tag: