<\/HEAD>
Les exigences évoluent. Alors qu'auparavant le traitement numérique des données était exclusivement limité au bureau, aujourd'hui on a de plus en plus la possibilité d'effectuer ce travail en déplacement.<\/SPAN><\/P><\/P>Dans de nombreux scénarios, cela est également nécessaire : par exemple, l'inspection des dommages routiers par le service des routes – plus de post-traitement des informations saisies sur papier. À la place, une collecte de données géolocalisée, enrichie d'images des dommages et un flux d'informations immédiat auquel un répartiteur peut réagir instantanément.<\/SPAN><\/P><\/P>Ou à l'exemple d'une administration forestière : lorsqu'aucune donnée d'adresse n'est disponible, on a besoin de données GPS pour gérer et retrouver les aires de stockage du bois. Cela permet également aux conducteurs de camions non familiers avec la région d'obtenir une description de l'emplacement ou même un guidage.<\/SPAN><\/P><\/P>La technologie existe depuis plusieurs années et est proposée par Esri dans différents produits qui conviennent idéalement selon les besoins. L'un des membres les plus récents de cette famille de produits est le ArcGIS Runtime SDK for .NET<\/A>. Il s'agit d'un outil de développement pour la plateforme Microsoft, permettant de créer des applications pour Windows Desktop, Windows Store et Windows Phone – donc pour toute la gamme du téléphone à la tablette jusqu'au bureau classique. Et tout cela avec un seul framework.<\/SPAN><\/P><\/P>
Tous les SDK « ArcGIS Runtime » ont en commun la fonctionnalité hors ligne. Cette fonctionnalité principale introduite avec la version 10.2.3 apporte tous les outils nécessaires pour gérer les données localement et sans connexion réseau, puis synchroniser avec une base de données centrale (comme le
ArcGIS Online Cloud<\/A>). Des architectures combinant différents produits ArcGIS sont possibles : dans une démonstration Collector Light<\/A><\/STRONG> réalisée par Esri Allemagne, il est montré qu'un client .Net et un client Java – chacun basé sur un ArcGIS Runtime SDK – peuvent gérer des données hors ligne. Cette démo va même jusqu'à construire un cache hors ligne uniforme, utilisable de manière identique par les deux clients.<\/SPAN><\/P><\/P>
L'exemple de la démo .NET expliquera quelques processus et donnera quelques conseils pouvant aider à réaliser sa propre application. Tous les extraits de code et captures d'écran présentés se retrouveront dans le projet démo sous une forme similaire.<\/SPAN><\/P><\/P>Le projet démo est construit selon le concept MVVM et utilise un toolkit tiers nommé
MVVM Light<\/A>. Ce concept prévoit un découplage de l'interface utilisateur (UI) de la logique métier, rendant les interfaces interchangeables et permettant de réutiliser la couche logique dans différentes applications sur diverses plateformes.<\/SPAN><\/P><\/P>
Pour résumer l'idée de l'application démo : on peut se connecter à Esri Cloud via un compte ArcGIS Online puis rechercher des cartes configurées pour une utilisation hors ligne. Si on se trouve dans une organisation avec ce compte, on voit non seulement ses propres cartes mais aussi toutes celles partagées pour un usage commun entre collègues. On peut choisir librement une carte et rendre une version disponible hors ligne, utilisable ensuite sans connexion réseau. L'édition des données est également possible.<\/SPAN><\/P><\/P>
Montre-moi ce que tu as<\/SPAN><\/H1>Nous sommes donc maintenant capables de nous connecter avec l'application. Nous allons maintenant aborder le but réel de l'application : la possibilité d'utiliser des cartes hors ligne.<\/SPAN><\/P><\/P>Tout d'abord, nous devons rechercher des objets disponibles pouvant être utilisés par notre application. Cela se fait dans la méthode SearchArcgisOnline()<\/SPAN> de la classe ArcGisPortalWebMapItemsViewModel<\/>.
Une instance du portail ArcGIS est créée en premier lieu, qui est généralement disponible pour les requêtes vers la plateforme ArcGIS (donc ArcGIS Online ou Portal for ArcGIS) :<\/>\n<\/>\n
\n<\/>\nEn examinant l'objet _arcGisPortal après exécution de cette instruction, on constate que la connexion a eu lieu avec notre login utilisé précédemment :
\n
\n
Cette association a été faite ici par IdentityManager qui a trouvé les informations d'identification appropriées pour la requête vers ArcGIS Online.
Ensuite, nous voulons voir dans l'application toutes les cartes pouvant être enregistrées hors ligne. La requête suivante recherche toutes les cartes (= Web Maps) prévues pour le stockage hors ligne. Pour démontrer comment restreindre davantage la recherche, seules les cartes au sein de l'organisation sont recherchées. Le « SearchText » est un texte de recherche depuis l'interface utilisateur permettant d'affiner encore plus la recherche :
\n
Enfin, nous fournissons quelques paramètres de recherche et envoyons la requête :

Comme nous avons initialement créé une Web Map nommée « My cool Map », cherchons le mot-clé « cool ». La recherche donne exactement un résultat dans notre cas :

Pourquoi exactement un résultat ? Eh bien, bien sûr, nous voyons notre propre carte que nous avions créée. Beaucoup d'autres personnes trouvent probablement aussi travailler avec ArcGIS « cool », donc il y aurait probablement plusieurs « coole Karten ». Cependant, elles ne sont pas affichées dans la recherche car une partie de nos critères limite aux objets appartenant à notre propre organisation. Même si nous ne faisons pas partie d'une grande entreprise mais seulement d'une entreprise individuelle (« 1-Mann »), nous sommes considérés comme notre propre organisation.
Donne-moi ça !
Alors - c'est parti. Nous téléchargeons maintenant cette Web Map localement. Pour cela, cliquez sur le bouton « Get the map offline » dans l'objet carte et vous passez immédiatement à une nouvelle page où le contenu de la Web Map est affiché. En trois étapes, nous obtenons notre carte hors ligne : Tout d'abord, nous donnons à notre futur Cache un nom unique, puis nous marquons une zone (partielle) qui doit être disponible hors ligne et lançons le téléchargement avec le bouton « Export Map » :<\/SPAN><\/P>
<\/SPAN><\/P>Un autre changement de page nous amène automatiquement à la vue de tous les caches disponibles hors ligne. Cette collection est – selon l'utilisation que vous avez déjà faite de l'application – plus ou moins étendue, dans mon cas il y a déjà plusieurs caches. Les caches sont affichés regroupés par Web Maps, car il est tout à fait possible de charger différents caches pour la même Web Map (par exemple avec différentes portions de carte). Le groupe peut être réduit, de sorte que seules quelques informations sur la Web Map restent visibles.<\/SPAN><\/P><\/P>Le nouveau cache, qui est en cours de téléchargement, est marqué comme actif par une barre de progression, en outre une barre d'état dans l'objet cache informe sur le processus actuel. Chaque objet cache dispose également de boutons pour supprimer, synchroniser et charger le cache.<\/SPAN><\/P>
<\/SPAN><\/P>Pendant que nous attendons le cache, regardons rapidement dans le code ce qui se passe réellement.<\/SPAN><\/P><\/P>L'essentiel se passe surtout dans la classe CreateOfflineMapViewModel<\/SPAN>. Elle est responsable de la création des caches. Le point d'entrée central est la méthode ExportMap()<\/SPAN>, déclenchée lors du clic sur « Export Map ». Bien sûr, on trouve ici les fonctions centrales qui sauvegardent l'essentiel de la Web Map :#_msocom_1<\/A> <\/SPAN>les données géographiques, c'est-à-dire la carte de base et les données des entités.<\/SPAN><\/P>
<\/SPAN><\/P>Ceux qui ont déjà travaillé avec des données Esri Offline (par exemple avec ArcGIS for Windows MobileSDK ou l'application Collector for ArcGIS) connaissent fondamentalement ce processus. La carte de base et les données vectorielles sont stockées séparément. Cela tient d'une part au traitement différent des données raster et des entités, mais aussi bien sûr à la structure différente des données : la carte de base est sous forme d'un Tiled Package, un dossier compressé avec une structure d'images en tuiles. Les données vectorielles sont quant à elles sous forme d'une structure de base de données, plus précisément au format SQLite. Dans notre cas, la base SQLite se termine dans le système de fichiers par « geodatabase », mais cela reste librement choisissable.<\/SPAN><\/P>
<\/SPAN><\/P>Mais avant que l'export réel des données géographiques ne commence, autre chose se produit :<\/SPAN><\/P>
<\/SPAN><\/P>Ici, les informations de la Web Map sont stockées localement. Il faut savoir qu'une Web Map est en fait
un fichier de configuration au format JSON<\/A>, qui ne contient pas lui-même les données mais plutôt les informations où se trouvent les données. De même, des informations sur la définition même de la carte telles que Id, titre, propriétaire, date de création etc. sont enregistrées. Ces deux informations proviennent de la Web Map, un objet défini en ligne auquel on n'a pas accès quand on travaille hors ligne. Pour rendre ces informations disponibles aussi hors ligne, un mécanisme a été intégré dans la démo qui sauvegarde localement les définitions de la Web Map lors de l'export et les rend ainsi disponibles en toute situation.<\/SPAN><\/P><\/P>
Tout change avec l'app<\/SPAN><\/H1>Alors, entre-temps le cache est complètement chargé. Nous pouvons maintenant faire trois choses avec : l'afficher sur une carte, synchroniser et supprimer.<\/SPAN><\/P><\/P>Nous nous concentrons d'abord sur l'affichage du cache chargé et cliquons donc sur « Load map ».<\/SPAN><\/P>
<\/SPAN><\/P>Un nouvel onglet nommé « Map » s'ouvre et dans l'affichage nous voyons une carte et une liste de toutes les couches éditables. En sélectionnant une couche, on peut cliquer sur un point dans la carte et ainsi créer de nouveaux objets dans cette couche. Pour simplifier, la démo ne demande pas la saisie d'attributs, seule une géométrie est créée ; ce serait cependant l'étape suivante dans une application complète.<\/SPAN><\/P><\/P>Le fait que des modifications aient été faites sur la couche est indiqué par un nombre d'éditions affiché derrière les couches concernées dans la liste des couches. Dès qu'il y a des modifications sur un cache, il est judicieux de le synchroniser, ce qui est aussi la dernière étape que veut montrer la démo.<\/SPAN><\/P><\/P>Pour cela, nous revenons à l'onglet « Config » et sélectionnons sur notre cache la fonction « Sync ». La barre de chargement apparaît à nouveau, cette fois non pas avec une description d'exportation mais avec un titre de synchronisation. Contrairement à l'exportation, lors de la synchronisation on compare quelles modifications ont eu lieu et elles sont appliquées centralement. Les modifications locales sont téléchargées vers le serveur, celles des autres clients sont téléchargées.<\/SPAN><\/P>
Finale, oh oh
Quel était le but de cet article ? D'une part illustrer quelques questions typiques et processus d'une application hors ligne. Associé à la référence à l'application Collector Light Demo vous êtes ainsi capable d'examiner chaque étape individuellement et aussi de comprendre leur déroulement. Cela peut vous aider à résoudre vos questions mais vous donne au moins quelques idées sur comment aborder certaines choses.
À propos de la démo il faut encore noter ceci : le développement a commencé déjà basé sur une version Beta d'ArcGIS Runtime for .NET. Ainsi Esri Deutschland a eu très tôt un aperçu du développement et a pu acquérir déjà de l'expérience. Depuis les premières versions beta plusieurs nouvelles versions sont sorties apportant beaucoup d'améliorations précieuses. Par ailleurs il existe désormais des toolkits supplémentaires et des exemples montrant diverses solutions possibles. Ne soyez donc pas surpris si vous trouvez différentes solutions pour un même problème. Parfois elles sont équivalentes, parfois elles ont différents avantages.
Si vous avez d'autres questions au-delà de ces informations et souhaitez un conseil personnalisé, n'hésitez pas à contacter Esri Deutschland ; notre équipe Consulting vous accompagne avec compétence.
<\body>\<\html>