Le blog francophone consacré
aux technologies Esri

Feature Layers: Tuilage vectoriel

Après avoir introduit la notion de Feature Layers, je me focalise aujourd'hui sur le mécanisme de tuilage vectoriel proposé en standard dans ArcGIS. Le tuilage vectoriel est un sujet relativement récent dans les APIs de Web Mapping. Certains d'entre vous ont probablement déjà mis en œuvre des caches sur des services web ArcGIS, c'est-à-dire des tuilages d'images créées en masse avec ArcGIS Server pour accélérer l'affichage de la carte dans l'application cliente. Le tuilage vectoriel est un peu différent. L'idée est d'utiliser une grille statique (virtuelle et invisible pour l'utilisateur) pour réaliser une série de requêtes et retrouver les entités vectorielles à afficher sur la carte du client.

Quel est l'intérêt du tuilage vectoriel ?

Les motivations de la mise en place d'un tel mécanisme sont les suivantes:
  • Interaction dynamique avec les entités de la carte pour changer leurs symboles, réaliser des sélections, travailler avec attributs… sans avoir à requêter à nouveau le serveur.
  • Une fois chargée une première fois, les entités sont récupérées à partir du cache du navigateur puisque la même URL a déjà été émise.
  • Seules les entités nécessaires (c'est-à-dire dans l'étendue courante de la carte) sont téléchargées à partir du serveur.
  • L'expérience de l'utilisateur et les performances sont largement améliorées grâce à de multiples requêtes asynchrones qui ne retournent qu'un nombre raisonnable d'entités plutôt qu'une seule requête retournant toutes les entités.

Il est important de noter, en particulier pour les personnes familières des caches ArcGIS Server, que ce tuilage vectoriel est réalisé à la volée et qu'il n'a aucune existance sur le serveur. Pour les tuiles vectorielles, aucun cache n'est construit sur le serveur et aucune opération d'administration ou de maintena nce n'est à réaliser. Les tuiles vectorielles sont uniquement mises en cache sur le poste client durant sa session.

Comment le mettre en œuvre ?

Le tuilage vectoriel est un mécanisme standard proposé par les différentes APIs clientes ArcGIS dès lors que vous utilisez des Feature Layers. Pour tirer profit de ces capacités de tuilage, il vous suffira d'utiliser le mode ONDEMAND lors de la définition de votre Feature Layer. Ci-dessous un exemple de code pour l'API ArcGIS for JavaScript:

var featureLayer = new esri.layers.FeatureLayer(layer_url ,{
mode: esri.layers.FeatureLayer.MODE_ONDEMAND,
outFields: ["*"]
});

Pour bien comprendre le mécanisme, il suffit d'ouvrir cet exemple de la documentation de l'API Javascript. Vous observerez une couche d'entités (Feature Layer) contenant le réseau hydrographique qui s'affiche progressivement par blocs lors du déplacement sur la carte. Ces blocs correspondent aux différentes requêtes basées sur les différentes tuiles. Pour bien comprendre ce qui se passe, vous pouvez utiliser les outils de débogage de Firefox ou de Chrome et regarder les informations s'affichant dans l'onglet Net (ou Network) lorsque que vous déplacez la carte.

Initialement, vous noterez que les requêtes Rest (query) réalisées sur le Feature Service se terminent avec le code de statut normal (HTTP 200). Lorsque vous déplacez sur des zones déjà parcourues, les requêtes Rest (query) réalisées sur le Feature Service retournent désormais le code de statut http 304.


Ce code http 304 signifie tout simplement que le serveur indique qu'il a déjà répondu à cette requête (URL) et que le navigateur doit utiliser la réponse qu'il a déjà eu et qu'il a conservé dans son cache. Grâce à ce mécanisme de tuilage, le serveur ne renvoie jamais deux fois la même entité à un même utilisateur.


Un autre aspect important lors l'utilisation d'entités vectorielles dans des applications web consiste à pouvoir gérer le niveau de généralisation des géométries selon le niveau d'échelle de la carte. Les Feature Services d'ArcGIS Server proposent des solutions pour adresser cette problématique. Ce sera l'objet d'un prochain article.

Partager cet article:

Rejoindre la discussion

    Les commentaires à propos de cet article:

2 commentaires :

Nono a dit…

Link to vector tiling example is dead

Gaëtan Lavenu a dit…

Hi,

Esri Developer web site has been revamped and updated since 2011. The link has been corrected in my post. Thank you for your comment.