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 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é
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
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