Rechercher dans le blog

Découvrez les nouveautés des SDKs ArcGIS pour applications natives (version 200.2)

Les SDKs natifs d'ArcGIS, anciennement connus sous le nom de SDKs Runtime, vous permettent de développer des applications cartographiques natives spécifiques à vos systèmes d'exploitations. Avec d'importantes nouveautés sur les capacités 3D et temps réel, la version 200.2 d'août 2023 vient enrichir vos possibilités de développement avec ces SDKs. Dans cet article, nous allons voir ensemble ce que nous apporte cette mise à jour.

Améliorations des entités dynamiques pour l'intégration de données temps réel

Lors de la sortie des SDKs natifs en version 200.1, nous avions mentionné la mise à disposition des entités dynamiques (dynamic entities) permettant de travailler avec des données issues de flux temps réel grâce à un ensemble d'APIs robustes et performantes dans les SDKs .NET, Swift, Java, et Qt. La version 200.2 y apporte des nouveautés et améliorations, et permet également au SDK Kotlin de se doter à son tour de cette capacité.
 

Les Flux Personnalisés (Custom Feeds)

La version initiale des entités dynamiques pouvait s'attacher à des flux de données provenant d'ArcGIS Velocity ou d'ArcGIS GeoEvent Server.  Désormais, il est possible d'utiliser ces nouvelles capacités d'entités dynamiques avec d'autres sources de données.

La version 200.2 inclut de nouvelles APIs qui facilitent la définition d'un flux d'entités dynamiques personnalisé pour fournir des entités dynamiques à partir de n'importe quelle source. Il suffit de fournir quelques informations sur le schéma des données entrantes et d'implémenter une logique pour convertir votre flux personnalisé en géométrie et/ou en attributs. Le SDK crée une nouvelle observation et vous bénéficiez automatiquement des mêmes performances qu'auparavant en matière d'ingestion de données, d'affichage, d'événements de mise à jour, d'historique des observations, d'options de suppression, etc.

Autres améliorations des entités dynamiques

Esri a également approfondi l'intégration des entités dynamiques avec d'autres parties de l'API. En tant que développeur, vous pouvez désormais connecter des contrôleurs de caméra et des analyses interactives (telles que la ligne de vue ou le panorama) à une entité dynamique, qui sera automatiquement mise à jour lorsque de nouvelles observations seront fournies.
Cette nouvelle version propose également une amélioration et une optimisation des performances. Vous pouvez désormais spécifier un sous-ensemble de champs d'un flux et vous concentrer uniquement sur les parties de votre flux de données qui sont importantes pour votre application. Esri a également réduit significativement l'empreinte mémoire en compressant le stockage des attributs, et l'analyse des observations est jusqu'à 4 fois plus rapide qu'elle ne l'était à la version 200.1.

Mode de placement relatif pour les objets 3D et fond de carte 3D

Les couches de scène d'objets 3D sont prises en charge par les SDKs ArcGIS Runtime depuis la version 100.0. Elles font partie de la spécification I3S et vous permettent d'ajouter des données SIG telles que des éléments 3D dans votre scène. La version 200.2 des SDK Native Maps prend en charge le mode de placement relatif en plus du mode de placement absolu, qui permet aux éléments d'une couche de scène d'objets 3D d'être placés par rapport à la surface d'une scène.
Cette nouvelle fonctionnalité permet notamment de consommer la couche 3D OSM Buildings layer (couche de Bâtiments 3D OSM) publiée par Esri dans le Living Atlas, que vous pouvez désormais inclure à un fond de carte dans vos applications 3D afin de fournir un contexte riche et réaliste pour vos données, partout dans le monde. 
L'exemple de code ci-dessous montre comment créer un fond de carte qui combine la couche de bâtiments OSM et une couche de tuiles vectorielles appropriée en utilisant le SDK ArcGIS Maps pour Qt, mais tous les concepts s'appliquent également aux SDK Java, Kotlin, .NET et Swift :
// créé une couche de tuile vectorielle en utilisant l'identifiant de l'item du portail contenant le fond topographique utilisé dans le fond de carte OSM 3D
ArcGISVectorTiledLayer* vtl = new ArcGISVectorTiledLayer(new PortalItem("1e7d1784d1ef4b79ba6764d0bd6c3150", this), this);

// créé une nouvelle couche de scène en utilisant l'identifiant de l'item du portail contenant les bâtiments dans le fond de carte OSM 3B
ArcGISSceneLayer* osm_blds_lyr = new ArcGISSceneLayer(new PortalItem("ca0470dbbddb4db28bad74ed39949e25", this), this);

// crée un nouvel objet basemap (fond de carte)
Basemap* basemap = new Basemap(this);

// ajoute les deux couches aux baselayers du fond de carte
basemap->baseLayers()->append(vtl);
basemap->baseLayers()->append(osm_blds_lyr);

// créé une nouvelle scène avec le fond de carte
m_scene = new Scene(basemap, this);
Remarque : les services de fonds de carte 3D d'Esri sont actuellement en version bêta et devraient être mis à disposition pour une utilisation en production dans le courant de l'année. Les SDKs natifs prennent actuellement en charge un sous-ensemble des couches de ces fonds de carte, et le code ci-dessus construit un objet Basemap de manière programmatique en utilisant ces couches prises en charge. Lors de la publication d'une scène web contenant la couche 3D des bâtiments OSM, les SDKs natifs ne peuvent actuellement pas lire cette couche si elle fait partie du fond de carte et elle doit être ajoutée aux couches opérationnelles de la scène web. La prise en charge complète des fonds de carte 3D comprenant les arbres et les étiquettes figure sur la roadmap des prochaines versions des SDKs natifs.
 
La couche de bâtiments OSM peut également être ajoutée en tant que couche opérationnelle dans les SDKs natifs, comme toute autre couche de scène.
La couche de bâtiments OSM fournissant des bâtiments détaillés à l'échelle mondiale, Esri s'est assuré qu'elle soit performante dans les SDKs natifs, qu'elle fasse partie de la carte de base d'une scène ou de ses couches opérationnelles.

Filtrage des entités dans des couches de scènes

La nouvelle couche de bâtiments OSM fournit un excellent contexte pour vos données, mais pour visualiser correctement vos données, vous pourrez avoir besoin de supprimer certains bâtiments de la couche de bâtiments OSM, par exemple pour voir un projet de développement. Pour cela, Esri a implémenté le filtrage des entités. Les entités de la couche de bâtiments OSM peuvent être filtrées à l'aide d'une emprise géométrique ou en spécifiant les entités à afficher ou à masquer.
La vidéo ci-dessous montre l'ajout de la couche de bâtiments OSM en tant fond de carte. La ligne rouge indique la limite d'un jeu de données personnalisé de modèles de bâtiments de San Francisco. Un filtre est appliqué pour masquer les bâtiments OSM dans la limite de ce jeu de données personnalisé, qui est ensuite ajouté et affiché sans conflit avec les bâtiments OSM.
Le filtrage n'est pas limité aux bâtiments OSM 3D. Vous pouvez filtrer des données dans n'importe quelle couche de scène d'objets 3D, et même dans n'importe quelle couche de scène de points. Il existe trois manières d'effectuer une opération de filtrage, que nous allons voir ensemble ci-dessous.

1 : Filtre par entité

Cette méthode permet d'identifier les entités, puis d'appliquer un filtre à celles-ci à l'aide des nouvelles méthodes ajoutées à ArcGISSceneLayer. Une seule entité peut être masquée à l'aide de ArcGISSceneLayer::setFeatureVisible(), et plusieurs entités peuvent être masquées en même temps à l'aide de ArcGISSceneLayer::setFeaturesVisible(). Les entités masquées peuvent être rendues visibles à nouveau en appelant ArcGISSceneLayer::resetFeaturesVisible.

2 : Filtre spatial

Le filtre spatial permet de filtrer les entités dans l'espace en utilisant un ou plusieurs polygones en entrée. Une nouvelle classe appelée SceneLayerPolygonFilter a été ajoutée pour définir le filtre. Le filtre est défini par un ensemble de polygones et une relation spatiale (SpatialRelationship). La relation spatiale vous permet de choisir si vous souhaitez filtrer les entités situées à l'intérieur (contains) ou à l'extérieur (disjoint) des polygones fournis. Dans le cas de contains, tout ce qui se trouve à l'extérieur des polygones sera filtré et vice versa pour disjoint. Une fois le filtre créé, il est appliqué à la couche ArcGISSceneLayer via une propriété nouvellement ajoutée appelée polygonFilter. Vous pouvez utiliser le filtrage en utilisant un polygone seul, mais aussi plusieurs polygones à la fois, des polygones multi-parties, et des polygones avec des trous.
Le filtre spatial est utile lorsque toutes les entités d'une zone doivent être filtrées. Pensez par exemple à filtrer l'étendue d'un jeu de données lorsque vous l'ajoutez à une application dont le contenu 3D fait partie du fond de carte. 

3 : Publication des scènes web avec des filtres

Les scènes web peuvent être publiées directement avec des filtres (à la fois par entité et/ou spatial) appliqués à une ou plusieurs couches opérationnelles. Les informations de filtrage peuvent être lues et honorées par les SDK natifs. Un nouveau modèle représentant les données qui ont été filtrées peut alors être ajouté comme couche opérationnelle pour la visualisation.

Agrégation des entités ponctuelles

La création d'une carte contenant un grand nombre de données peut s'avérer difficile. Il est très facile de se laisser submerger par le contenu d'une carte, surtout si l'on tient compte des multiples niveaux de zoom, et si l'on n'y prend pas garde, les données peuvent rapidement devenir denses et illisibles.
L'une des stratégies permettant de gérer cet encombrement est la réduction des entités. Il existe plusieurs façons d'y parvenir, l'une d'entre elles étant l’agrégation. Avec l'agrégation, une logique est appliquée pour regrouper les clusters d'entités visuellement denses en un seul marqueur cartographique qui représente ces multiples entités. Ce marqueur est affiché sur la carte à la place des entités qu'il représente. La version 200.2 introduit la possibilité d'afficher des couches d'entités ponctuelles aggrégées créées dans une carte Web.
L’agrégation est une fonctionnalité puissante et complexe, et Esri compte en améliorer le support au cours des prochaines versions. Cette prise en charge initiale comprend la lecture des rendus en agrégats à partir de cartes Web, l'identification des éléments d'un agrégat et une API permettant d'activer ou de désactiver l’agrégation pour des couches individuelles. Le support futur inclura l'étiquetage, la sélection et la mise en surbrillance, ainsi qu'une API permettant de contrôler entièrement l’agrégation directement à partir de votre code.

Éditeur de géométrie

L'éditeur de géométrie a été introduit dans la version 200.1 des SDKs Swift, Kotlin, Qt et Java. La version 200.2 l'ajoute au SDK .NET. A terme, il remplacera l'actuel éditeur d'esquisses.
Avec cette mise à jour, de nouvelles capacités sont désormais disponibles dans l'éditeur de géométrie :
  • des fonctionnalités de rotation et d'échelle, ce qui permet une rotation et une mise à l'échelle interactives de la géométrie (il existe de nouvelles méthodes correspondantes pour contrôler la rotation et l'échelle de manière programmatique);
  • un nouvel outil Forme, qui simplifie la création de formes prédéfinies telles que les ellipses, les triangles, les rectangles et les flèches, sous forme de polylignes ou de polygones.
L'Éditeur de géométrie étant maintenant disponible dans tous les SDKs natifs d'ArcGIS, Esri annonce officiellement l'abandon de l'Éditeur d'esquisses. Il sera cependant encore disponible pendant un certain temps, mais notez que les futures améliorations de l'édition géométrique s'afficheront dans l'Éditeur de géométrie.

Annonce de la dépréciation de l'API QLM

Le SDK pour Qt a toujours fourni deux API : une API C++ et une API QML. L'API QML vous permettait d'écrire à la fois votre interface utilisateur et votre logique métier en QML, mais au fil du temps, les pratiques recommandées ont préconisé de les séparer. Conformément à cette recommandation, Esri déprécie l'API QML du SDK ArcGIS natif pour Qt. 
La version 200.2 est donc la dernière version à introduire des nouveautés pour l'API QLM du SDK Qt, et la version 200.4 sera la dernière à inclure l'API QLM. Cela signifie qu'à partir de la version 200.5, vous pourrez toujours écrire votre interface utilisateur en QML, mais votre logique métier devra utiliser l'API C++. 
Notez cependant que l'API QML continuera à être prise en charge pendant plusieurs années et suivra le cycle de vie du produit défini par le support d'Esri :

Autres améliorations

En plus des améliorations détaillées ci-dessus, cette nouvelle version offre plusieurs nouveautés supplémentaires :
  • Les SDKs supportent Arcade 1.23 ;
  • Mise à disposition des modèles d'entités personnalisés pour les sous-types d'entités ;
  • Le SDK Kotlin inclut les composants "loupe" et "callout" ;
  • Le SDK Java utilise désormais Metal pour le rendu sur macOS ;
  • Le SDK Qt utilise désormais Metal pour le rendu sur iOS et macOS, et Direct3D sur Windows.
Cette mise à jour corrige également des bugs, et maintient les bibliothèques tierces à jour. Tous les détails sont disponibles dans les notes de version, à aller consulter selon le SDK natif que vous utilisez : .NET, Java, Kotlin, Qt, ou Swift.

Télécharger les SDKs et commencer à développer

Pour mettre la main sur la version 200.2, rendez-vous sur le site Web des développeurs ArcGIS, accédez à la page du SDK ArcGIS Maps de votre choix et téléchargez le SDK.

Vous pouvez également référencer le SDK via NuGet, Gradle pour Java ou Kotlin, ou Swift Package Manager. Si vous n'avez pas l'habitude de développer avec les SDK ArcGIS Maps pour les applications natives, chaque SDKs (.NET, Qt, Java, Kotlin et Swift) dispose d'une riche documentation, d'une référence API, de tutoriels et d'exemples de codes. Il vous suffit de vous inscrire pour obtenir un compte gratuit ArcGIS Developer (vous pouvez également utiliser un compte ArcGIS Online si vous en possédez un) et vous pourrez accéder à tout ce dont vous avez besoin commencer à développer votre application.

Aucun commentaire:

Enregistrer un commentaire