Utiliser l'Open Data et ArcGIS pour mettre Paris en 3D
A plusieurs reprises ces derniers mois, j'ai eu l'occasion d'expliquer sur ce blog les évolutions de la plateforme ArcGIS concernant la gestion et la diffusion de données SIG 3D. Avec l'arrivée de nouvelles solutions comme CityEngine, Portal for ArcGIS et ArcGIS Pro, la génération et l'exploitation de données 3D est à la portée de tous les utilisateurs de la plateforme ArcGIS. En particulier depuis la version 10.3.1 d'ArcGIS, il n'a jamais été aussi simple de générer des modèles 3D et de les diffuser sur le web.
Afin de vous montrer ces nouvelles capacités, j'ai pris quelques données Open Data (essentiellement 2D) sur la ville de Paris afin de concevoir puis de publier sur le web une scène 3D. Je résume dans cet article les principales étapes et outils utilisés.
Pour les plus pressés, vous visualiserez ci-dessous le résultat (la scène peut aussi être ouverte dans une nouvelle fenêtre en cliquant ici):
La préparation des bâtiments
Le premier objectif était de pouvoir construire des modèles de bâtiments en 3D un peu plus évolués qu'une simple extrusion réalisée à l'aide d'une emprise 2D et d'une hauteur. J'ai tout d'abord téléchargé les fichiers des emprises bâties à partir de la page Open Data de l'APUR. A l'aide des informations sur le type de toiture dominante (tuile, zinc, ardoise, ardoise, béton,...), j'en ai déduit une forme de toit (mansardé, plat, 2 pentes, ...). Bien qu'elle ne soit pas exacte, cette approche permet d'obtenir des volumes plus réalistes.
Pour construire ces volumes, j'ai appliqué à mes emprises 2D de bâtiments, la règle procédurale décrite récemment dans cet article. Ceci m'a permis de créer en sortie une classe d'entités multipatch contenant les 127 000 bâtiments en 3D.
L'ajout de bâtiments remarquables
Afin de donner plus de réalisme à l'ensemble de la scène, j'ai décider de compléter ces modèles "procéduraux" avec une série de modèles spécifiques pour une quarantaine de bâtiments remarquables (Tour Eiffel, Arc de Triomphe, Musée d'Orsay, Cité des Sciences et l'Industrie, Les Halles,...). Pour cela, j'ai utilisé des modèles 3D existants que j'ai importé en tant que classe d'entités multipach dans une Géodatabase en suivant la méthode suivante:
- Création d'une nouvelle classe d'entités de type multipatch dans la Géodatabase.
- Sélection et téléchargement des modèles 3D au format SketchUp à partir du site web 3D Warehouse Sketchup de Trimble.
- Ouverture de chaque fichier *.3ds dans l'application SketchUp.
- Suppression des éléments inutiles (comme l'environnement, le sol,...) puis export au format Collada (*.dae) en spécifiant bien de pas inclure les textures.
- Dans ArcGIS Pro, mise à jour de la classe d'entités multipatch pour insérer les différents fichiers Collada et positionner correctement les modèles 3D.
- Enfin, suppression des bâtiments correspondants dans la classe d'entités contenant tous les autres bâtiments "procéduraux".
- En option, on peut terminer en regroupant les deux classes d'entités multipatch en une classe d'entités pour l'ensemble des bâtiments 3D.
La préparation des arbres
Pour enrichir la scène, je souhaitais également ajouter les arbres, ces derniers étant disponibles en Open Data sur le site Paris Data de la Ville de Paris. Même si les 3 fichiers de données ne couvrent pas la totalité des arbres sur le territoire, c'est tout de même plus de 190 000 arbres que l'on peut télécharger sous forme d'entités ponctuelles. L'objectif étant ensuite de les convertir en modèles 3D. Pour cela, j'ai utilisé la méthode suivante:
- Se placer dans une scène 3D ArcGIS Pro. Ajouter la classe d'entités des arbres pour valider son contenu et prendre connaissance des valeurs d'attributs.
- Dans l'onglet "Carte", exécutez la commande "Ajouter une couche prédéfinie" en sélectionnant "Arbres Thématiques".
- Sélectionner ensuite la classe d'entités contenant les points d'implantation des arbres.
- Définir ensuite les propriétés de hauteur et de largeur des arbres. Vous pouvez définir une taille fixe ou utiliser des champs de la table attributaire. Bien qu'ayant une partie de ces informations dans les données Open Data utilisées, j'ai choisi dans cet exemple d'affecter une taille et une forme fixe.
- La nouvelle couche d'arbre en 3D s'affiche dans la scène.
- La dernière étape consiste à convertir cette couche 3D en une classe d'entités de multipatch. Pour cela, on utilisera l'outil "Couche 3D vers classe d'entités".
Une autre méthode pour représenter des arbres en 3D consiste à appliquer un symbole 3D à l'aide des fichiers de styles fournis avec ArcGIS Desktop (et ArcGIS Pro). Le style nommé "Végétation - Thématique" permet, par exemple, de retrouver une plus large palette de type d'arbres. Vous convertissez ensuite de la même manière votre couche 3D en classe d'entités multipatch.
La publication sur le web
Maintenant que votre scène 3D est terminée dans ArcGIS Pro, vous allez pouvoir publier vos bâtiments 3D et vos arbres 3D en tant que services de scène (scene services) afin de pouvoir les afficher dans des scènes web sur votre portail ArcGIS (ArcGIS Online ou Portal for ArcGIS). Pour cela, j'ai suivi la méthode suivante:
- Pour cela, vous devez vous connecter à votre portail ArcGIS (Portal for ArcGIS 10.3.1 ou supérieur) depuis ArcGIS Pro.
- A l'aide d'un clic-droit sur la couche des bâtiments 3D et celle des arbres 3D, on exécutera la commande "Partager en tant que couche Web".
- On renseignera les informations nécessaires à la création d'un service web ArcGIS puis on lancera la publication du service.
- Un service de scène ArcGIS est alors publié sur votre portail d'organisation. La création de service ne sera complète qu'après le calcul du cache 3D sur le serveur.
En règle générale, le cache 3D est calculé en quelques minutes. Pour un service contenant de plus de 100 000 entités, plusieurs heures de calculs peuvent être nécessaires.
Une fois les services de scène publiés, vous pouvez les visualiser dans la visionneuse de scènes de votre portail ArcGIS (ArcGIS Online ou Portal for ArcGIS), configurer leurs propriétés d'affichage, spécifier le fond de carte à utiliser, définir les conditions d'éclairage ou encore définir les cadrages 3D prédéfinis (appelés "diapositives").
Au delà de la visionneuse de scène du portail, les services de scènes ArcGIS peuvent également être consommés dans ArcGIS Pro, dans ArcGIS Earth et bientôt dans d'autres solutions comme le générateur d'applications Web AppBuilder for ArcGIS. Par ailleurs, les prochaines versions majeures de l'API ArcGIS for JavaScript et des SDK ArcGIS Runtime permettront aussi aux développeurs de créer des applications web ou natives 3D consommant ces nouveaux types de services.
Au delà de la visionneuse de scène du portail, les services de scènes ArcGIS peuvent également être consommés dans ArcGIS Pro, dans ArcGIS Earth et bientôt dans d'autres solutions comme le générateur d'applications Web AppBuilder for ArcGIS. Par ailleurs, les prochaines versions majeures de l'API ArcGIS for JavaScript et des SDK ArcGIS Runtime permettront aussi aux développeurs de créer des applications web ou natives 3D consommant ces nouveaux types de services.
4 comments :
bonjour,
Merci pour cet article qui donne pas mal d’idées. Si non autre astuce pour supprimer les textures sans passer par Sketchup. Si votre fichier SKP est d’une version 6 ou inferieur, il suffit de le convertir (outil importé des fichiers 3D) en un fichier shp Mutipatch et non dans une géodatabase.
Treg
bonjour,
serait-il possible de télécharger, récupérer votre modèle 3D de Paris ?
car nous ne pouvons pas le récupérer depuis arcgis ? pour le mettre sur notre ordinateur et utiliser le modèle 3D de Paris ?
Bonjour,
Dans le cadre de mon projet de fin d'étude, j'utilise particulièrement ArcGIS Pro. J'aimerais convertir une couche de points utilisant la symbologie "arbres réalistes" en multipatch. J'ai vu, à travers votre article, que cela était possible. Cependant, quand j'utilise l'outil "conversion 3D vers classe d'entité", j'ai un message d'erreur : "ERROR 050129: Impossible de convertir la couche d'entités en entrée en multipatch.
Échec de l’exécution de (Layer3DToFeatureClass)."
Auriez vous une solution à mon problème ou une autre méthode ?
Merci d'avance !
Bonjour,
Je viens de découvrir votre projet très intéressant. Je voudrai savoir si il serait possible de l'avoir en téléchargement.
Cordialement, Show
Enregistrer un commentaire