BLOG
|
Gestern ist die neue Version 3.14 der JavaScript API erschienen. Heute folgte die erste Beta für die JavaScript API 4.0. ArcGIS API for JavaScript 3.14 Grundlegende Neuerungen sind 2 neue Schnittstellen bzw. Workflows, die jetzt unterstützt werden: Erweiterungen für Operations Dashboard Bisher waren diese nur für die Windows Version des Dashboards mit ArcGIS Runtime SDK for WPF möglich. Jetzt können Widgets, Map Tools und Feature Actions auch mit Hilfe der JavaScript API programmiert werden. Und diese Erweiterungen können in beiden Versionen des Dashboards (Windows und Browser) verwendet werden. https://developers.arcgis.com/javascript/jshelp/operations-dashboard-extensibility-overview.html Anbindung DataReviewer Eine Reihe von Tasks, um die ArcGIS Data Reviewer for Server Funktionen in eine Webanwendung zu integrieren. https://developers.arcgis.com/javascript/jshelp/intro_datareviewer.html Darüber hinaus gibt es auch einige funktionale Anpassungen: Anpassungen und Erweiterungen der Smart Mapping Funktionen (u.a. ein neuer Renderer namens BlendRenderer) 2 neue Widgets, allerdings noch in Beta: Elevation Provile und Layer List (Absolut revolutionär und noch nie nachgefragt, ein TOC in der JavaScript API) Unterstützung WFS und Anpassungen bei der Unterstützung von Image Server Alle Änderungen findet man wie immer unter folgendem Link https://developers.arcgis.com/javascript/jshelp/whats_new.html ArcGIS API for JavaScript – the next generation Zumindest als Beta ist die JavaScript API 4.0 seit heute verfügbar. Die größte Neuerung ist natürlich die 3D Unterstützung. Darüber hinaus wird die API aber auch überarbeitet, so dass diese einfacher und durchgängiger wird. WICHTIGE Infos: Es handelt sich um die 1. Beta Version, eine „developer preview“ mit eingeschränkter Funktionalität. Es gibt keinen Support während der Beta Phase. Für Feedback und Fragen soll Forum genutzt werden. Im Laufe des Jahres wird es weitere Betas geben. Das finale Release ist erst für nächstes Jahr geplant. Deshalb wird auch die momentane Version weiterentwickelt und es wird vermutlich noch weitere 3.X Releases geben. Link zur API https://developers.arcgis.com/javascript/beta/ Link zum Blog http://blogs.esri.com/esri/arcgis/2015/07/16/arcgis-api-for-javascript-version-4-0-beta-1-released/
... View more
07-17-2015
06:29 AM
|
3
|
0
|
1131
|
BLOG
|
Die Produktfamilie der ArcGIS Runtime SDKs ist seit der Version 10.2 offline-fähig. Dabei können Hintergrundkarten und Vektordaten von Diensten exportiert, und im Falle der Vektordaten auch synchronisiert werden. Um diese Funktionen zu veranschaulichen hat Esri Deutschland eine Demoanwendung entwickelt, welche die Offline Funktionalität von Collector for ArcGIS mit dem ArcGIS Runtime SDK for .NET und Java nachbildet. Diese Demo trägt den Namen Collector Light und ist auf GitHub veröffentlicht. Außerdem ist bereits ein Blog dazu erschienen. In diesem Artikel wird jetzt, am Beispiel der Java Demo, der Ablauf zum Exportieren und Synchronisieren von Vektordaten genauer betrachtet. Ein paar Vorbereitungen müssen sein Die Demo verwendet als Datenquelle eine WebMap. Diese wäre aber nicht zwingend nötig. Um Vektordaten exportieren zu können wird lediglich ein FeatureService benötigt. Dieser kann sowohl bei ArcGIS Online, in Portal for ArcGIS oder auf einem eigenen ArcGIS for Server gehostet sein. Dabei ist zu beachten dass im Dienst der Vorgang „Synchronisieren“ aktiviert ist. Am ArcGIS for Server kann dies im ArcGIS Server Manager im jeweiligen Dienst unter Funktionen -> Feature Access gemacht werden. In ArcGIS Online und Portal for ArcGIS in den Properties des Dienstes. Wird diese Funktion aktiviert bietet der Dienst zusätzliche REST-Schnittstellen an. Mit Hilfe der Operation „Create Replica“ können die Daten offline geholte werden. „Synchronize Replica“ ist für die Synchronisation der Daten und mit „Unregister Replica“ können die Daten gelöscht werden. Dazu aber später mehr. Jetzt startet endlich die Programmierung Wir müssen diese REST-Schnittstellen aber nicht direkt implementieren. Diese werden bereits vom ArcGIS Runtime SDK for Java gekapselt, so dass wir hierfür Java-Klassen und Methoden zur Verfügung haben. Die Verwendung zum Exportieren von Vektordaten findet man in der Demo in der Klasse action.CreateOfflineProject. Genauer gesagt in der Methode createGeodatabaseFromService. Nach einer kleinen Aufbereitung der Daten, was der Verwendung einer WebMap geschuldet ist, beginnt der spannende Teil in Zeile 330 mit dem Erzeugen der GenerateGeodatabaseParameters. //set up the parameters
GenerateGeodatabaseParameters params = new GenerateGeodatabaseParameters(
ArrayUtils.toPrimitive(layerIds.toArray(new Integer[layerIds.size()])),
extent,
map.getSpatialReference(),
false,
SyncModel.GEODATABASE,
map.getSpatialReference()); Hier zeigt sich, dass man die zu-exportierenden Daten einschränken kann. Zum einen besteht die Möglichkeit einzelne Layer des Diensts zu selektieren. Zum anderen kann ein Extent mitgegeben werden, so dass der Bereich eingeschränkt wird. Auch Anhänge können, müssen aber nicht geladen werden. Zudem ist es wichtig ein gewünschtes Koordinatensystem als Parameter mitzugeben, damit die Daten hinterher auch richtig auf unserer Karte dargestellt werden können. Anschließend werden zwei Callback Klassen benötigt. Eine wird verwendet um Statusinformationen während der Laufzeit entgegen zu nehmen. Die andere wird aufgerufen wenn der Task beendet ist und nimmt schlussendlich das Ergebnis entgegen. Jetzt kommt auch schon die Klasse GeodatabaseSyncTask ins Spiel, die den eigentlichen Aufruf generateGeodatabase macht. // ------------------------------------------------------------------------
// Generate the geodatabase from the service and download
// ------------------------------------------------------------------------
GeodatabaseSyncTask gdbTask = new GeodatabaseSyncTask(featureServiceUrl, PortalConnector.getUser(true));
gdbTask.generateGeodatabase(params, pathToGdb, false, statusCallback, gdbResponseCallback); Zum Erzeugen dieser Klasse benötigt man nur die URL zum FeatureService. Falls es sich um einen abgesicherten Dienst handelt, muss man, wie in diesem Beispiel, zudem Credentials mit übergeben. Details zum Thema Autorisierung und Authentifizierung gibt es einem eigenen Blog. Wo sind denn jetzt meine Daten? Im gdbResponseCallback in diesem Beispiel wird lediglich einem ProjectManager gesagt, dass neue Daten verfügbar sind. Deshalb stellt sich jetzt die Frage: Wo sind denn meine Daten? Die finden wir unter dem Pfad und Namen, der beim Aufruf als Parameter (pathToGdb) übergeben wurde. An den Namen wird noch die Dateiendung .geodatabse angehängt. Die Daten liegen in einer Datenbankstruktur vor, genauer gesagt einem SQLite Format, und können mit jedem gängigen SQLite-Tool betrachtet werden. Wie kommen die Daten in meine Karte? Aber wir wollen die Daten ja in unserer Karte betrachten und nicht in irgendeinem anderen Tool. Hierfür bietet das ArcGIS Runtime SDK for Java die Klasse FeatureLayer. Dieser kann mit Hilfe von verschiedenen Datenquellen als Basis erzeugt werden. Das ist das Schöne an dieser Klasse. Unabhängig von der Datenquelle ist das Handling immer das Gleiche. Eine von diesen Datenquellen ist die GeodatabaseFeatureTable. An diese Tables kommen wir, indem wir unsere SQLite Datenbank mit Hilfe der Klasse Geodatabse initialisieren. Für jeden einzelnen Layer wird dabei eine GeodatabseFeatureTable erzeugt. Geodatabase localGeodatabase = new Geodatabase("PathToGeodatabase");
for (GeodatabaseFeatureTable table : localGeodatabase.getGeodatabaseTables()) {
FeatureLayer featureLayer = new FeatureLayer(table);
featureLayer.initializeAsync();
} Ich will wieder nach Hause telefonieren So, jetzt sind die Daten offline. Wir können uns nun frei, fernab der digitalen Zivilisation, bewegen und Daten erfassen, ändern oder löschen. Irgendwann wird aber der Moment kommen, in dem wir unsere Änderungen mit unseren Kollegen teilen wollen. Außerdem interessiert mich ja vielleicht auch was diese in meiner Abwesenheit getrieben haben. Wir müssen also mit dem Mutterschiff (dem FeatureService) Kontakt aufnehmen. In der Demo passiert dies in der Klasse action.SyncProject. Die Methode syncGeodatabase in der bereits bekannten Klasse GeodatabaseSyncTask hilft uns dabei. gdbTask.syncGeodatabase(syncParams, gdb, statusCallback, syncResponseCallback); Wir sehen wieder die zwei Callbacks für Statusmeldungen und für das Ergebnis. Als weitere Parameter brauchen wir die Geodatabase (gdb) und spezielle SyncGeodatabaseParameters. Die Geodatabase haben wir ja bereits im vorherigen Schritt zur Visualisierung der Daten erzeugt. Und auch wegen der SyncParameter müssen wir uns keine Gedanken machen, denn die werden von der Geodatabase erzeugt. final SyncGeodatabaseParameters syncParams = gdb.getSyncParameters(); Das hat den Vorteil dass wir die komplexe Datenbankstruktur nicht kennen müssen, um unsere Änderungen zu extrahieren. Denn übertragen wird immer nur das Delta, nicht die komplette Datenbank. Bei der Synchronisation werden außerdem alle Änderungen am Dienst in meine lokale Datenbank übertragen, so dass ich auf dem aktuellsten Stand weiterarbeiten kann. Hier wird ebenfalls nur das Delta übertragen. Dies ist auch auf der folgenden Grafik erkennbar, die den gesamten Workflow schematisch darstellt. Haben mehrere Kollegen Änderungen an einem Datensatz vorgenommen, so gewinnt immer die letzte Änderung. Wobei dabei der Zeitstempel der Synchronisation und nicht der Zeitstempel der Änderung zählt. Zukünftig soll es auch andere Optionen zum Lösen von Konflikten geben, die dann pro Dienst eingestellt werden können. Aktuell ist das jedoch noch nicht möglich. Beenden wir das Einsiedlerleben Irgendwann kehrt man hoffentlich wieder zurück ins Büro und benötigt die lokale Kopie der Daten nicht mehr. Dann ist es wichtig diese nicht einfach zu löschen, sondern vorher einen Unregister am Dienst zu machen. Natürlich steht uns hierfür wieder die Klasse GeodatabaseSyncTask zur Verfügung, diesmal mit der Methode unregisterGeodatabase. gdbTask.unregisterGeodatabase(gdb, unregisterCallback); In der Demo findet man diesen Aufruf in der Klasse action.DeleteProject. Aber warum ist dieser Aufruf so wichtig? Der FeatureService erzeugt für jede Kopie ein sogenanntes Replica. Darin sind Informationen zur Kopie abgelegt, wie z.B. der Zeitpunkt der letzten Synchronisation. Diese Daten werden benötigt um den Synchronisationsmechanismus bewerkstelligen zu können. Beim Unregister wird dieses Replica gelöscht, da der Dienst dann weiß dass die lokale Kopie nicht mehr benötigt wird. Die Replicas eines Dienstes kann man sich auch in dessen Service Directory ansehen.
... View more
03-31-2015
01:52 AM
|
2
|
0
|
1361
|
BLOG
|
Am Dienstag, den 03. März 2015 fand ein Webinar für Entwickler zum Thema Mobile Apps mit JavaScript statt. Falls ihr es nicht zum Webinar geschafft habt, könnt ihr euch nachträglich das Video weiter unten anschauen und auch die Folien herunterladen. Auf GitHub haben wir euch alle Beispiele bereitgestellt. Diesmal habt ihr keine Fragen gestellt. Wir werten das einfach mal als gutes Zeichen. Falls ihr dennoch Fragen habt, könnt ihr sie gerne an developers@esri.de schicken. Am 19. März 2015 geht es mit dem GeoDev Meet-up in Berlin weiter. Weitere Meet-ups folgen in Köln und München. Im Mai ist es soweit, dann öffnet die deutschsprachige Esri Anwenderkonferenz GIS Talk in München wieder ihre Tore. Entwickler-Themen widmen wir einen eigenen Developer Track. Darüber hinaus wird es erstmalig eine Startup-Corner geben. Wir würden uns freuen, euch bei einer der nächsten Veranstaltungen zu treffen.
... View more
03-18-2015
09:40 AM
|
0
|
0
|
2169
|
BLOG
|
Die neue Version 10.2.5 beinhaltet nun die finale Version des QML API. QML ist eine deklarative Sprache auf Basis von Qt, die es ermöglicht Apps für verschiedene Plattformen, wie z.B. Android oder iOS, zu entwickeln. Neben dem neuen QML API sind auch kleinere Verbesserungen für Qt-Entwickler im neuen Release enthalten. Detaillierte Informationen findet man wie immer auf der Developer Seite.
... View more
02-27-2015
05:09 AM
|
0
|
0
|
1063
|
BLOG
|
Collector for ArcGIS ist eine fokussierte App für iOS und Android zur Datenerfassung im Außendienst. Eine der Stärken dieser App ist die Möglichkeit, die Karten auch offline auf dem Gerät vorzuhalten. Mit einem Sync-Framework können offline erfasste Daten mit dem zentralen Datenbestand synchronisiert werden. Collector for ArcGIS basiert auf ArcGIS Runtime Technologie. ArcGIS Runtime ist eine Familie von SDKs zum Entwickeln nativer Apps für verschiedene Plattformen und Programmiersprachen. Diese SDKs haben die gleiche Basisfunktionalität, so auch die Offline Funktionalität. Um zu zeigen was mit ArcGIS Runtime möglich ist, haben wir beispielhaft eine Anwendung entwickelt, welche die Offline Funktionalität von Collector for ArcGIS mit dem ArcGIS Runtime SDK for .NET und Java nachbildet - deshalb auch der pfiffige Projektname „Collector Light“ Der Code und Dokumentation ist auf GitHub verfügbar. Zu den Inhalten gibt es einen ausführlichen Blog. In den nächsten Wochen werden weitere Artikel hier auf GeoDev Germany erscheinen, die einzelne Funktionen genauer beleuchten.
... View more
02-20-2015
04:48 AM
|
1
|
0
|
1283
|
BLOG
|
Am Dienstag, den 03. Februar 2015 fand ein Webinar für Entwickler zur ArcGIS GeoEvent Extension for Server statt. Falls ihr es nicht zum Webinar geschafft habt, könnt ihr euch nachträglich das Video weiter unten anschauen und auch die Folien herunterladen. Auf GitHub haben wir euch unsere Beispiele zur Konfiguration von GeoEvent Services und zur Nutzung von Echtzeitdaten in JavaScript Klienten bereitgestellt. Nun zu euren Fragen: Gibt es die Möglichkeit, einen Kartenbereich, inkl. Koordinaten, auch offline zu nutzen, also ohne Internet-Verbindung, z.B. wenn die Event-Daten aus einer Datenbank ausgelesen werden und in diesem Kartenabschnitt offline dargestellt werden sollen? Die GeoEvent Extension for ArcGIS kann natürlich auch offline betrieben werden. Es muss nur eine Verbindung zur Datenquelle möglich sein, z.B. über ein internes Netzwerk. Sollen die Daten in einem Klienten auf einer Karte dargestellt werden, ist dies ebenfalls offline möglich. Der Klient muss lediglich auf den Ausgangskanal der GeoEvent Extension zugreifen können. Die Hintergrundkarte muss dann allerdings ebenfalls auf einem lokalen Server zur Verfügung stehen, da eine Verbindung zu ArcGIS Online nicht möglich ist. Bei einem JavaScript Klienten muss man zudem die API herunterladen und lokal hosten. Am Dienstag, den 3. März 2015 um 16 Uhr geht es in unserer Webinar-Reihe mit dem Thema „Mobile Apps mit JavaScript“ weiter. Wir freuen uns auf eure Teilnahme!
... View more
02-16-2015
01:41 AM
|
0
|
0
|
2083
|
BLOG
|
Parallel zur Developer Edition des Web AppBuilder ist auch eine neue Version der JavaScript API erschienen. Die größten Neuerungen sind: - Neue Analyse Widgets - DataAdapterFeatureLayer und Location Providers (beides in Beta) um Daten ohne geografischen Bezug um diesen zu erweitern - FeatureTable Widget (beta) um Daten in Tabellenform darzustellen Eine detaillierte Liste aller Änderungen findet man hier:https://developers.arcgis.com/javascript/jshelp/whats_new.html
... View more
12-23-2014
01:05 AM
|
1
|
0
|
1228
|
BLOG
|
Die Version steht auf https://developers.arcgis.com/web-appbuilder/ zum Download bereit und kann auf einem eigenen Server betrieben werden. Dadurch werden die Anpassung von konfigurierten Anwendungen und das Entwickeln von eigenen Widgets und Themes ermöglicht. Trotz dem Betrieb auf eigener Hardware wird für die Lizenzierung eine ArcGIS Online Organizational Subscription, Portal for ArcGIS oder eine Developer Subscription benötigt. Für Diskussionen, Fragen und Community-Building gibt es eine eigene Gruppe auf GeoNet. Außerdem können Widgets und Themes in einem GitHub Repository geteilt werden. Den originalen Blog Eintrag mit vielen nützlichen Links findet man hier: http://blogs.esri.com/esri/arcgis/2014/12/18/web-appbuilder-developer-edition-released/
... View more
12-22-2014
02:39 AM
|
1
|
0
|
1175
|
BLOG
|
In der neuen Version 10.2.4 des ArcGIS Runtime SDKs for Java ist jetzt ein JavaFX map control enthalten. Allerdings befindet sich dieses noch in Beta. Ansonsten wurde vor allem an den Datenquellen gearbeitet. So ist jetzt z.B. das direkte Laden von lokalen Rastern und Shapefiles möglich. Auch WMTS wird nun unterstützt. Eine Übersicht aller Neuerungen findet man hier: Release notes for 10.2.4—ArcGIS Runtime SDK for Java | ArcGIS for Developers
... View more
10-14-2014
01:02 AM
|
0
|
0
|
1176
|
BLOG
|
Die Version beinhaltet kleinere Verbesserungen und Bugfixes in verschiedenen Bereichen. Auch die Dokumentation wurde teilweise überarbeitet. Neu hinzugekommen sind ein HeatmapRenderer, ein DataBrowser zur Unterstützung von GeoEnrichment und die OpacityInfo zur Steuerung der Transparenz anhand von Attributen. Alle Änderungen finden sich unter folgendem Link https://developers.arcgis.com/javascript/jshelp/whats_new.html
... View more
10-09-2014
08:24 AM
|
1
|
0
|
1055
|
POST
|
I'm using the StreamLayer to show data from GeoEventProcessor on my map. Like in the sample I use a FeatureCollection to initialize the layer: layerDefinition = { "geometryType": "esriGeometryPoint", "fields": [{ name: "OBJECTID", type: "esriFieldTypeOID" }, { name: "id", type: "esriFieldTypeDouble" }, { name: "name", type: "esriFieldTypeString" } ]}; var featureCollection = { "layerDefinition": null, "featureSet": { "features": [], "geometryType": "esriGeometryPoint"} }; featureCollection.layerDefinition = layerDefinition; var layer = new StreamLayer(featureCollection, { socketUrl: "<url>", purgeOptions : { displayCount: 1000 }, infoTemplate : new esri.InfoTemplate("${name}") }); At first glance everything is ok. The data is shown on the map and by clicking on a feature, you can see the attributes. However for each event a new feature is added to the map by the StreamLayer. This is ok for sources like Twitter messages. But I want to show moving features (trains) in my application. Is it possible to mark one of the fields of the FeatureCollection as ID field, so features are updated? Thanks, Christine
... View more
11-04-2013
04:06 AM
|
0
|
1
|
316
|
Title | Kudos | Posted |
---|---|---|
3 | 07-17-2015 06:29 AM | |
2 | 03-31-2015 01:52 AM | |
1 | 02-20-2015 04:48 AM | |
1 | 12-23-2014 01:05 AM | |
1 | 12-22-2014 02:39 AM |
Online Status |
Offline
|
Date Last Visited |
11-11-2020
02:22 AM
|