Le blog francophone consacré
aux technologies Esri

Pas à Pas - Convertir les données IGN BDTopo® en véritables volumes 3D

Depuis les premiers numéros du magazine SIGMAG, arcOrama collabore chaque trimestre à la rédaction d'un article didactique focalisé sur une fonctionnalité ou une application clé du système ArcGIS. Je reprends ci-dessous l'article publié dans le numéro 26 paru en octobre 2020, il présente en quelques étape comment convertir les données 2D de la BDTopo® de l'IGN en véritables objets 3D pour votre SIG.
    

Avec ArcGIS Pro, il est très simple de convertir des couches de données de votre SIG 2D en véritables couches 3D. Par exemple, à partir de base de données comme la BDTopo® de l'IGN, vous pouvez utiliser les emprises des bâtiments et les informations altimétriques associées pour construire les volumes 3D correspondant et les utiliser dans vos affichages et vos analyses 3D. Dans ce tutoriel, je vous propose une méthode simple pour générer automatiquement des bâtiments 3D mais également pour créer des arbres dans les zones de végétation. L'exemple choisi se trouve sur la commune de Calvi en Corse.

1. La base de données BDTopo® V3.0 de l'IGN propose différentes couches d'objets dont celle correspondant aux emprises de bâtiments (BAT_BATIMENT). Ces entités surfaciques disposent de plusieurs attributs intéressants pour une mise en 3D notamment le champ Z_MIN_SOL, Z_MAX_TOIT, NB_ETAGES ou encore HAUTEUR. Nous allons utiliser certaines de ces informations générer des entités multipatch dans ArcGIS.


2. Lorsque vous ajoutez la couche BAT_BATIMENT dans une scène 3D ArcGIS, cette dernière s'affiche en utilisant les coordonnées x,y,z des géométries. Telles que digitalisées par l'IGN, les altitudes z de ces polygones correspondent aux lignes de gouttière. Elles sont donc difficilement exploitables directement pour positionner les bâtiments à la bonne altitude au sol. Nous utiliserons plutôt l'information Z_MIN_SOL (z minimum au sol) pour définir cette altitude de base.


3. Pour cela, vous afficherez les propriétés de la couche puis vous sélectionnerez la rubrique "Altitude" qui permet de définir l'altitude de base des entités de la couche. Vous sélectionnerez alors les option "A une altitude absolue" puis l'option "Un champ" qui permet d'utiliser des valeurs z stockées dans un champ de la table. Enfin, vous préciserez le champ à utiliser : "Z_MIN_SOL".


4. L'étape suivante consiste à définir la hauteur des bâtiments pour pouvoir les extruder. Cette information est disponible dans l'attribut HAUTEUR de la couche. Affichez donc l'onglet "Apparence" puis choisissez le type d'extrusion "Hauteur min" pour mettre en volume les bâtiments à partir de leur altitude minimum. Vous sélectionnerez ensuite le champ HAUTEUR contenant la hauteur d'extrusion. Vos bâtiments s'affichent désormais en volume de manière dynamique, à partir des attributs de la table. On notera que, pour l'instant, cette couche reste une couche d'entités de type "polygone".


5. Pour obtenir une véritable couche d'entités 3D (multipatches) vous allez utiliser l'outil "Couche 3D vers classe d'entités" pour créer une nouvelle classe d'entités multipatch dans votre Géodatabase. Pour ne pas conserver la couleur rouge de la symbologie courante dans vos multipatches, vous cocherez l'option "Désactiver la couleur et la texture". Après l'exécution de l'outil, la nouvelle couche d'entités multipatch est ajoutée dans la scène.


6. Nous allons maintenant compléter notre scène 3D en y ajoutant des arbres. Bien que la BDTopo® ne contienne pas la localisation individuelle des arbres, elle propose une couche avec les zones de végétation. Nous allons ajouter cette couche (ODS_ZONE_DE_VEGETATION) dans la scène en tant que couche 2D, drapée sur le sol, simplement pour visualiser les zones. L'idée va consister à générer des arbres (entités ponctuelles) de manière aléatoire dans ces zones.
 

7. Pour cela, nous allons utiliser l'outil "Créer des points aléatoires". Il permet de créer des points de manière aléatoire en indiquant des zones de contraintes, un nombre de points maximum par zone et une distance minimum entre chaque point. Dans cet exemple nous avons spécifié un nombre maximum de 100 points par zone et une distance de 5 m. minimum entre chaque arbre. Etant donné que nous disposons de la nature des zones de végétation, nous pourrions modifier ces paramètres pour ajuster la densité d'arbres selon les zones.


8. Maintenant que les points des arbres sont créés, vous allez devoir qualifier leur espèce et leur hauteur pour pouvoir leur affecter un symbole 3D. Pour cela, vous allez créer un champ "Type" (de type Chaine de caractères) et un champ "Hauteur" (de type Double). Le premier sera complété en créant des valeurs de manière aléatoire et le second sera renseigné à l'aide d'une jointure sur les zones de végétation.


9. Pour récupérer les informations relatives à la nature des zones de végétation, nous allons réaliser une jointure entre nos arbres et nos zones de végétation. Pour cela, le champ CID de la couche des arbres (créé automatiquement pas l'outil de création de points aléatoires) permet la correspondance avec le champ OBJECTID de la couche des zones de végétation. Une fois la jointure effectuée, un simple calcul permet de récupérer cette valeur dans le champ "Type". Supprimer ensuite la jointure, vous n'en aurez plus besoin.


10. L'étape suivante consiste à affecter des hauteurs à nos arbres de manière aléatoire afin qu'ils ne soient pas tous représentés de la même taille. A l'aide de la calculatrice de champ d'ArcGIS Pro, vous pouvez utiliser l'expression Python illustrée dans la copie d'écran. Ici nous avons décidé de créer des valeurs entre 0 et 15 mètres. Pour plus de réalisme, vous pouvez modifier l'expression pour chaque zone afin d'obtenir des hauteurs plus cohérentes avec chaque type de végétation.


11. Nous disposons maintenant des éléments permettant de représenter nos arbres avec des symboles 3D qui varieront en fonction du type de végétation et de la hauteur. Pour cela vous chargerez, par exemple, le style de symbole système "Végétation 3D – thématique". Il ne vous reste alors qu'à définir la symbologie des arbres avec un rendu par valeurs uniques en utilisant l'option "Varier la symbologie par attribut" pour utiliser le champ "Hauteur" pour la "taille des symboles".


12. Maintenant que vos arbres s'affichent avec des symboles 3D, il ne vous reste plus qu'à convertir cette couche de points en une véritable couches d'entités 3D (multipatch). Pour cela, vous utiliserez à nouveau l'outil "Couche 3D vers classes d'entités". Comme pour les bâtiments, la couche ainsi créée peut être utilisée pour différentes visualisations en 3D mais aussi pour des analyses 3D telles que des analyses de visibilité, de potentiel solaire, d'intersection de volumes, … Les données peuvent également être modifiées (géométrie, couleur, texture, attributs) avec les outils de mise à jour d'ArcGIS Pro.


Partager cet article:

Rejoindre la discussion

    Les commentaires à propos de cet article: