Rechercher dans le blog

Ajoutez des graphiques dans vos applications cartographiques avec Chart.js

Ajoutez des graphiques dans vos applications cartographiques avec Chart.js

Bonjour, aujourd'hui je vais vous prĂ©senter un moyen simple pour intĂ©grer des graphiques pour reprĂ©senter vos donnĂ©es au sein d'une application cartographique rĂ©alisĂ©e avec l'API ArcGIS for JavaScript. Rendez-vous sur ce tutoriel  pour crĂ©er une carte Web en 5 minutes avec l'ArcGIS API for JavaScript et gĂ©nĂ©rer une apiKey pour utiliser les services d'ArcGIS Platform.
Pour cet exemple, nous utiliserons une bibliothèque tierce appelĂ©e Chart.js. Chart.js est une bibliothèque de graphiques JavaScript simple mais flexible qui facilite la crĂ©ation de graphiques simples pour vos donnĂ©es comme nous vous pouvons le voir en cliquant sur les dĂ©partements dans l'application ci-dessus. Vous pouvez dĂ©couvrir les diffĂ©rentes manières d'installer Chart.js via leur documentation d'installation.

Intégration de Chart.js dans votre application JavaScript

Une fois que vous avez terminé les étapes ci-dessus, nous pouvons maintenant utiliser Chart.js dans notre fichier JavaScript ...

require([ "esri/config","esri/Map", "esri/views/MapView", "esri/PopupTemplate", "esri/layers/FeatureLayer", "esri/widgets/Popup", "esri/tasks/support/Query", "https://cdn.jsdelivr.net/npm/chart.js@2.8.0","esri/widgets/Search"], function (esriConfig, Map, MapView, PopupTemplate, FeatureLayer, Popup, Query, Chart, Search)

Dans le tableau require, nous insérons le lien CDN vers la bibliothèque. Nous nommons ensuite le module Chart afin de pouvoir en créer une nouvelle instance plus tard dans notre code.

Interroger des données à partir d'une couche d'entités

Dans cet exemple, j'utilise une couche d'entitĂ©s de communes contenant plusieurs indicateurs Insee Ă  partir d'ArcGIS Online. Chaque fois que je clique sur une commune, je veux une fenĂªtre contextuelle pour afficher des informations sur les diffĂ©rentes catĂ©gories de CSP de la commune sur laquelle j'ai cliquĂ©. Pour cela, nous pouvons utiliser une Query, qui nous permettra d'obtenir des informations de notre couche d'entitĂ©s et d'interroger spatialement la couche pour n'afficher que les donnĂ©es sur lesquelles nous avons cliquĂ©. Une fois la promesse rĂ©solue, nous allons appeler la popup de la vue et envoyer les donnĂ©es Ă  setContentInfo. C'est une fonction qui crĂ©era le graphique pour nous. La fonction setContentInfo sera expliquĂ©e plus en dĂ©tail dans la section suivante. Voici l'extrait de code qui montre cela.

// Create a query to get data from the feature layer var query = new Query(); query.returnGeometry = true; query.outFields = ["CSP_PopActive_Cadres_Actifs", "CSP_PopActive_Cadres_Chômeurs", "CSP_PopActive_Ouvriers_Actifs", "CSP_PopActive_Ouvriers_Chômeurs", "CSP_PopActive_Agriculteurs_Acti", "CSP_PopActive_Employés_Actifs", "COMMUNE_NOM_COM"]; query.where = "1=1"; query.num = 50;

Créer un graphique à l'aide de Chart.js

Nous pouvons maintenant inclure le module Chart que nous avons instanciĂ© il y a quelque temps. Dans le code prĂ©cĂ©dent, nous avons dĂ©fini le paramètre de contenu sur une fonction appelĂ©e setContentInfo et transmis les donnĂ©es. Dans l'extrait de code suivant, nous allons crĂ©er cette fonction et l'utiliser pour initialiser nos graphiques dans la fenĂªtre contextuelle. Pour commencer, nous allons crĂ©er un nouvel Ă©lĂ©ment de canvas et lui donner l'identifiant de myChart.

var canvas = document.createElement('canvas'); canvas.id = "myChart";

Ensuite, nous allons configurer l'objet Structure de données avec nos propres données. Dans ce cas particulier, nous utilisons un graphique en anneau qui aurait une structure de données différente d'un graphique linéaire. Pour plus d'informations sur les différents types de graphiques que vous pouvez utiliser, consultez la documentation suivante sur le site Web Chart.js. Pour un graphique en anneau, l'objet ressemblerait à l'extrait de code suivant ci-dessous.

// Create a data object, this will include the data from the feature layer and other information like color or labels. var data = { datasets: [{ data: [results.CSP_PopActive_Cadres_Actifs, results.CSP_PopActive_Ouvriers_Actifs, results.CSP_PopActive_Employés_Actifs, results.CSP_PopActive_Agriculteurs_Acti], backgroundColor: ["#4286f4", "#41f4be", "#8b41f4", "#e241f4", "#f44185", "#f4cd41"] }], labels: [ 'Cadres actifs', 'Ouvriers actifs', 'Employes actifs', 'Agriculteurs actifs', ] };

Vous pouvez voir que dans le tableau de data, nous définissons les résultats que nous avons obtenus de notre couche d'entités. Chaque résultat représentera une partie du graphique en anneau, le backgroundColor est également défini pour chaque valeur de résultat. En outre, l'attribut labels est défini pour chaque élément du tableau de data.

Enfin, notre dernière étape consiste à créer un nouvel objet Chart avec les propriétés de data et de type. Ensuite, nous renvoyons l'objet Chart.

var myPieChart = new Chart(canvas, { type: 'doughnut', data: data });
return canvas;
Une fois que l'objet est de retour, nous devrions obtenir un graphique dans notre fenĂªtre contextuelle montrant des informations de CSP chaque fois que nous cliquons sur une commune. 

Conclusion

L'API ArcGIS for JavaScript facilite l'intégration de graphiques provenant de bibliothèques tierces telles que Chart.js. Il existe de nombreuses autres bibliothèques que vous pouvez intégrer dans votre application JavaScript comme celle-ci, ce qui vous permet de créer des cartes puissantes avec des fonctionnalités supplémentaires. N'hésitez pas à vous rendre sur la page GitHub pour consulter l'exemple complet.

Vous pouvez vous abonner Ă  ce blog pour lire d'autres articles sur le dĂ©veloppement Web d'applications cartographiques et dĂ©couvrir comment  rĂ©aliser des applications Web cartographiques et dynamiques. N'hĂ©sitez pas Ă  souscrire Ă  un plan gratuit ArcGIS for Developers pour dĂ©velopper vos propres applications cartographiques 2D ou 3D ! Cet article rĂ©sume ce que vous obtiendrez. Et pour en savoir sur l'API c'est ici.

Aucun commentaire:

Enregistrer un commentaire