<\/HEAD>
Les cartes se composent généralement de couches Basemap pour l'orientation et de couches opérationnelles pour la visualisation, la requête, l'édition et l'analyse des informations géographiques. Dans ArcGIS, on distingue deux types de Basemaps<\/A> : les Raster Tile Services (services de cartes en cache et services d'images) et les Vector Tile Services, encore assez récents.<\/P><\/P>
<\/P>
Lien vers la carte en direct<\/A><\/P><\/P>
<\/DIV>
Pour l'utilisation hors ligne des Basemaps dans
ArcGIS Runtime<\/A>, il est possible depuis longtemps d'exporter directement des Tile Packages (.tpk) à partir des Raster Tile Services. La nouveauté est maintenant la possibilité d'exporter des zones des Vector Tile Services et de les utiliser localement sous forme de Vector Tile Packages (.vtpk) :<\/DIV><\/P>
1. Authentification
L'export anonyme n'est pas autorisé, une authentification est requise. Plusieurs options existent, par exemple dans cet exemple.
2. Créer un PortalItem du Vector Tile Service
< P >Dans notre exemple de code, nous utilisons la < A href = "
http://www.arcgis.com/home/item.html?id=df541726b3df4c0caf99255bb1be4c86 " rel = "nofollow noopener noreferrer " target = "_blank " > World Topographic Map (for Export) < / A > . L'identifiant Portal ID est nécessaire.< / P >< P >< / P >< PRE class = "lia-code-sample line-numbers language-none " >< CODE >< SPAN class = "keyword token " > var < / SPAN > portal < SPAN class = "operator token " > = < / SPAN > < SPAN class = "keyword token " > await < / SPAN > ArcGISPortal < SPAN class = "punctuation token " > . < / SPAN > < SPAN class = "token function " > CreateAsync < / SPAN > < SPAN class = "punctuation token " > ( < / SPAN > < SPAN class = "punctuation token " > ) < / SPAN > ;
< SPAN class = "keyword token " > var < / SPAN > portalItem < SPAN class = "operator token " > = < / SPAN > < SPAN class = "keyword token " > await < / SPAN > PortalItem < SPAN class = "punctuation token " > . < / SPAN > < SPAN class = "token function " > CreateAsync < / SPAN > ( portal , < SPAN class = "string token " > "df541726b3df4c0caf99255bb1be4c86" < / SPAN > ) ;
<<EMOJI_0> > >< / SP an > >< / SP an > >< / SP an >< / PRE >< P >< / P >< PRE class= "lia-code-sample line-numbers language-none ">CONSEIL :
Il n'est malheureusement pas possible d'interroger un service Vector Tile pour obtenir des services équivalents avec d'autres styles. Pour automatiser cela quand même, on peut rechercher dans ArcGIS Runtime par types PortalItems et tags.
Par exemple, dans les Basemaps ArcGIS Online décrites ici, le tag spécifique est « World_Basemap_Export_v2 ».
Pour ses propres services, il faut choisir un tag spécifique approprié.
Voici comment faire la recherche :< / PRE >< PRE class= "lia-code-sample line-numbers language-none ">< CODE >< SP an class= "keyword token ">var< / SP an > queryExpression < SP an class= "operator token ">=< / SP an > < SP an class= "keyword token ">string< / SP an >.Format< / SP an >( id="toc-hId--384247244" id="toc-hId--384247244">3. Créer et exécuter une Task, un Parameter et un Job
Dans le code suivant, seules les données (.vtpk) sont exportées et non le Style.<\/P>
<SPAN class="comment token">// Créer la task<\/SPAN>
<SPAN class="keyword token">var<\/SPAN> exportTask <SPAN class="operator token">=<\/SPAN> <SPAN class="keyword token">await<\/SPAN> ExportVectorTilesTask<SPAN class="punctuation token">.<\/SPAN><SPAN class="token function">CreateAsync<\/SPAN><SPAN class="punctuation token">(<\/SPAN>portalItem<SPAN class="punctuation token">)<\/SPAN><SPAN class="punctuation token">;<\/SPAN>
<SPAN class="comment token">// Créer une nouvelle instance de paramètres<\/SPAN>
<SPAN class="keyword token">var<\/SPAN> parameters <SPAN class="operator token">=<\/SPAN> <SPAN class="keyword token">new<\/SPAN> <SPAN class="token class-name">ExportVectorTilesParameters<\/SPAN><SPAN class="punctuation token">(<\/SPAN><SPAN class="punctuation token">)<\/SPAN>
<SPAN class="punctuation token">{<\/SPAN>
AreaOfInterest <SPAN class="operator token">=<\/SPAN> exportArea<SPAN class="punctuation token">.<\/SPAN>Geometry<SPAN class="punctuation token">, <\/SPAN> <SPAN class="comment token">// zone à exporter<\/SPAN>
MaxLevel <SPAN class="operator token">=<\/SPAN> exportTask<SPAN class="punctuation token">.<\/SPAN>VectorTileSourceInfo<SPAN class="punctuation token">.<\/SPAN>LevelsOfDetail<SPAN class="punctuation token">.<\/SPAN>Count <SPAN class="operator token">-<\/SPAN> <SPAN class="number token">1<\/SPAN> <SPAN class="comment token">// niveaux à exporter<\/SPAN>
<SPAN class="punctuation token">}<span>; <\/span>
<span><span>// Créer le job d'exportation</span></span>
<span>var job = exportTask.ExportVectorTiles(parameters, Path.Combine(_vectorTileCachePath, "name.vtpk"));</span>
<span>// S'abonner aux notifications pour les mises à jour de statut</span>
job.JobChanged += (sender, e) =>
{
if (job.Status == Esri.ArcGISRuntime.Tasks.JobStatus.Succeeded)
{
// faire quelque chose
}
else if (job.Status == Esri.ArcGISRuntime.Tasks.JobStatus.Failed)
{
// Notifier l'utilisateur
ShowStatusMessage(job.Error.Message);
}
};
// Démarrer le job d'exportation
job.Start();<span class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span>
L’exportation du vtpk et du Style (si disponible) peut également être effectuée en une seule fois. Pour cela, il suffit de fournir au ExportVectorTilesJob le chemin de stockage supplémentaire pour un dossier destiné au Style.<\/p>
PRE class=\"lia-code-sample line-numbers language-none\">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"));
}> > > > > > > > >
et si seul le style doit être exporté, cela ressemble à ceci :<\/P>
var<\/SPAN> exportTask =<\/SPAN> await<\/SPAN> ExportVectorTilesTask.<\/SPAN>CreateAsync<\/SPAN>(<\/SPAN>portalItem)<\/SPAN>;<\/SPAN>
if<\/SPAN> (<\/SPAN>exportTask.<\/SPAN>HasStyleResources)<\/SPAN>
{<\/SPAN>
var<\/SPAN> exportStyleJob =<\/SPAN> exportTask.<\/SPAN>ExportStyleResourceCache<\/SPAN>(<\/SPAN>_styleResourcePath)<\/SPAN>;<\/SPAN>
var<\/SPAN> result =<\/SPAN> await<\/SPAN> exportStyleJob.<\/SPAN>GetResultAsync<\/SPAN>(<\/SPAN>)<\/SPAN>;<\/SPAN>
\/\/faire quelque chose<\/SPAN>
}<\/SPAN><\/SPAN><\/SPAN><\/SPAN><\/SPAN><\/SPAN><\/SPAN><\/SPAN><\/span><\/CODE><\/PRE><\/P>Par exemple, si toutes les exportierbaren ArcGIS Online Vector Tile Services<\/A> décrites plus haut doivent être disponibles localement comme Basemaps, il faut exporter le vtpk d'un seul service et uniquement les styles de tous les services. Dans un dossier StyleResource, il n'y a que des fichiers JSON avec la description du style, ils sont très petits.<\/P><\/P>
<\/P>
<\/H3>Utilisation des Vector Tile Packages et Styles locaux dans ArcGIS Runtime<\/H3>Le vtpk local et un style existant peuvent alors être intégrés dans la carte comme suit :<\/P><\/P>\/\/Charger un style<\/span>
var < \/span > itemResourceCache < Span class = "operator token" > = < \/span > < Span class = "keyword token" > new < \/span > < Span class = "token class-name" > ItemResourceCache < \/span >< Span class = "punctuation token" >( < \/span > _styleResourcePath < Span class = "punctuation token" > ) < \/span > ;
\/ \/Charger le vtpk < \/span >
var < \/span > offlineVectorTileCache < span class = "operator token" > = < \/span > < span class = "keyword token" > new < \/span > < span class = "token class-name" > VectorTileCache < \/span >< span class = "punctuation token" >( < \/span > Path < span class = "punctuation token" > . < \/span > Combine < span class = "punctuation token" >( < \/span > _vectorTileCachePath , < span class = "string token" > "name.vtpk" < \/span >< span class = "punctuation token" > ) < \/span >< span class = "punctuation token" > ) < \/span > ;
\/ \/ Créer une couche de tuiles avec le cache et le style < \/span >
var < \/span > layer < span class = "operator token" > = < \/span > < span class = "keyword token" > new < \/span > < span class = "token class-name" > ArcGISVectorTiledLayer < \/span >< span class = "punctuation token" >( < \/span > offlineVectorTileCache , itemResourceCache < span class = "punctuation token" > ) < \/span > ;
\/ \/ Créer une couche de tuiles uniquement avec le cache < \/span >
\/ \/var layer = new ArcGISVectorTiledLayer(offlineVectorTileCache); < \/span >
\/ \/ Créer une nouvelle carte avec la couche comme basemap < \/span >
var < \/span > map < span class = "operator token" > = < \/span > < span class = "keyword token" > new < \/span > < span class = "token class-name" > Map < \/span >< span class = "punctuation token" >( < span class = "keyword token" > new < \/span > Basemap ( layer ) ) ;
\/ \/ Appliquer la carte à la mapview
MyMapView.Map = map ;<\ /Span ><\ /Span ><\ /Span ><\ /Span ><\ /Span ><\ /Span ><\ /Span ><\ /Span ><\ /Span ><\ /Span ><\ /Span ><\ /Span ><\ /Span ><\ /Span ><\ /Span ><\ /Span ></ Span ></ Span ></ Code ></ Pre ></ P ></ P ></ P ></ P ></ P ></ P ></ P ></ P ></ P ></ P ></ P ></ P ></ P ></ P ></ P ></ P ></ P ></ P ></ P ></ P ></ Body ></ Html>