Tirer profit de la puissance des tuiles vectorielles
Depuis la fin de la mise à jour de mars d'ArcGIS Online ou la version 10.4 d'ArcGIS Server, les utilisateurs de la plateforme ArcGIS peuvent publier des services web de tuiles vectorielles. A l'aide d'ArcGIS Pro 1.2, vous pouvez concevoir une carte contenant des couches vectorielles et la publier sur votre portail en créant un paquetage de tuiles vectorielles.
Sur le même principe que les services de cartes d'images tuilées (Tiled Map Services), les tuiles vectorielles décrivent les données ponctuelles, linéaires et surfaciques de la carte, découpées en tuiles et généralisées en fonction du niveau d'échelle de chaque tuile. Cette notion de généralisation permet d'afficher un nombre d'entités vectorielles bien supérieur à celui d'un service d'entités (Feature Service) classique. Outre l'avantage d'être peu volumineuses et très rapides à générer, les tuiles vectorielles d'un même service peuvent être représenté avec différents styles de symboles et filtrages coté application cliente.
J'avais évoqué la notion de tuiles vectorielles dans le contexte des nouveaux fonds de cartes ArcGIS Online dans ce premier article, mais aussi dans celui-ci et celui-ci. Aujourd'hui, je vous propose de voir un exemple concret d'utilisation des tuiles vectorielles avec ses propres données dans le but de créer une application web.
J'ai pris l'exemple d'un jeu de données Open Data de l'APUR des 128000 emprises bâties sur la ville de Paris contenant, entre autres, les dates de construction (lorsque celles-ci sont connues). L'objectif est de construire une application web simple et efficace permettant la consultation de cette cartographie et de filtrer l'affichage par période.
Puisque l'on souhaite pouvoir filtrer les différentes périodes de construction, l'option de publier un service de carte d'images tuilées (Tiled Map Service) est exclue. On pourrait envisager la publication d'un service de carte dynamique (Map Service) ou d'un service d'entités (Feature Service) mais le nombre d'entités obligera à gérer des plages d'échelles d'affichage pour conserver de bonnes performances. La solution optimum est d'utiliser un service de tuiles vectorielles car elle permet d'afficher toutes les données à toutes les échelles sans soucis de performance tout en permettant de modifier le rendu des données à la volée et réaliser ainsi les filtrages dynamiques souhaités.
J'ai pris l'exemple d'un jeu de données Open Data de l'APUR des 128000 emprises bâties sur la ville de Paris contenant, entre autres, les dates de construction (lorsque celles-ci sont connues). L'objectif est de construire une application web simple et efficace permettant la consultation de cette cartographie et de filtrer l'affichage par période.
Puisque l'on souhaite pouvoir filtrer les différentes périodes de construction, l'option de publier un service de carte d'images tuilées (Tiled Map Service) est exclue. On pourrait envisager la publication d'un service de carte dynamique (Map Service) ou d'un service d'entités (Feature Service) mais le nombre d'entités obligera à gérer des plages d'échelles d'affichage pour conserver de bonnes performances. La solution optimum est d'utiliser un service de tuiles vectorielles car elle permet d'afficher toutes les données à toutes les échelles sans soucis de performance tout en permettant de modifier le rendu des données à la volée et réaliser ainsi les filtrages dynamiques souhaités.
Pour commencer, nous devons préparer la symbologie de la couche des bâtiments dans ArcGIS Pro, en définissant ici les classes de valeurs correspondant aux dates de construction.
Pour publier un paquetage de tuiles vectorielles, la première étape consiste à calculer l'index du tuilage. La génération de cet index se fait grâce à l'outil de géotraitement "Créer un index de tuiles vectorielles" (Create Vector Tile Index).
Cet index de type quadtree va déterminer le découpage le plus fin nécessaire pour obtenir des tuiles contenant le nombre maximum de sommets défini par l'utilisateur. Par défaut cette limite est proposée à 10000 sommets. Plus vos données vectorielles sont denses, plus l'index sera profond, ou autrement dit les tuiles seront petites (en superficie).
Une fois l'index calculé, nous pouvons générer le paquetage de tuiles vectorielles. Pour cela, un second outil de géotraitement nommé "Créer un paquetage de tuiles vectorielles" (Create Vector Tile Package) va nous permettre de créer le fichier *.vtpk nécessaire ensuite à la publication du service de tuiles vectoriel. Très rapide à créer, ce fichier contient l'ensemble des données vectorielles découpées en tuiles plus ou moins généralisées selon le niveau d'échelle de chaque tuile.
Une fois le paquetage de tuiles vectorielles généré, nous allons pouvoir l'ajouter en tant que nouveau contenu sur notre portail ArcGIS (ArcGIS Online ou Portal for ArcGIS à partir de la version 10.4).
Une fois le paquetage chargé, le service web de tuiles vectorielles sera automatiquement publié.
Le service web de mon exemple est accessible ici:
http://www.arcgis.com/home/item.html?id=945e76a6d90f4879bd2c83c1df783428
Il ne nous reste plus qu'a partager le service avec la cible souhaité (ici en "public"). Le service de tuiles vectorielles est donc accessible et peut être affiché dans la visionneuse web, dans les modèles d'applications web d'ArcGIS, dans les Story Maps, dans les applications générées avec Web AppBuilder ou encore dans toute application web personnalisée (développée avec l'API JavaScript 3.16 ou 4.0 beta).
Pour finaliser mon exemple, j'ai développé une application web avec l'API ArcGIS for JavaScript 3.16. Cela m'a permis de gérer le mécanisme de filtrage par période de construction (en cliquant sur la couleur dans la légende).
Le filtrage se fait en appliquant à la volée un style (JSON) conçu pour n'afficher que la classe de symbole correspondante. L'option "Afficher toutes les dates" ré-applique le style par défaut de la couche vectorielle.
Remarque:
Pour terminer, vous remarquerez que j'ai également utiliser le fond de carte vectoriel Light Gray pour l'habillage de la carte. J'ai créé 2 styles différents basés sur ce fond de carte standard d'ArcGIS Online afin de pouvoir gérer dans 2 couches vectorielles distinctes la partie référence et la partie toponyme. Ainsi, j'ai pu placer la couche vectorielle des toponymes "au dessus" de la couche de référence du fond de carte et la couche des bâtiments.