Skip navigation
All Places > GeoDev Germany > Blog > Author: a.erbeesri-de-esridist

Dezember 2017 wurde das Major Release ArcGIS Runtime 100.2 veröffentlicht. Die nun veröffentlichte Version 100.2.1 ist ein darauf aufbauendes fokussiertes Release, in dem einige kritische Bugs gefixt und kleinere Verbesserungen an bestehenden Funktionen vorgenommen wurden. So zum Beispiel:

 

  • Verbesserungen mit WMS Services
  • Mobile Map Packages, erzeugt mit ArcGIS Pro 2.1, können nun auch Raster-Basemaps (.tpk) beinhalten und in ArcGIS Runtime 100.2.1 genutzt werden
  • 3D Scenes unterstützen nun Raster Layer & Basemaps in WGS84

 

Ausführliche Informationen zu allen Neuerungen in ArcGIS Runtime 100.2.1 findet Ihr in diesem News Blog von Esri Inc. und auf ArcGIS for Developers.

 

 

Maps bestehen in der Regel aus Basemap Layers zur Orientierung und Operational Layers für das Visualisieren, Abfragen, Bearbeiten und Analysieren von Geo-Informationen. In ArcGIS werden zwei Typen von Basemaps unterschieden: Raster Tile Services (gecachte Map Services und Image Services) und die noch recht jungen Vector Tile Services.

 

      Link zur Live Map

 

Für die Offline-Nutzung von Basemaps in ArcGIS Runtime können schon seit langer Zeit Tile Packages (.tpk) direkt aus Raster Tile Services exportiert werden. Brandneu ist nun die Möglichkeit, Bereiche von Vector Tile Services zu exportieren und lokal als Vector Tile Packages (.vtpk) nutzen zu können:

 

Vector Tile Services für den Export


Der große Vorteil von Vector Tile Services ist das clientseitige dynamische Rendering von Tiles. Somit ist die Basemap in jedem Maßstab der Map und bei jeder Auflösung des Displays immer gestochen scharf. Weiterhin werden die Daten und der Style der Basemap getrennt behandelt. Das ermöglicht dynamisches Anzeigen von Labels und das Erstellen von Basemaps mit unterschiedlichen Themen basierend auf immer denselben Datensatz. Und letztendlich werden Vektoren übertragen, also keine Bilder wie bei Raster Tile Services. Das sorgt für hohe Performanz und deutlich kleinere Datenmengen.

In ArcGIS Online werden schon eine Reihe von exportierbaren Vector Tile Basemaps bereitgestellt. Die hier verlinkten Services basieren alle auf denselben World Basemap Daten, aber immer jeweils mit anderem Style. Falls mehrere dieser Basemaps offline genutzt werden sollen, muss nur von einem der Services das vtpk (Daten + „Root Style“) und von allen Services jeweils nur der Style exportiert werden. Dazu später mehr.

Es können auch eigene Vector Tile Services auf ArcGIS Online erstellt und für den Export freigeschaltet werden. Dazu wird in den allgemeinen Einstellungen des Vector Tile Service Portal Items in der Registerkarte Einstellungen der Offline-Modus aktiviert:

 

 

Wie eigene Vector Tile Services erzeugt und dafür verschiedene Styles erstellt werden können, wird in diesen zwei Esri UK - Blogs sehr gut beschrieben:

 

 

Export von Vector Tile Packages und Styles in ArcGIS Runtime

Für den Export von Vector Tile Services und Styles werden die PortalItem IDs der Services, eine Identität (Named User oder ArcGIS Online Developer Account) und mindestens die ArcGIS Runtime Version 100.2 benötigt. Hier ist die exemplarische Vorgehensweise anhand des ArcGIS Runtime SDK for .NET:

 

      Online Map mit dem zu exportierenden Gebiet (AreaOfInterest im ExportVectorTilesParameters)

 

1. Authentifizieren

Der anonyme Export ist nicht erlaubt, es ist eine Authentifizierung erforderlich. Dafür gibt es mehrere Möglichkeiten, z.B in diesem Sample.

 

2. Vector Tile Service PortalItem erzeugen

Wir nutzen in unserem Code-Beispiel die World Topographic Map (for Export). Hiervon wird die Portal ID benötigt.

 

var portal = await ArcGISPortal.CreateAsync();
var portalItem = await PortalItem.CreateAsync(portal,"df541726b3df4c0caf99255bb1be4c86");

 

TIP:

 

Es ist leider nicht möglich, von einem Vector Tile Service equivalente Services mit anderen Styles abzufragen. Um das trotzdem zu automatisieren kann in ArcGIS Runtime nach PortalItems-Typen und Tags gesucht werden.

 

Z.B ist in den hier beschriebenen ArcGIS Online Basemaps der spezifischer Tag "World_Basemap_Export_v2".

 

Bei eigenen Services muss dementsprechend ein eigener spezifischer Tag gewählt werden.

 

So wird gesucht:

var queryExpression = string.Format("tags:\"{0}\"type: \"Vector Tile Service\"", "World_Basemap_Export_v2");

PortalQueryParameters queryParams = new PortalQueryParameters(queryExpression, 100);

// Search the portal using the query parameters and await the results
PortalQueryResultSet<PortalItem> findResult = await portal.FindItemsAsync(queryParams);

// Get the items from the query results
var tileServicePortalItems = findResult.Results;

 

3. Task, Parameter und Job erzeugen und ausführen

Im folgenden Code werden nur die Daten (.vtpk) und nicht der Style exportiert.

// Create the task
var exportTask = await ExportVectorTilesTask.CreateAsync(portalItem);

// Create a new parameters instance
var parameters = new ExportVectorTilesParameters()
{
    AreaOfInterest = exportArea.Geometry,    //area to export
    MaxLevel = exportTask.VectorTileSourceInfo.LevelsOfDetail.Count - 1  //levels to export
};

// Create the export job
var job = exportTask.ExportVectorTiles(parameters, Path.Combine(_vectorTileCachePath, "name.vtpk"));

// Subscribe to notifications for status updates
job.JobChanged += (sender, e) =>
{

   if (job.Status == Esri.ArcGISRuntime.Tasks.JobStatus.Succeeded)
   {
      //do something
   }
   else if (job.Status == Esri.ArcGISRuntime.Tasks.JobStatus.Failed)
   {
      // Notify the user
      ShowStatusMessage(job.Error.Message);
   }
};

// Start the export job
job.Start();

 

Es kann auch das vtpk und der Style (falls vorhanden) in einem Rutsch exportiert werden . Dazu muss dem ExportVectorTilesJob nur zusätzlich der Speicherpfad für einen Ordner für den Style mitgegeben werden.

ExportVectorTilesJob job;
if (exportTask.HasStyleResources)
{
   job = exportTask.ExportVectorTiles(parameters, Path.Combine(_vectorTileCachePath, "name.vtpk"), _styleResourcePath);
}
else
{
   job = exportTask.ExportVectorTiles(parameters, Path.Combine(_vectorTileCachePath, "name.vtpk"));
}

 

Und wenn nur der Style exportiert werden soll sieht es so aus:

var exportTask = await ExportVectorTilesTask.CreateAsync(portalItem);
if (exportTask.HasStyleResources)
{
   var exportStyleJob = exportTask.ExportStyleResourceCache(_styleResourcePath);
   var result = await exportStyleJob.GetResultAsync();
   //do something
}

 

Wenn zum Beispiel alle die weiter oben beschriebenen exportierbaren ArcGIS Online Vector Tile Services lokal als Basemaps verfügbar sein sollen, muss von einem Service das vtpk und von allen Services nur die Styles exportiert werden. In einem StyleResource Ordner befinden sich nur JSON-Dateien mit der Beschreibung des Styles, diese sind sehr klein.

 

Nutzen von lokalen Vector Tile Packages und Styles in ArcGIS Runtime

Das lokale vtpk und ein vorhandener Style können dann so in die Map eingebunden werden:

 

//Load a style
var itemResourceCache = new ItemResourceCache(_styleResourcePath);

//Load the vtpk
var offlineVectorTileCache = new VectorTileCache(Path.Combine(_vectorTileCachePath, "name.vtpk"));

// Create a tile layer with the cache and the style
var layer = new ArcGISVectorTiledLayer(offlineVectorTileCache, itemResourceCache);

// Create a tile layer only with the cache
//var layer = new ArcGISVectorTiledLayer(offlineVectorTileCache);

// Create a new map with the layer as basemap
var map = new Map(new Basemap(layer));

// Apply the map to the mapview
MyMapView.Map = map;

 

Wenn der Entwickler alles beschriebene schön kombiniert, können so in der ArcGIS Runtime App lokal mehrer Basemaps auf Basis von nur einem vtpk genutzt werden. Um den Speicherplatz der Daten auf dem Gerät muss sich meistens auch keine Sorgen mehr gemacht werden. In einem Test mit dem Gebiet grob Bayern in der gesamten Detailtiefe ist die Größe des vtpks + Styles nur ca.230 MB groß und der Export hat knapp 7 min gedauert. Wichtig ist noch die Information, dass es eine maximale Begrenzung ("maxExportTilesCount":10000) für einen Export gibt.

 

     Offline Vector Tile Basemap ohne extra Style (nur das .vtpk geladen)

 

       Offline Vector Tile Basemap mit Style

 

      Offline Vector Tile Basemap mit Style

 

      Offline Vector Tile Basemap mit Style

 

      Offline Vector Tile Basemap mit Style

Web AppBuilder for ArcGIS ist eine intuitive „what-you-see-is-what-you-get“ Anwendung zum Erstellen fokussierter ArcGIS Web-Apps in ArcGIS Online und ArcGIS Enterprise. Die Web AppBuilder Developer Edition bietet zusätzlich ein Framework zum Erstellen eigener Widgets und Themes oder zum Anpassen von schon bestehenden.

 

Die neue Version 2.7 der Web AppBuilder for ArcGIS Developer Edition hat nun den gleichen funktionalen Stand wie der eingebettete Web AppBuilder in ArcGIS Online nach dem Dezember Release. Darüber hinaus wurde die Dokumentation um nützliche Infos erweitert, so können zum Beispiel nun die Beziehungen der verschiedenen Web AppBuilder Versionen zueinander (sie haben nicht immer den gleichen Stand) und die Version der genutzten ArcGIS API for JavaScript nachgelesen werden.

 

Vollständige Informationen stehen in diesem Esri Inc. Blogeintrag.

 

 

      Neu: Public Notification Widget zum Erstellen von Mailing Labels

Als Weihnachtsüberraschung zum Ende des Jahres 2017 wurde das neue Major Release 100.2 von ArcGIS Runtime veröffentlicht. Ziel dieses wichtigen Releases ist das Verringern die funktionalen Lücken zu den ArcGIS Runtime 10.2.x Versionen und auch zu ArcGIS Engine. Neben Bugfixes und Verbesserungen im 2D und 3D Rendering wurden Datumstransformation, mobile Workflows und viele neue Funktionen implementiert.

 

Einige Highlights sind:


• Neuer WMS Layer für WMS 1.3 und ENC Layer für das S-57 Format



      ENC Layer

 

• Support für Shapefiles und OGC Geopackages
• Neue 3D Scene Analysis API für z.B. Viewshed und Line of Sight



      3D Scene - Viewshed

 

• Datumstransformation, auch benutzerdefinierte Transformationen



      Datumstransformation

 

• Exportieren von Vector Tile Packages aus Vector Tile Map Services gehostet in ArcGIS Online oder ArcGIS Enterprise
• Verbessertes Editieren
• Preplanned Workflow für mobile Szenarien
• Time-aware Layers



      Time-aware Layer

 

  • uvm.

 

Ausführliche Informationen zu allen Neuerungen in ArcGIS Runtime 100.2  findet Ihr in diesem News Blog von Esri Inc., auf ArcGIS for Developers in den What's News der SDK's und auf GeoNet in den entsprechenden Bereichen.

Im Juli 2017 wurde das Major Release 2.0 des AppStudio for ArcGIS in einem neuen Look & Feel und mit aktualisierten Werkzeugen, verbesserten App-Templates und neuen App-Template-Samples veröffentlicht. Nun ist die Version 2.1 mit weiteren Neuerungen und Verbesserungen verfügbar.

 

Neuigkeiten in AppStudio 2.1 (Auszug)

  • Unterstützt nun Universal Windows Platform (UWP)
  • Neues Community-Panel in AppStudio Desktop
  • Aktualisierte AppStudio-Templates
  • Neue AppFramework Plugins (Beta):
    • Biometrische Authentifizierung
    • Sichere Speicherung
    • Hochpräzise Positionierung
    • Interapp Communication (Text und URLs mit anderen Anwendungen austauschen)
  • AppStudio Player unterstützt biometrische Authentifizierung und integrierte Windows-Authentifizierung (IWA)
  • mehr...

 

      Neues Community-Panel in AppStudio Desktop

 

 

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

Web AppBuilder for ArcGIS ist eine sofort verwendbare Anwendung zum Erstellen fokussierter ArcGIS Web-Apps mithilfe von intuitiven Widgets und Werkzeugen. Mit Web AppBuilder for ArcGIS können eigene Apps auf ArcGIS Online oder dem eigenen Server gehostet und auf jedem Endgerät genutzt werden. Ebenso lassen sich konfigurierbare Web-App-Vorlagen für die Wiederverwendung und unternehmensweite Nutzung erstellen.

 

Die Funktionalität von Web AppBuilder for ArcGIS lässt sich durch benutzerdefinierte Widgets und Designs noch erweitern. Genau dafür benötigen Entwickler die Web AppBuilder for ArcGIS Developer Edition.

 

 

Die neue Version 2.6 der Web AppBuilder for ArcGIS Developer Edition hat nun den gleichen funktionalen Stand wie der eingebettete Web AppBuilder in ArcGIS Online nach dem September Release. Im SDK selber wurden außerdem einige neue, hilfreiche Klassen und Methoden hinzugefügt.

 

Vollständige Informationen dazu könnt Ihr in diesem Esri Inc. Blogeintrag nachlesen.

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.

The ArcGIS API for JavaScript helps you create web mapping apps that use the geospatial capabilities provided by the ArcGIS platform. For example, you can create apps that display maps in 2D and 3D, integrate with ready-to-use content and services, and more, all in modern browsers like Chrome, Edge, Firefox, Internet Explorer (11 or higher), and Safari (7.1 or higher).

 

The API supports HTML5 and CSS3 components, so you can develop apps that take advantage of modern browser capabilities to improve performance and flexibility. You can also use developer-friendly widgets, flexible UI placement tools, and pop-up windows to build apps that are responsive to any screen size.

 

The new Version 4.5 of the ArcGIS API for JavaScript adds some key capabilities and several smaller enhancements, e.g.:

  • Fast feature layers: Interact with more than a million features
  • Initial release of sketching tools
  • OGC enhancements - WMS and WMTS layers can now be visualized in a 3D scene

 

Fast feature layer rendered with WebGL (beta)

 

In the new version 3.22 of the ArcGIS API for JavaScript there are configurable point clustering as a highlight and some API updates.

 

You can explore the full release notes and more information in this Esri Blogpost.

On September 18th, the third GeoMonday of this year was held on the topic “artificial intelligence and geodata”. More than 30 good-humoured Geogeeks, well supplied with pizza and beer, listened to exciting lectures and discussed lively about them.

 

 

Did you miss this past GeoMonday? No problem, we have recorded all talks and took some pictures, see below. And don't worry, after GeoMonday is before GeoMonday. You can find all the details on meetup.com or here on GeoNet.

 

See you again soon!

Your GeoDev Germany & GeoMonday Team!

 

 

 

Michael Marz, Esri Deutschland:

How neural networks make GIS-supported crop production more efficient

High-tech has already arrived in agriculture. Modern agricultural machinery and geographic information systems make precision farming possible. An important aspect in crop production is the basic fertilization with nutrients and additives. The pH value can already be determined in a small scale and during the crossing of a tractor with specific sensors. For essential macronutrients like phosphorus, on-site soil sampling as well as complex and cost-intensive determination of the content in the laboratory are still necessary. Phosphorus content depends on chemical and physical soil conditions. If these conditions are known, the content of phosphorus can be estimated. This paper provides extracts from a research project on how neural networks help to estimate local phosphorous content for fertilization by learning those nonlinear multilateral relationships in the soil.

 

 

Martin Wilden and Matthias Stein, con terra:

Natural language understanding in web mapping applications

"Will speech soon do away with typing?" - This question has recently been raised by a large German newspaper. Lately, more and more speech assistants like Google Assistant, Amazon's Alexa, Mircosoft's Cortana or Apple's Siri are reaching the market and allowing users to control many parts of their life by voice input. This technology is called natural language understanding (NLU) and may also be used to control Web mapping technology. Imagine that you could say "show me all schools in Berlin" instead of using a selection tool to select those features.

 

 

 

Some impressions:

 

StreetMap Premium for ArcGIS Runtime bietet hochwertige, weltweite Straßendaten, die für die Verwendung bei der kartographischen Kartendarstellung, Geokodierung und dem Routing optimiert wurden. Diese Daten können in Apps eingebunden werden, die mit den ArcGIS Runtime SDKs ab Version 100.0 entwickelt wurden. Sie werden lokal auf dem Gerät des Nutzers gespeichert – dass ermöglicht die Nutzung unterwegs und ohne Internetverbindung. Die Daten werden in regelmäßigen Abständen aktualisiert, so dass sie stets auf dem neuesten Stand sind und somit der Fokus der Entwicklungsarbeit ausschließlich auf der Erstellung und Pflege der eigentlichen Apps liegt.

 

 

Folgende Vorteile bietet StreetMap Premium for ArcGIS Runtime:

 

  • Detaillierte Straßengrundkarte
    Die mit StreetMap Premium for ArcGIS Runtime bereitgestellten Daten wurden bereits aufbereitet und sind als sofort einsetzbare Straßengrundkarte verfügbar. Diese hochwertige Grundkarte bietet in den Apps den nötigen räumlichen Kontext.
  • Suchen und Geokodieren von Positionen
    StreetMap Premium for ArcGIS Runtime umfasst einen Locator-Task zur Geokodierung, der sich ganz einfach in Apps einbinden lässt. Mit diesem Locator können Nutzer nach spezifischen Adressen, Kreuzungen oder Points of Interest suchen und diese auf einer Karte darstellen.
  • Lösen von Routen-Problemen
    StreetMap Premium for ArcGIS Runtime bietet auch ein Netzwerk-Dataset für Verkehrsnetze für umfassende Routing-Analysefunktionen in ArcGIS Runtime-Apps. Diese Daten ermöglichen das Ermitteln der optimalen Routen zwischen verschiedenen Orten im Straßennetzwerk.
  • Offline-Verwendung von Straßendaten
    Die in StreetMap Premium for ArcGIS Runtime verfügbaren Daten sind auch dann verfügbar, wenn keine Verbindung zum Internet besteht. So können Nutzer auch im Außendienst oder Bereichen mit schlechter oder keiner Internetverbindung bequem auf die Grundkarten, Geokodierungsfunktionen und Routing-Funktionalität zugreifen. Ein weiterer Vorteil ist die reduzierte Datenmenge, die übertragen werden muss – dies spart Kosten.
  • Apps für den Einsatz in der ganzen Welt
    Die Daten und Karten von StreetMap Premium for ArcGIS Runtime sind für die ganze Welt verfügbar. Mobile Kartenpakete für unterschiedlichste Gebiete, z. B. Regionen oder Länder, lassen sich damit in Apps einbinden.

 

 

Download und Lizenzierung

ArcGIS Entwickler können mit StreetMap Premium for ArcGIS Runtime ab der kostenlosen ArcGIS Developer Subscription „Essentials“ entwickeln und testen. Die Daten können in Form von Mobile Map Packages (.mmpk) für unterschiedliche Länder und Regionen im Downloadbereich des ArcGIS Developers Portals heruntergeladen werden:

 

 

Für das Deployment der fertigen Apps muss StreetMap Premium for ArcGIS Runtime als Extension zu ArcGIS Runtime lizenziert werden.  Der oder die Lizenzschlüssel (lizenziert wird per Region) werden dazu auch im Code wie eine Extension implementiert. Mehr Informationen zur Vorgehensweise hier am Beispiel des ArcGIS Runtime SDK for .NET.

 

Implementierung

Das Implementieren und Nutzen von StreetMap Premium for ArcGIS Runtime ist intuitiv und in allen ArcGIS Runtime SDKs fast identisch:

 

Öffnen des Mobile Map Packages:

var mapPackage = await MobileMapPackage.OpenAsync(Path to mmpk);

 

Nutzen der fertigen Map(s):

var map = mapPackage.Maps[1];
Map = map;

 

Nutzen des Locator Tasks für Geocoding/Reverse Geocoding usw.:

await mapPackage.LocatorTask.LoadAsync();
var suggestions = await mapPackage.LocatorTask.SuggestAsync("Fechnerstrasse 8, Leipzig");

 

Nutzen des Transportation Networks für Routing:

var routeTask = await RouteTask.CreateAsync(map.TransportationNetworks[0]);

 

 

Mit dem ArcGIS Runtime SDK for .Net sieht es so aus (der Einfachheit halber alles in einer Methode):

private async void CreateMmpkMap()
{
    GraphicsOverlays[0].Graphics.Clear();
    try
    {
        var mapPackage = await MobileMapPackage.OpenAsync(_baseDirectory.LocalPath + @"geodata\Germany.mmpk");
        var map = mapPackage.Maps[1];

        // Locator, just a test
        await mapPackage.LocatorTask.LoadAsync();
        var suggestions = await mapPackage.LocatorTask.SuggestAsync("Fechnerstrasse 8, Leipzig");
        //do something with the suggestions

        await map.LoadAsync();

        //make sure the map loaded
        if (map.LoadStatus != LoadStatus.Loaded) return;

        // Routing
        var routeTask = await RouteTask.CreateAsync(map.TransportationNetworks[0]);

        // get the default route parameters
        var routeParams = await routeTask.CreateDefaultParametersAsync();
        // explicitly set values for some params
        routeParams.ReturnDirections = false;
        routeParams.ReturnRoutes = true;
        routeParams.OutputSpatialReference = map.SpatialReference;


        // create a Stop for my location
        var myLocation = new MapPoint(1375470.8306, 6685056.1967, map.SpatialReference);
        var stop1 = new Stop(myLocation);

        var markerSym = new SimpleMarkerSymbol
        {
            Style = SimpleMarkerSymbolStyle.Circle,
            Color = Colors.Red,
            Size = 12
        };
        var pointGraphic = new Graphic(myLocation, markerSym);
        _graphicsOverlays[0].Graphics.Add(pointGraphic);

        // create a Stop for your location
        var yourLocation = new MapPoint(1377231.148, 6687515.5736, map.SpatialReference);
        var stop2 = new Stop(yourLocation);

        pointGraphic = new Graphic(yourLocation, markerSym);
        _graphicsOverlays[0].Graphics.Add(pointGraphic);

        // assign the stops to the route parameters
        var stopPoints = new List<Stop> { stop1, stop2 };
        routeParams.SetStops(stopPoints);

        var routeResult = await routeTask.SolveRouteAsync(routeParams);

        // get the route from the results
        var route = routeResult.Routes[0];

        // create a graphic (with a dashed line symbol) to represent the route
        var routeSymbol = new SimpleLineSymbol(SimpleLineSymbolStyle.DashDotDot, Colors.Red, 5);
        var routeGraphic = new Graphic(route.RouteGeometry, routeSymbol);

        // add the route graphic to the map view and zoom to its extent
        _graphicsOverlays[0].Graphics.Add(routeGraphic);

        map.InitialViewpoint = new Viewpoint(route.RouteGeometry, 0);

        Map = map;

    }
    catch (Exception ex)
    {
        var text = ex.Message;
    }
}

 

Ergebnis

ArcGIS Runtime ist eine Familie aus nativen SDKs zur Entwicklung von Geo-Apps für alle populären Mobile und Desktop Plattformen. Für Desktops gibt es mit dem Runtime Local Server ein zusätzliches SDK zur Implementierung von erweiterter Geo-Funktionalität. Mit diesen wollen wir uns in dem Blog näher beschäftigen:

 

 

Was ist der ArcGIS Runtime Local Server?

Wie der Name schon andeutet ist der Runtime Local Server ein lokal auf dem Gerät laufender Web GIS Server. Dieser wird aber nicht installiert, sondern zur Laufzeit der ArcGIS Runtime Anwendung als Prozess erzeugt und verwaltet. Wird die Anwendung beendet, beendet sich damit auch der Local Server. Pro ausgeführte Anwendung kann nur ein Local Server gestartet werden (Singleton Pattern), es können aber mehrere Anwendungen mit jeweils eigenem Local Server nebeneinander laufen.

 

 

Die lokalen GIS Services für den Local Server werden auch zur Laufzeit erzeugt und verwaltet. Diese basieren auf lokalen Datenpaketen, welche zuvor mit ArcGIS Desktop erzeugt werden müssen. Genau wie in ArcGIS Online und ArcGIS Enterprise werden diese GIS Services über die ArcGIS Server REST API, also über URLs angesprochen. In ArcGIS Runtime ist es somit egal aus welcher Quelle ein GIS Service stammt, es können die gleichen Tasks und Layer auch dafür genutzt werden.

 

Der Schwerpunkt des Runtime Local Server liegt ganz klar auf dem lokalen Geoprocessing. Hunderte Analyse Tools aus der ArcToolbox, mächtige Model Builder Analyse Modelle und auch eigene Python Skripte in ArcGIS Desktop können zu Geoprocessing Packages gekapselt und diese durch lokale Geoprocessing Services genutzt werden. Das ist der Schlüssel für hochspezialisierten ArcGIS Runtime Anwendungen auch für GIS-Experten.

Es können noch weitere Typen lokaler Services erzeugt werden, dazu später mehr.

 

 

Unterstütze Plattformen 

Folgende ArcGIS Runtime SDKs unterstützen den Runtime Local Server:

ArcGIS Runtime SDK for

Local Server Unterstützung für:

Anmerkungen

.NET

·         Windows (32/64 Bit)

Es wird nur die WPF API unterstützt.

Java

·         Windows (32/64 Bit)

·         Linux (64 Bit)

MacOS wird nicht unterstützt.

Qt

·         Windows (32/64 Bit)

·         Linux (64 Bit)

Es wird nur die Qt/C++ API unterstützt.

 

Weitere mögliche Zielplattformen der SDKs in der Tabelle und auch die ArcGIS Runtime SDKs for Android, iOS und macOS werden nicht unterstützt. Dies lässt sich auch nicht mit Cross-Platform Technologie (z.B. Xamarin oder QML API) umgehen.

 

 

Download und Lizensierung

ArcGIS Entwickler können mit dem Local Server ab der kostenlosen ArcGIS Developer Subscription „Essentials“ entwickeln und testen. Das ArcGIS Runtime Local Server SDK gibt es für Windows und Linux und wird im Downloadbereich des ArcGIS Developers Portals heruntergeladen.

 

 

Die Lizenzstufe einer fertigen Anwendung mit Runtime Local Server Technologie hängt von der implementierten Funktionalität ab. Die Mindeststufe ist dabei ArcGIS Runtime License Level Standard. Für manche Funktionen wird zusätzlich noch die Analysis Extension benötigt. Für Geoprocessing Tools werden die benötigten Lizenzstufenstufen hier aufgeschlüsselt.

 

 

Datenquellen und Funktionalität 

Map- und Geoprocessing Packages können im Moment nur in ArcMap erzeugt werden. Dabei ist folgendes zu beachten:

 

 

Folgendes ist möglich (Auszug):

Quelle

Lokaler Service

Funktionen (Auszug)

Map package (.mpk)

MapService/

FeatureService

  • Dynamische Daten
  • Rasterdaten
  • Features & Tabellen
  • Abfragen, Editierung
  • Dynamic Layers (Hier grundlegende Infos des Konzeptes)
  • Zugriff auf (ArcSDE) Datenbanken
  • uvm

Geoprocessing Package (.gpk)

Geoprocessing Service

https://developers.arcgis.com/net/latest/wpf/guide/local-server-geoprocessing-tools-support.htm

 

 

Implementierung

In der Dokumentation der ArcGIS Runtime SDKs for .NET/WPF, Java und Qt/C++ steht die Implementierung des ArcGIS Runtime Local Server ausführlich beschrieben. Hier die Kurzfassung:

 

  1. Download und Installation
  2. Erstellen eines Local Server Deployments für das Projekt (Welche Funktionalität soll genutzt werden!)
    1. Local Server Deployment Builder tool (Java und Qt)
    2. Deployment manifest file im Visual Studio Projekt (.NET)
  3. Im Code:
    1. Starten des Runtime Local Server
    2. Erzeugen und Starten von lokalen Services auf Basis von Packages
    3. Nutzen der lokalen Services in den entsprechenden ArcGIS Runtime Tasks und Layer

 

Mit dem ArcGIS Runtime SDK for .Net am Beispiel eines einfachen Buffer Tools (Download) sieht es so aus:

 

(a) Starten des Runtime Local Server

private LocalServer _localServer;
private LocalGeoprocessingService _localGpService;

private async void StartLocalServer()
{
    try
    {
        // Get the singleton LocalServer object using the static "Instance" property
        _localServer = LocalServer.Instance;
        _localServer.AppDataPath = @"D:\Temp\LocalServerData";

        // Handle the StatusChanged event to react when the server is started
        _localServer.StatusChanged += (sender, statusChangedEventArgs) =>
        {
            // Check if the server started successfully
            if (statusChangedEventArgs.Status == LocalServerStatus.Started)
            {
                // Start specific local services here ...
                InitializeGpService();
            }
        };
        // Start the local server instance
        await _localServer.StartAsync();
    }
    catch (Exception e)
    {
        Console.WriteLine(e);
    }
}

 

(b) Erzeugen und Starten eines lokalen Services auf Basis eines Geoprocessing Packages (Download) 

private async void InitializeGpService()
{
    try
    {
        // Create a local GP service from a geoprocessing package on disk
        _localGpService = new LocalGeoprocessingService(@"data\simple-buffer.gpk");

        // Handle the status changed event to check when it's loaded
        _localGpService.StatusChanged += (svc, args) =>
        {
            // If service started successfully, create a gp task
            if (args.Status == LocalServerStatus.Started)
            {
                //do something, if needed
            }
        };
        // Start the local geoprocessing service
        await _localGpService.StartAsync();
    }
    catch (Exception e)
    {
        Console.WriteLine(e);
    }
}

 

(c) Nutzen des lokalen Services mit einem Geoprocessing Tasks

private async void MyMapViewOnGeoViewTapped(object sender, GeoViewInputEventArgs e)
{
    var gpUri = new Uri(_localServer.Services[0].Url.AbsoluteUri + "/SimpleBuffer");

    // Create parameters, run the task, process results, etc.
    // ...
    var geoprocessorTask = await GeoprocessingTask.CreateAsync(gpUri);

    var parameter =
        new GeoprocessingParameters(GeoprocessingExecutionType.AsynchronousSubmit)
        {
            OutputSpatialReference = MyMapView.SpatialReference
        };

    var myInputFeatures = new FeatureCollectionTable(new List<Field>(), GeometryType.Point, MyMapView.SpatialReference);
    // Create a new feature from the feature collection table. It will not have a coordinate location (x,y) yet
    var myInputFeature = myInputFeatures.CreateFeature();

    // Assign a physical location to the new point feature based upon where the user clicked in the map view
    myInputFeature.Geometry = e.Location;

    // Add the new feature with (x,y) location to the feature collection table
    await myInputFeatures.AddFeatureAsync(myInputFeature);

    parameter.Inputs.Add("InputFeatures", new GeoprocessingFeatures(myInputFeatures));
    parameter.Inputs.Add("Distance", new GeoprocessingLinearUnit(1000, GeoprocessingLinearUnits.Kilometer));

    GeoprocessingJob job = geoprocessorTask.CreateJob(parameter);
    try
    {
        // Execute analysis and wait for the results
        var analysisResult = await job.GetResultAsync();
        var outputFeatures = analysisResult.Outputs["BufferOutput"] as GeoprocessingFeatures;
    }
    catch (TaskCanceledException cancelledException)
    {
        // This is thrown if the task is cancelled.
        MessageBox.Show(cancelledException.Message);
    }
    catch (Exception exception)
    {
        MessageBox.Show(exception.Message);
    }
}

 

Ergebnis

 

Resümee

Mit der Local Server Technologie können fokussierte ArcGIS Runtime Anwendungen mit Werkzeugen aus ArcGIS Desktop für den GIS-Expertenbereich erstellt werden. Weiterhin gibt es die Möglichkeit, direkt auf Daten einer SDE zuzugreifen, viele verschiedene lokale Datentypen zu nutzen und vieles mehr. Und das mit modernster Technologie (64 Bit, Asynchron usw.) für verschiedene Desktop Plattformen. Wenn das nicht Grund genug für ArcGIS Engine/ArcObjects Entwickler ist …

Mit dem Major Release von ArcGIS Pro 2.0 mit vielen spannenden Neuerungen wurde auch ein zugehöriges ArcGIS Pro 2.0 SDK veröffentlicht. Mit diesem SDK können .NET Entwickler eigene individuelle Werkzeuge und Workflows für ArcGIS Pro erstellen.

 

 

Migration 

ArcGIS Pro 2.0 ist ein „breaking change“ Release. Add-Ins und Konfigurationen, welche mit der Version 1.4 oder davor entwickelt wurden, müssen neu kompiliert werden. Dabei sind gegebenenfalls folgende Dinge zu beachten/fixen:

 

  • ArcGIS Pro .NET Assemblies sind nun strong-named
  • Einige API Komponenten haben sich geändert, z.B. sind viele ehemals asynchrone Methoden nun synchron
  • ArcGIS Pro WPF styles, brushes und colors wurden umbenannt

 

Highlights 

  • Neue Klassen und Methoden für den Umgang mit Raster, Geodatabase, Mapping, Geometry, Content Management und Editieren
  • Visual Studio 2017 Support
  • Viele Samples und Guides auf GitHub

 

Ausführliche Informationen zu allen Neuerungen des ArcGIS Pro 2.0 SDKs findet Ihr in diesem News Blog von Esri Inc. und in der ArcGIS Pro 2.0 API Reference.

AppStudio for ArcGIS ist eine innovative Anwendung zur Erstellung mobiler Karten-Apps für Android, iOS, Mac, Linux und Windows. Apps werden einmal erstellt und sind dann plattformübergreifend und auf jedem Gerät sofort verwendbar. Programmierkenntnisse sind für das Erstellen von Apps mit AppStudio for ArcGIS nicht notwendig, denn es enthält eine Reihe konfigurierbarer App-Vorlagen, mit denen Aussehen, Verhalten und Inhalte gesteuert werden können.

 

Ist die App fertig, kann sie auf allen Geräten getestet und organisationsweit freigegeben oder über Apple App Store, Google Play, Ubuntu Apps Directory und Windows Store öffentlich zur Verfügung gestellt werden.

 

Entwickler können mit den AppStudio Desktop Editionen bestehende App-Vorlagen anpassen und auch vollständig eigene Apps erstellen. Dabei unterstützt die volle Power von ArcGIS Runtime.

 

Mit AppStudio for ArcGIS Version 2.0 kommen neue Funktionen, aktualisierte Werkzeuge für Entwickler und ein moderner Look & Feel. Zum Beispiel:

 

Support von ArcGIS Runtime Version 100.1

Jetzt können auch alle Möglichkeiten der neuesten ArcGIS Runtime Generation in AppStudio genutzt werden, z.B. Apps mit 3D Scenes oder die Nutzung von Datenformaten wie Mobile Map Packages und Vector Tile Basemaps.

 

Verbesserte App Templates

Das Map Viewer Template hat neben neuen Funktionen ein intuitives neues Interface und bietet nun ein adaptives Design für alle Bildschirmgrößen. Das Quick Report Template hat unter anderem ein neues Kameramodul, dark/light Themes und die Möglichkeit zum Offline arbeiten spendiert bekommen.

 

Neues Look & Feel der AppStudio Desktop Edition

Die Desktop Edition wurde von Grund auf neu designt und bietet nun ein konfigurierbares Interface, Schnellzugriff auf Werkzeuge und auch die beliebten dark/light Themes. Apps und Samples können durch Tags oder andere Filteroptionen schneller gefunden werden.

 

 

Neue Möglichkeiten für Entwickler

In AppStudio wurden verschiedene AppFramework Plugins für Local Notification, Vibration, Background Location, Promises und SQL Storage implementiert. Diese unterstützen bei der Entwicklung von leistungsstarken und modernen native Apps. Diese Plugins befinden sich noch im Beta Status.

 

 

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

Am 21.03.2017 hat Lars zum Auftakt unserer vierteiligen Webinarreihe für Entwickler über das neue ArcGIS Developer Program in einem einstündigen Webcast informiert. Am Dienstag (28.03.) haben Lars und ich den zweiten Webcast gehalten. Diesmal ging es rund um die Erstellung nativer Apps mit ArcGIS Runtime mit dem Schwerpunkt auf die neue Version 100 (Quartz) und Infos über das neue ArcGIS Runtime Deployment Model.

 

Nach einer kurzen Einleitung haben wir zuerst mit der Quantum Systems Ground Control App zur Erstellung von Flugplänen und der Administration von Drohnen veranschaulicht, was für coole Dinge mithilfe von ArcGIS Runtime entwickelt werden können. Danach informierten wir in einem etwas längeren Teil über die neue Architektur und Funktionalität der Version 100, auch mit einigen Demos und Codebeispielen. Im letzten Teil berichteten wir über das neue Lizenzmodell für das Deployment von ArcGIS Runtime Apps.

 

Links zu ArcGIS Runtime Samples:

 

Das Video zum Webcast:

 

 

Herzlichen Dank nochmal für die rege Teilnahme, es hat auch uns großen Spaß gemacht. Wir haben Eure Fragen in den Kommentaren unten direkt beantwortet. Falls Ihr noch weitere Fragen habt, oder Anregungen und Kritik, könnt Ihr auch die Kommentare dazu nutzen. Der Foliensatz zum Webinar ist als PDF an diesen Blog angehangen.

 

Euer GeoDev Germany Team

 

PS: Der nächste Webcast über die Neuerungen der ArcGIS API for JavaScript 4.x und Web AppBuilder for ArcGIS findet nächsten Dienstag, den 04.04., um 16 Uhr statt. Wer noch nicht für die Webinarreihe angemeldet ist, zur Registrierung geht es hier.

[Blogeintrag hier auch auf deutsch]

 

The native ArcGIS Runtime SDKs help developers build applications that provide comprehensive spatial capabilities and deploy them to a variety of popular mobile and desktop platforms and devices. These SDKs enable users to explore and leverage the ArcGIS platform's Web GIS capabilities by accessing and working with data in the cloud but also taking data offline to perform various workflows such as editing, synchronizing, geoanalytics, geocoding, locating as well as routing. All native ready-to-use apps by Esri, such as Collector for ArcGIS, are based on ArcGIS Runtime technology. The new version 100.0 (formerly known as “Quartz”) is a major release with significant changes in terms of functionality, architecture, APIs, and licensing.

 

New Functionality

 

Highlights include 3D visualization and the use of new data formats as well as working seamlessly with all Web GIS platforms, such as ArcGIS Online and Portal for ArcGIS. Moreover, new capabilities and enhancements have been implemented for geometries, Smart Mapping, symbology, and many other features. Authentication has become much simpler, too.

 

ArcGIS Runtime 3D Scene

 

Apps can now visualize 2D maps as well as 3D scenes, both relying on the same data sources. 3D scenes additionally use scene layers to render local 3D scene layer packages or 3D scene services, e.g. for visualizing 3D building models. Using elevation services or local raster data, you can incorporate elevation models into scenes. There is special 3D symbology for features as well as 3D options for rendering and displaying, such as extrusion, to manipulate the view and enhance features.

 

Mobile map packages, vector tile basemaps, and many other data formats are now available as data sources. Mapping has generally become more easy, e.g. by using preconfigured, ready-to-use maps from the cloud or as a data package rather than compiling them from different data sources on the client side. In addition to that, there are tools available for saving and sharing maps compiled on the client side.

 

The integration of ArcGIS Runtime into the concept of Web GIS has been significantly enhanced. Prior to this version, content already included web maps, services, and data. It is now possible to use this content to create, manipulate, and save workflows. Authentication Manager, a class that can be configured to implement, manage, and control security-related events, is now available for easy and centralized authentication handling.

 

Changing the Architecture and APIs

 

ArcGIS Runtime v100 architecture

 

All ArcGIS Runtime SDKs use the same C++ runtime core. This core controls the communication to the hardware of the end device and implements the business logic for visualization. It is responsible for accessing the data and the engines for analyses, navigation, labeling, and other operations. Platform-specific APIs for iOS, Android, .NET, Java, Qt/QML, and OS X all make use of this runtime core. As an example, the ArcGIS Runtime SDK for Android is made up of the Android API, the runtime core as well as the related documentation.

 

This C++ application programming interface (API) and the C application binary interface (ABI) between platform-specific APIs and the runtime core are new technology features. In the previous version, the APIs directly accessed the runtime core libraries which caused a higher programming effort (Interop) just for communication. This effort has been reduced significantly by the new interfaces. Another benefit is that new functionality is quickly implemented into all SDKs which in turn minimizes error susceptibility.

 

All platform-specific APIs have been completely redesigned. This was mostly necessary to incorporate the 3D functionality and implement the new way of accessing the runtime core. Additionally, APIs have been standardized to the most part (e.g. consistent use of class and method names). Error handling has been simplified, and a loadable pattern can now be used to monitor the asynchronous nature of loading data.

 

With ArcGIS Runtime v100.0, cross-platform development is also enabled with some SDKs. As an example: .NET developers may now use the ArcGIS Runtime SDK for .NET with incorporated Xamarin technology to develop cross-platform Xamarin apps for Android and iOS. You can also build and deploy to OS X as a platform using ArcGIS Runtime SDK for Java.

 

New Deployment License Model

 

With ArcGIS Runtime v100.0, Esri provides a new licensing model for deploying apps at four license levels: Lite, Basic, Standard, and Advanced. The functionality differs depending on which license level is acquired but common operations are provided whether you are online or offline. Lite level is available for free and enables users to create viewer apps with maps, geocoding, and simple routing. At the Basic level, developers can create apps for data collection.

 

Standard and Advanced level functionalities address developers of advanced GIS applications. These apps can provide access to additional data formats and analysis capabilities. The Standard and Advanced license levels come with an Analysis Extension, supporting a subset of the ArcGIS toolboxes Analysis, Network Analyst, Spatial Analyst, and 3D Analyst.

 

Two options are available to set the license level for your ArcGIS Runtime apps: deployment license key and named user (not available yet for Standard and Advanced).

 

Migration from ArcGIS Runtime Version 10.2.x to v100.0

 

Due to large-scale changes in the architecture and within the APIs, a simple migration from version 10.2.x to v100.0 is not possible. Developers need to rewrite apps, and some functionality from the previous version has not been included in ArcGIS Runtime v100.0 yet. Future releases will close this gap.

 

Conclusion

 

With ArcGIS Runtime v100.0, a new era has begun. It is an important foundation for all future requirements on how native apps leverage and support the concept of Web GIS and make use of the ArcGIS functionality. For ArcGIS Engine developers ArcGIS Runtime is now a valid option to create GIS applications using modern technology. Esri Inc. puts it in a nutshell: Building a platform for app developers for the future!

Filter Blog

By date: By tag: