Une exigence fréquente dans les cartes est que les entités d'une couche doivent être représentées par différents symboles afin de pouvoir les distinguer visuellement. Par exemple, dans une couche avec des entités d'arbres. Si rien d'autre n'est configuré, les arbres sur la carte ont toujours le même symbole. Avec la Unique Value Symbology, la couche peut cependant être ajustée pour afficher un symbole distinct pour chaque type d'arbre, comme illustré dans l'image suivante :
Unique Value Symbology
C'est la solution recommandée lorsqu'il n'y a pas trop de distinctions (permutations). Mais que faire si le nombre atteint des centaines/milliers et que des symboles complexes sont éventuellement nécessaires ?
À ce stade, il faut envisager l'utilisation de la Dictionary Symbology. L'exemple le plus emblématique est certainement celui des Military Symbology Styles avec des milliers de symboles différents et parfois très complexes, nécessaires dans le domaine militaire pour les cartes tactiques.
Dictionary Symbology – Military Symbology Styles
Pour être clair dès le départ, les couches avec Dictionary Symbology ne peuvent pas être affichées dans la légende de la carte, comme par exemple dans la capture d'écran de la Unique Value Symbology ci-dessus. Une légende avec des centaines de symboles serait peu pertinente.
Le style Dictionary Symbology
Avec les Dictionary Symbology Styles, les symboles sont générés dynamiquement à l'exécution en fonction des valeurs d'entrée. Il existe différents types de styles, ce blog se réfère ici aux Mobile Styles et Web Styles. Un style peut contenir des symboles pour différentes géométries (point, ligne, polygone). Les valeurs d'entrée sont typiquement des informations attributaires des entités qui doivent recevoir le symbole correspondant sur la carte. Cela signifie qu'un style doit être créé au préalable avec tous les composants nécessaires, la logique d'application et les options de configuration. La manière dont cela peut être réalisé est très bien décrite dans ce ArcGIS Blog.
Le résultat est un Mobile Style, qui est une base de données SQLite avec l'extension de fichier .stylx. Celle-ci peut être utilisée telle quelle directement dans ArcGIS Pro et dans les ArcGIS Maps SDKs for native (alias ArcGIS Runtime) hors ligne, mais aussi publiée en tant que Web Style Service et ainsi utilisée à la fois dans des applications desktop et web.
Cela étant dit, pour mieux comprendre Dictionary Symbology, il est utile comme toujours de tout essayer en pratique. Pour cela, j'ai légèrement modifié et mis à disposition le Mobile Style pour restaurants de l'auteur du blog ArcGIS mentionné plus haut :
Notre Mobile Style Restaurant génère des symboles complexes basés sur les attributs, permettant d'afficher en un coup d'œil le nom, le type de restaurant (ici pizzeria), la note, les horaires d'ouverture et bien plus encore, sans avoir besoin d'ouvrir une fenêtre contextuelle.
Composants d'un symbole de restaurant
Créer ou modifier un Mobile Style
Les Mobile Styles sont créés dans ArcGIS Pro. Les styles existants peuvent également servir de modèle pour en créer de nouveaux car leur structure est identique. Les Mobile Styles peuvent bien sûr être modifiés. Pour cela, ArcGIS Pro est nécessaire pour créer/modifier les composants graphiques et textuels des symboles, ainsi qu'un éditeur SQLite DB (par exemple le DB Browser for SQLite) pour la logique d'application et la configuration du style.
Dans ArcGIS Pro, il suffit de glisser-déposer le Mobile Style Restaurant dans le catalogue ; il apparaîtra alors sous Styles. Un clic droit dessus offre l'option de gérer les styles. En double-cliquant sur le style Restaurant dans la fenêtre de gestion, on peut modifier les composants existants ou en créer de nouveaux.
Après ouverture du style dans un éditeur SQLite DB, les options de modification se trouvent dans la table meta. Sous dictionary_configuration, on trouve les configurations ; dans notre style, seule l'option d'afficher ou non le nom du restaurant dans le symbole. Sous dictionary_script, se trouve la logique d'application sous forme d'un script ArcGIS Arcade, ici notamment le calcul des composants étoiles basé sur les valeurs d'entrée du rating.
Publier un Web Style Service
Les Mobile Styles peuvent être publiés depuis ArcGIS Pro vers ArcGIS Online et ArcGIS Enterprise. Il suffit dans ArcGIS Pro de faire un clic droit sur le style souhaité dans le catalogue et choisir Share as Web Style. J'ai déjà préparé cela, mais chacun peut publier son propre Web Style Service à partir du Mobile Style Restaurant. Lors de la publication, une structure composée de plusieurs fichiers JSON est créée contenant toutes les informations du style accessibles via URL. Un Web Style n'utilise donc pas directement le Mobile Style en arrière-plan.
Un petit conseil : les Web Styles peuvent aussi être hébergés sur un serveur web personnel. Il suffit avec le AGOL Assistant de télécharger tous les fichiers JSON via Download All (cliquer sur les trois points de l'élément Style puis choisir View Item Resources) et publier la structure décompressée telle quelle. Il faudra probablement quelques réglages côté serveur web pour l'accès.
Utilisation de Dictionary Symbology dans ArcGIS Pro
Dans ArcGIS Pro, les couches peuvent utiliser à la fois des Mobile Styles et des Web Styles pour leur symbologie. Pour nos restaurants, voici les étapes :
- Insérer une carte
- Le Restaurant-FeatureService dans l'élément Ribbon Ajouter des données avec Données depuis le chemin en tant que couche à intégrer
- Clic droit sur la couche et choisir Symbology
- Dans le menu Symbology sous Primary Symbology Dictionnaire sélectionner
- Dans le menu déroulant More cliquer sur l'option Add dictionary
- Ici, vous pouvez soit sélectionner le style mobile Restaurant depuis le système de fichiers, soit le Web Style (chercher les noms ou ID des Web Styles sous Portal/ArcGIS Online)
- Sous Symbology Fields et Text Fields, vous pouvez indiquer les noms de champs appropriés des attributs de la feature, s'ils diffèrent des valeurs d'entrée définies du style. Dans notre cas, tout peut rester tel quel.
- Modifier la configuration si souhaité (texte activé/désactivé)
- Terminé
Dictionary Symbology in ArcGIS Pro
Utilisation de Dictionary Symbology dans ArcGIS Maps SDKs for native
Dans tous les ArcGIS Maps SDKs for native, comme dans ArcGIS Pro, on peut utiliser pour les couches à la fois des Mobile Styles et des Web Styles pour la symbologie. Pour nos restaurants, il existe des exemples appropriés dans la documentation, ici par exemple pour .NET. Le code peut être repris entièrement, seuls les chemins/IDs vers nos propres styles doivent éventuellement être remplacés. Dans les Sample Viewers des SDK respectifs, vous pouvez aussi l'essayer en direct. Ce viewer est disponible dans les App Stores correspondants (Microsoft, Apple, Google, chercher ArcGIS Samples) et pour Java et Qt en téléchargement. Notre exemple s'appelle partout Custom dictionary style.
Dictionary Symbology in ArcGIS Maps SDKs for native
Les méthodes pour remplacer les noms de champs d'attributs de feature s'ils ne conviennent pas, ou pour définir la configuration (texte activé/désactivé) sont décrites dans la documentation du SDK correspondant, ici par exemple encore pour .NET.
Il est également intéressant de pouvoir interroger directement les symboles du style sans carte. Ce serait la solution par exemple pour des symboles pour des « Graphics individuels » dans GraphicsOverlays sans renderer, des sélecteurs de symboles personnalisés pour éditer ou utiliser les images de symboles en dehors du contrôle carte dans des tableaux ou sur des boutons. Comment faire est aussi décrit dans la documentation, ici pour .NET. Les images à utiliser hors du contrôle carte peuvent ensuite être générées avec les méthodes Symbol.CreateSwatchAsync() et RuntimeImageExtensions.ToImageSourceAsync().
Utilisation de Dictionary Symbology dans ArcGIS Maps SDKs for JavaScript
Pour Dictionary Symbology dans les applications web, seuls les Web Styles peuvent être utilisés. Avec le ArcGIS Maps SDKs for JavaScript, on peut fondamentalement faire la même chose que dans les SDK natifs. J'ai publié par simplicité le code JS pour notre exemple restaurant sur CodePen.
Dictionary Symbology in ArcGIS Maps SDKs for JavaScript
Avec l'ArcGIS Maps SDKs for JavaScript aussi, on peut interroger les symboles du style pour une « utilisation individuelle » dans GraphicsLayer ou pour utilisation comme images hors de la carte dans d'autres contrôles. J'ai aussi fourni un petit exemple sur CodePen. L'astuce ici est de donner au DictionaryRenderer, via la méthode GetSymbolAsync(), un Graphic avec seulement une table d'attributs. Cela renvoie le symbole correspondant qui peut être utilisé soit comme symbole d'un nouveau Graphic dans GraphicsLayer soit comme image hors de la carte à l'aide des méthodes de l'objet symbolUtils.
Si vous avez des questions ou suggestions sur ce sujet, utilisez simplement la fonction commentaire. Sinon, nous vous souhaitons beaucoup de plaisir et de succès lors de vos essais !