Le blog francophone consacré
aux technologies Esri

Feature Layers: Performance et gros volumes de données

Gérer de gros volumes de données dans des applications web est une problématique qui revient régulièrement dans le contexte de projets ArcGIS for Server. Bien qu'il puisse en générale se régler facilement pas une approche classique de services de carte dynamiques ou tuilés, celle-ci n'apporte pas l'interactivité attendue avec les entités de la carte. J'ai évoqué dans mes articles précédents l'intérêt d'utiliser les Feature Layers qui offrent une interactivité plus étendue avec les entités de la carte. Cependant, comment faire pour maintenir une performance optimum dans un navigateur, lorsque le volume de données à exploiter dans l'application est très important ? C'est l'objet de ce dernier article.

Le facteur principal limitant l'usage de gros volumes de données vectorielles dans une application web provient du fait qu'un navigateur web n'est pas capable de gérer de manière optimum plus de quelques milliers d'entités ponctuelles (ou quelques centaines pour des polygones). Si l'utilisateur de votre application doit attendre 10, 20 ou 30 secondes pour la récupération de 5 Mo de données JSON avant qu'elles soient affichées sur la carte, il aura déjà quitté votre application avant le premier zoom !


Je ne tenterais donc pas de charger 10 000 points dans Internet Explorer mais dans Chrome, est-ce qu'on peut l'envisager ? Pour se faire une idée plus précise des ces limites, cette application réalisée avec l'API ArcGIS for JavaScript, vous permettra de les estimer sur une plateforme donnée avec un navigateur donné. Cette application peut être adaptée pour estimer les limites sur des entités surfaciques. On notera que le sujet est un peu plus complexe puisqu'il s'agit du nombre d'entités mais également de la complexité des polygones (nombre de sommets).


Cette limite étant estimée, ce n'est pas parce que votre navigateur supportera l'affichage fluide de 5000 entités qu'il faudra le faire. D'une part, parce qu'afficher autant d'entités interactives sur une carte de 15'' n'a généralement pas de sens. D'autre part, parce qu'il faut aussi estimer le temps d'exécution de la requête et le temps d'acheminement des données sur le poste client.

La solution optimum est en réalité la combinaison des mécanismes évoqués dans mes précédents articles à savoir le tuilage vectoriel et la généralisation des entités. On notera cependant que ces paramétrages seront inefficaces s'ils ne s'accompagnent pas d'une réflexion sur les plages d'échelles d'affichage de chaque couche vectorielle pour réduire le nombre d'entité à ce qui est strictement nécessaire. La définition de ces plages d'échelles min. et max. est très simple à spécifier avec les APIs Web d'ArcGIS. Le développeur doit simplement gérer les propriétés minScale et maxScale sur l'événement Onload de la Feature Layer. Ci-dessous un exemple en JavaScript:

var fl = new esri.layers.FeatureLayer(url, options);
dojo.connect(fl, ‘onLoad’, function() {
fl.minScale = minScale;
fl.maxScale = maxScale;
});

Pour illustrer la combinaison de différents axes d'optimisation sur un cas concret, vous pourrez consulter cette application (et son code source) réalisée avec l'API ArcGIS for JavaScript. Celle-ci permet d'afficher des unités administratives (States, Counties et Census Blocks) sur l'ensemble des Etats-Unis. Le nombre d'entités est conséquent puisque l'utilisateur accède potentiellement aux 8 millions de Census Blocks présents dans la Géodatabase. En fonction de l'échelle, l'unité administrative la plus adaptée est affichée. La généralisation à la volée est également paramétrée en fonction de l'échelle. Ainsi, le nombre et la complexité géométrique des entités retournées par chaque requête est maîtrisé et permet de tenir un affichage d'une seconde environ quelle que soit l'échelle de la carte.



Enfin, on notera quelques fonctionnalités intéressantes sur cette application qui démontre, au passage, l'intérêt d'utiliser des Feature Layer dans une application web ArcGIS:

  • L'affichage de fenêtre de Pop-up contenant des attributs des entités.
  • Une option de cadrage automatique sur l'entité lorsqu'elle est cliquée par l'utilisateur.
  • La capacité de filtrer les entités de la couche en fonction d'une valeur d'attribut, avec le plus grand dynamisme puisque tout cela se fait coté client grâce aux Feature Layers.

Voilà pour ce tour d'horizon de l'usage des Feature Layers dans des applications web ArcGIS. Esri va continuer d'investir sur l'optimisation de la publication de Feature Service et sur l'utilisation de ces entités vectorielles dans les APIs web (et mobiles). De nouvelles options seront proposées dans ArcGIS for Server 10.1. Nous aurons l'occasion de revenir sur le sujet. 

Partager cet article:

Rejoindre la discussion

    Les commentaires à propos de cet article: