Le blog francophone consacré
aux technologies Esri

La version 4.17 de l'API JavaScript ArcGIS est disponible

La 3ème mise à jour de l'année pour l'API JavaScript ArCGIS est disponible depuis quelques jours. Je reviens donc aujourd'hui sur cette dernière version 4.17 sortie le 8 octobre (on notera aussi la sortie d'une version 3.34 pour l'ancienne génération de l'API). Comme à chaque mise à jour, cette nouvelle version contient une série de nouvelles fonctionnalités et d'améliorations. 


Un des thèmes majeurs pour cette version 4.17 c'est la performance, en particulier si vous travaillez avec des volumétries très importantes de données. Esri encourage vivement les développeurs à tester leurs applications avec cette nouvelle version. Vous noterez des améliorations sensibles de performances sur les couches d'entités, les couches dont les contenus sont stockés côté client et les couches de scènes de points. 

Améliorations des performances sur les couches d'entités

À chaque version, les développeurs de l'API JavaScript ArcGIS recherchent des moyens d'optimiser davantage les performances. Cette version apporte des améliorations de performances critiques pour les couches d'entités. Comme pour presque toutes les améliorations de performances, l'impact et l'amélioration visuelle des applications varient en fonction des caractéristiques de l'application, des données qu'elle charge et des propriétés des services eux-mêmes. Les applications qui verront les gains les plus notables avec cette version sont:

  • les applications utilisant un grand nombre d'attributs
  • les applications avec un grand nombre d'entités (nécessitant plusieurs requêtes serveur de tuiles d'entités)
  • les couches d'entités qui utilisent des symbologies de remplissage
      

Plus d'un million d'emprises de bâtiments chargées dans une carte avec
l'API 4.16 et 4.17. A noter la vitesse mais aussi l'aspect progressif du chargement.

Temps de chargement plus rapide des applications avec de gros volumes de données:
Esri a révisé le pipeline de traitement des entités, ce qui améliore considérablement le temps de chargement des applications devant charger de grandes quantités de données. Bien que les améliorations de performances varient considérablement d'une carte à l'autre, vous constaterez que les cartes qui utilisent de nombreux attributs en bénéficient le plus.

Chargement progressif des tuiles d'entités:
Esri a également amélioré l'expérience lors du chargement de jeux de données contenant de nombreuses entités. Comme vous le savez peut-être déjà, les entités sont demandées selon des tuiles conçues pour une mise en cache haute performance. L'API dessine les entités de manière incrémentale au fur et à mesure de leur chargement, ce qui entraîne une progression visuelle de la tuile au cours de son chargement. Cela peut être observé dans l'animation ci-dessus qui compare le chargement de la couche d'entités ci-dessus.

Meilleur traitement des données et gestion de la mémoire:
L'API demande, par défaut, des données au format PBF. Désormais, l'API conserve les entités encodées en PBF dans leur format binaire natif, en utilisant des lecteurs binaires pour travailler directement sur les données compressées des entités. Cela permet au traitement des données de mieux évoluer et de réduire la pression mémoire, car nous n'avons plus besoin de désérialiser les fonctionnalités individuelles.

Couches de flux plus stables et plus souples

Pour adresser la demande de plus en plus importante des développeurs de pouvoir créer des applications visualisant et analysant des flux de données en temps-réel avec une volumétrie et une vélocité (fréquence d'actualisation) croissante, Esri a réorganisé la classe StreamLayer pour répondre à ces deux points:

  • Prise en charge d'un plus grand nombre de messages par seconde: Désormais, l'API permet de traiter des flux de plusieurs centaines de milliers en appliquant une nouvelle logique d'affichage des données adaptée aux capacités mémoire et CPU/GPU du client pour évité tout problème de saturation.
  • Implémentation de WebSockets personnalisés: Au delà de l'implémentation des couches de flux (StreamLayer) issues de GeoEvent Server ou d'ArcGIS Velocity (nouveau nom d'ArcGIS Analytics for Iot), l'API a été étendue pour permettre l'usage de WebSockets personnalisés pour vous connecter à n'importe quelle source de flux. 
  
Vos couches d'entités gérées côté client sont plus rapides
   
Les couches d'entités de type CSVLayer, FeatureLayer et GeoJSONLayer créés à partir de graphiques (et donc gérées côté client) tirent désormais parti d'un worker pour stocker les données. Cela signifie que vous pouvez effectuer plus de requêtes sur ces couches côté client dans un processus d'arrière-plan sans interférer avec l'interface utilisateur.

Pour les ensembles de données plus volumineux, vous remarquerez peut-être également que ces couches affichent la même expérience de chargement progressif (améliorée) décrite précédemment pour les FeatureLayers. Plutôt que d'attendre qu'une tuile entière soit chargée et analysée, les entités sont affichées dès qu'elles sont prêtes à être affichées.
  
Les couches côté client comme cette couche CSV tirent désormais parti d'un worker
pour stocker les données, ce qui permet une expérience plus fluide.
  
  
Couches de tuiles vectorielles: meilleure navigation et affichage

Les couches de tuiles vectorielles proposent dorénavant une expérience améliorée lors du chargement et de l'interaction avec la carte. Au fur et à mesure que vous effectuez des zooms avant ou arrière et que vous naviguez sur la carte, les symboles s'affichent et disparaissent, offrant une transition plus "douce" entre les changements d'échelle. Plusieurs optimisations des algorithmes pour la gestion des conflits entre les étiquettes le long des limites des tuiles et pendant la rotation de la carte ont résolu certains problèmes rencontrés dans les versions précédentes avec des étiquettes superposées ou coupées qui traversaient les limites des tuiles.

L'image ci-dessous illustre les résultats de l'algorithme de déconfliction d'étiquette entre la version 4.16 et 4.17.
  

  
Capacités 3D

Nouveaux motifs de remplissage de polygones:
Vous pouvez désormais utiliser de nouveaux motifs de remplissage pour vos couches de polygones pour mettre en évidence, par exemple, des zones réglementaires ou des zones spécifiques sur des couches de photomaillage 3D. Vous pouvez appliquer le même modèle à tous les polygones de la scène ou les classer en fonction d'attributs. Dans l'exemple ci-dessous, les motifs de remplissage de polygones sont utilisés pour visualiser les zones de développement urbain.



Performances sur les couches de scène:

Les couches de scène (SceneLayer) se chargent et s'affichent désormais jusqu'à deux fois plus rapidement en utilisant des couches publiées avec des SLPK en version 1.7 de la spécification I3S. Ceci est particulier notable pour les couches de scène de points ce qui vous permettra le rendu en 3D efficace d'une plus grande quantité de symboles ponctuels. Semblable aux couches de photomaillages 3D (IntegratedMeshLayer) et aux couches de scène d'objets 3D (SceneLayer), vous pouvez mettre à jour vos SLPK existants à l'aide de l'outil de conversion I3S pour bénéficier de ces améliorations de performances. Pour plus de détails, lisez la rubrique de la documentation "Utilisation des couches de scène".

    
Capacités cartographiques
  
Outre les contraintes de rotation, d'échelle et de zoom déjà prises en charge sur la carte, vous pouvez désormais contraindre la navigation à un polygone ou à une étendue. Ceci est pratique pour forcer la concentration de l'utilisateur sur les emplacements pertinents et minimiser les distractions provenant d'autres zones périphériques de la carte. Ainsi, par exemple, vous pouvez limiter la vue à la limite d'une zone d'intérêt, d'une ville ou même d'un pays.


Pour une expérience utilisateur plus agréable, Esri a également ajouté des effets d'animation de fondu d'entrée et de sortie à la classe LayerView pour gérer l'affichage/désaffichage d'une couche dans une carte 2D.
    
Prise en charge de la dimension temporelle pour les couches WMS
  
La classe WMSLayer  prend désormais en charge les couches dont la dimension temporelle a été activée. Vous pouvez utiliser le widget TimeSlider pour animer vos couches sur une période de temps, ou vous pouvez définir un timeExtent sur la couche pour ne demander que les données qui sont dans l'intervalle de temps donné. La propriété timeInfo est définie lors de l'initialisation de l'objet WMSLayer si la couche a une ou plusieurs dimensions temporelles.
  
      
Capacités sur les couches raster
  
À l'aide de la nouvelle classe VectorFieldRenderer, vous pouvez symboliser les données raster à l'aide de symboles vectoriels. Ceci est souvent utilisé pour visualiser la direction et l'amplitude de flux dans les données matricielles de météorologie et d'océanographie. La direction du raster définit les angles, tandis que la magnitude du raster définit la taille du symbole.

  
Nouvelles couches WCS

Une nouvelle classe WCSLayer (beta) vous permet dorénavant d'afficher des données raster à partir d'un  d'un service de type "Web Coverage Service OGC".
  
Mises à jour de widgets

Plusieurs mises à jour ont été apportées aux widgets suivants:
  • Print: ce widget expose désormais de nouvelles propriétés et événements pour les développeurs souhaitant personnaliser l'expérience d'impression. Par exemple, les événements complete et submit peuvent être utilisés par les développeurs pour gérer les résultats et le comportement d'impression.
  • Bookmark: ce widget a été amélioré avec la possibilité d'ajouter ou de modifier une miniature. De plus, auparavant, seule l'étendue du géosignet était stockée. Les utilisateurs peuvent désormais créer des géosignets qui capturent également l'échelle et la rotation actuelles.
  • FeatureTable: ce widget a amélioré l'accessibilité et propose une nouvelle prise en charge de la modification des champs de type "date".
  • FeatureForm: ce widget a désormais la capacité de limiter les plages min/max pour l'entrée de date ainsi que d'inclure ou non une entrée pour l'heure. Ceci est réalisé en configurant la nouvelle interface utilisateur DateTimePickerInput .
  • TableList : le nouveau widget TableList fournit un moyen d'afficher une liste de tables dans une carte.
  
Modules ES - Evolution des développements

Esri a largement progressé dans la fourniture de l'API JavaScript ArcGIS sous forme de modules ES (la norme ECMAScript pour travailler avec des modules), ce qui permettra aux développeurs d'intégrer plus facilement l'API avec des frameworks et des outils de développement modernes. Ce projet est actuellement en développement et n'est pas destiné à être utilisé dans des applications de production. Esri prévoit de publier les modules en version beta pour la version prochaine (4.18) avec une version finale (utilisable en production) prévue pour début 2021.

La consommation de l'API avec les  modules ES @arcgis/core sera une option supplémentaire aux côtés des modules AMD existants. Si vous le souhaitez, vous pouvez déjà essayer ces modules pendant leur phase de développement et partager ainsi vos retours avec l'équipe de l'API JavaScript d'Esri à partir de ce projet GitHub.

Fin du support des navigateurs IE 11 et Edge Legacy

La prise en charge d'Internet Explorer 11 et Edge Legacy pour une utilisation avec ArcGIS API for JavaScript est devenue obsolète à partir de la version 4.16. La version 4.17 est la dernière version prenant en charge Internet Explorer 11 et les navigateurs Edge Legacy. Cela signifie que les applications créées avec 4.18 et au-delà ne fonctionneront pas dans IE11 / Edge Legacy. Les utilisateurs de vos applications JavaScript ArcGIS 4.x sont donc fortement encouragés à passer à un navigateur moderne tel que Mozilla Firefox, Google Chrome, le nouveau Microsoft Edge ou Safari.

Consultez ce récent article qui couvre ArcGIS Online, ArcGIS Enterprise et l'API JavaScript ArcGIS pour en savoir plus.
 
Et bien plus encore...
 
Cet article n'est qu'un aperçu des principales évolutions de la version 4.17. Vous pouvez en savoir plus sur la totalité des évolutions dans les notes de mise à jour et jouer avec les nouveaux exemples de code relatifs à cette version 4.17 pour avoir une idée des nouvelles fonctionnalités.
 

Partager cet article:

Rejoindre la discussion

    Les commentaires à propos de cet article: