Rechercher dans le blog

Un mardi, une appli #17 Population mondiale en 3D

Bonjour, aujourd'hui je vais vous présenter une application développée par ma collègue d'Esri Suisse Raluca. Ce prototype a été conçu avec l'API ArcGIS for JavaScript. Le code est retrouvable sur son Github

I/ L'application

L'application présente une scène 3D présente une Estimation de la population mondiale pour 2020 sous forme de grille. La grille a une résolution d'environ 110 km. On peut utiliser le slider pour filtrer les cellules en fonction du nombre de personnes par unité de grille.
Les données raster de population sont du SEDAC

II/ L'aspect technique

SimpleRenderer permet de rendre toutes les entités d'une couche avec un seul symbole. Ce moteur de rendu peut être utilisé pour visualiser simplement l'emplacement des entités géographiques. Ici le symbole est un cube de couleur bleu.

const renderer = new SimpleRenderer({ symbol: new PointSymbol3D({ symbolLayers: [new ObjectSymbol3DLayer({ resource: { primitive: "cube" }, material: { color: "#00E9FF" }, anchor: "bottom", width: 60000, depth: 60000, height: 60000 })] }) });

La grille est issue d'une couche.
Dans cette application, on utilise la fonction summaryStatistics. C'est une fonction de génération de statistiques d'attributs dans une couche en fonction des valeurs renvoyées par un champ donné. Renvoie un objet contenant diverses statistiques décrivant un ensemble de valeurs renvoyées par un champ (ou une expression) dans une couche.

Les paramètres de la méthode :
- la couche sur laquelle on fait les stats
- Le nom du champ numérique pour lequel les statistiques récapitulatives seront générées. 

summaryStatistics({ layer: populationLayer, field: "population_count" }) .then((result) => { const slider = utils.createSlider(Math.log(result.min), Math.log(result.max)); view.whenLayerView(populationLayer).then(function (populationLayerView) { slider.on('update', function (values, handles, unencoded) { const min = parseInt(Math.exp(unencoded[0])); const max = parseInt(Math.exp(unencoded[1])); populationLayerView.filter = { where: `population_count >= ${min} AND population_count <= ${max}` }; }); }); }) .catch((err) => { console.log(err); });

La fonction parseInt() analyse un argument de chaîne et renvoie un entier de la base spécifiée (la base dans les systèmes numériques mathématiques).

populationLayerView.filter = { where: `population_count >= ${min} AND population_count <= ${max}` };

Vous pouvez vous abonner à ce blog pour lire d'autres articles sur le développement Web d'applications cartographiques et découvrir comment l'ArcGIS API JavaScript est une superbe alternative à Google Maps !
Vous voulez vous aussi 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