<\/HEAD>
Avec ArcGIS Runtime<\/A>, il est possible de créer des applications natives pour toutes les plateformes courantes. Les applications natives sont particulièrement adaptées aux scénarios mobiles pour le travail sur le terrain. Comme une connexion Internet stable n'est souvent pas garantie sur le terrain, les cartes ainsi que toutes les données associées doivent être stockées localement sur l'appareil. Il existe déjà plusieurs possibilités de le faire avec ArcGIS Runtime :<\/P><\/P>
- Exportation à la demande des données directement depuis les services ArcGIS (
Feature<\/A>, Raster<\/A> et Vector Tile<\/A>)<\/LI>Exportation à la demande de cartes complètes<\/A><\/LI>Prétraitement de contenu ArcGIS Runtime<\/A> ou de Mobile Map Packages<\/A> avec ArcGIS Desktop puis copie vers l'appareil<\/LI><\/UL>
Ces possibilités sont également utilisées dans des applications ArcGIS telles que
Collector<\/A>, Navigator<\/A> ou Explorer<\/A>. Depuis la version 100.2 d'ArcGIS Runtime, il existe en outre le Preplanned Workflow<\/A> pour la planification continue et automatisable des scénarios mobiles hors ligne.<\/P>
Le Preplanned Workflow<\/H2>
Dans un scénario classique de travail sur le terrain, plusieurs agents de terrain ont la même mission, mais dans différentes zones de travail. Un exemple est l'inspection des routes dans une ville, où différents employés se déplacent dans différents quartiers. Un employé a généralement besoin uniquement des données mobiles de sa zone et non des données de la carte complète. Souvent, il ne doit voir que les données de sa propre zone.

Le Preplanned Workflow est précisément conçu pour ce type de scénarios. Il se compose essentiellement de deux parties : la planification des zones de travail au bureau et l'utilisation des "sous-cartes" dans les applications ArcGIS Runtime sur le terrain.

Planification des zones de travail au bureau<\/H2>La condition préalable est une WebMap compatible hors ligne<\/A>. L'ID de l'élément Portal (la chaîne dans l'URL) est nécessaire pour cette WebMap.

Ensuite, les zones de travail pertinentes (MapAreas) sont définies dans la WebMap. Le moyen le plus simple est de créer des
signets<\/A>. Il est également possible d'obtenir les étendues des zones et de les utiliser au format JSON, par exemple comme suit :
{
"xmin": -13184700,
"ymin": 3988556,
"xmax": -13004945,
"ymax": 4061479,
"spatialReference": {
"wkid": 102100
}}<SPAN class="line-numbers-rows"><SPAN><br \/></SPAN><SPAN><br \/></SPAN><SPAN><br \/></SPAN><SPAN><br \/></SPAN><SPAN><br \/></SPAN><SPAN><br \/></SPAN><SPAN><br \/></SPAN><SPAN></SPAN></SPAN>
Avec le nouveau service Geoprocessing Offline Packaging pour le Preplanned Workflow, les tâches suivantes peuvent être effectuées :
Create Map Area<\/A>)
Prétraitement des données mobiles pour chaque zone (Setup Map Area<\/A>)
Mise à jour des données mobiles (Refresh Map Area Package)
Pour une WebMap, jusqu'à 16 MapAreas peuvent être créées. Les données mobiles des MapAreas respectives sont stockées directement au format utilisable hors ligne dans le portail :
Features sous forme de base de données SQLite
Couches Vector Tile sous forme de Vector Tile Packages (.vtpk)
Données raster sous forme de Tile Packages (.tpk)
Les données mobiles ont une référence à la MapArea correspondante. Et toutes les MapAreas ont une référence à la WebMap correspondante. Cela signifie : si une MapArea est supprimée, les données mobiles correspondantes dans le portail sont également supprimées. Et si la WebMap est supprimée, toutes les MapAreas ainsi que les données mobiles disparaissent également.
Les MapAreas et leurs données mobiles associées ne sont pas affichées dans l'interface standard du portail. Dans le catalogue d'ArcGIS Pro, ces éléments peuvent être affichés ou supprimés. Une autre possibilité est d'utiliser le AGOL Assistant.
Comment cela est-il mis en œuvre en pratique ?
Les services Geoprocessing peuvent être utilisés dans les applications web avec l'ArcGIS API for JavaScript et dans les applications natives avec ArcGIS Runtime. Avec ces deux options, il serait par exemple possible de créer des applications configuratrices pour les planificateurs au bureau. Une autre option est d'utiliser directement le service Geoprocessing Offline Packaging dans ArcGIS Desktop. Mon favori personnel est cependant l'implémentation avec l'ArcGIS API for Python et le OfflineMapAreaManager. Avec ces quelques lignes de code Python, les MapAreas sont générées à partir de tous les signets d'une WebMap et les données mobiles correspondantes sont également créées :
# Importer les modules
from arcgis.gis import GIS
from arcgis.mapping import WebMap
from getpass import getpass
# Configurer l'organisation et les informations utilisateur
password=getpass()
gis = GIS('https://www.arcgis.com', 'my named user', password)
# obtenir la webmap à partir de l'id d'élément du portail
offline_map_item = gis.content token">.<\/SPAN>get<SPAN class="punctuation token">(<\/SPAN><SPAN class="string token">"my webmap id"<\/SPAN><SPAN class="punctuation token">)<\/SPAN>\noffline_webmap <SPAN class="operator token">=<\/SPAN> WebMap<SPAN class="punctuation token">(<\/SPAN>offline_map_item<SPAN class="punctuation token">)<\/SPAN>\n\n<SPAN class="comment token"># Parcourir les signets de la webmap et créer une zone de carte pour chaque signet<\/SPAN>\n<SPAN class="keyword token">for<\/SPAN> bookmark <SPAN class="keyword token">in<\/SPAN> offline_webmap<SPAN class="punctuation token">.<\/SPAN>definition<SPAN class="punctuation token">.<\/SPAN>bookmarks<SPAN class="punctuation token">:<\/SPAN>\n bookmark_name <SPAN class="operator token">=<\/SPAN> bookmark<SPAN class="punctuation token">.<\/SPAN>name\n item_prop <SPAN class="operator token">=<\/SPAN> <SPAN class="punctuation token">{<\/SPAN><SPAN class="string token">'title'<\/SPAN><SPAN class="punctuation token">:<\/SPAN> offline_map_item<SPAN class="punctuation token">.<\/SPAN>title <SPAN class="operator token">+<\/SPAN> <SPAN class="string token">'_'<\/SPAN> <SPAN class="operator token">+<\/SPAN> bookmark_name <SPAN class="operator token">+<\/SPAN> <SPAN class="string token">'_MapArea'<\/SPAN><SPAN class="punctuation token">,<\/SPAN>\n <SPAN class="string token">'snippet'<\/SPAN><SPAN class="punctuation token">:<\/SPAN> <SPAN class="string token">'my snippet'<\/SPAN><SPAN class="punctuation token">,<\/SPAN>\n <SPAN class="string token">'description'<\/Span><span class="punctuation token">:<\/span> <span class="string token">'my description'<\/span><span class="punctuation token">,<\/span>\n <span class="string token">'tags'<\/span><span class="punctuation token">:<\/span> <span class="punctuation token">[<\/span><span class="string token">'python api'<\/span><span class="punctuation token">,<\/span> <span class="string token">'MapArea'<\/span><span class="punctuation token">,<\/span> <span class="string token">'my tag'<\/span><span class="punctuation token">]<\/span><span class="punctuation token">}<span>}\n offline_area <span class="operator token">=<\/span> offline_webmap<span class="punctuation token">.<\/span>offline_areas<span class="punctuation token">.<\/span>create<span class="punctuation token">(<\/span>area<span class="operator token">=<\/span>bookmark_name<span class="punctuation token">,<\/span> folder<span class="operator token">=<\/span><span class="string token">'my portal content folder'<\/span><span class="punctuation token">,<\/span> item_properties<span class="operator token">=<\/span>item_prop<span class="punctuation token">)<\/span> <SPAn cLass= "line-numbers-rows"><SPAn><\ / SPan ><SPAn ><<EMOJI_2 > ><\ / SPan ><SPAn ><<EMOJI_3 > ><\ / SPan ><SPAn ><<EMOJI_4 > ><\ / SPan ><SPAn ><<EMOJI_5 > ><\ / SPan ><SPAn ><<EMOJI_6 > ><\ / SPan ><SPAn ><<EMOJI_7 > ><\ / SPan ><SPAn ><<EMOJI_8 > ><\ / SPan ><SPAn ><<EMOJI_9 > ><\ / SPan ><SPAn ><<EMOJI_10 > ><\ / SPan ><SPAn ><<EMOJI_11 > ><\ / SPan ><SPAn ><<EMOJI_12 > ><\ / SPan ><SPAn ><<EMOJI_13 > ><\ / SPan ><SPAn ><<EMOJI_14 > ><\ / SPan ><SPAn ><<EMOJI_15 > ><\ / SPan ><SPAn ><<EMOJI_16 > ><\ / SPan ><SPAn ><<EMOJI_17 > ><\ / SPan ><SPAn ><<EMOJI_18 > ><\ / SPan ><SPAn ><<EMOJI_19 > ><\ / SPan ><SPAn ><<EMOJI_20 > ><\ / SPan ><SPAn ><<EMOJI_21 > ><\ / SPan ></Span>Pour un test rapide, le notebook Python en pièce jointe de ce blog peut être utilisé sur notebooks.esri.com (upload). Utilisation des MapAreas dans les applications ArcGIS Runtime sur le terrain
Les MapAreas d'une WebMap et les données mobiles associées ont maintenant été créées dans le portail. Il ne reste plus qu'à les télécharger et à les utiliser avec ArcGIS Runtime. Les fonctions Preplanned Workflow dans les SDKs sont disponibles à partir de la version 100.2 d'ArcGIS Runtime. Voici les grandes étapes pour l'implémentation à l'exemple du SDK .NET :
1. Chargement de la WebMap
var