FR:Bâtiments 3D simples

From OpenStreetMap Wiki
(Redirected from FR:Simple 3D Buildings)
Jump to navigation Jump to search

Page cohérente avec la page anglaise à la date du 10/06/2024.

Cette page décrit les attributs à utiliser pour une modélisation basique des bâtiments en trois dimensions. Ce schéma de description est donc limité, tous les détails ne pourront pas être décrits par celui-ci. Vous pouvez signaler les cas d'éditions complexes sur la page de discussion (en anglais) ou consulter la page F3DB (Full 3D Building) pour les propositions de cartographie 3D avancée.

La méthode qui suit est le résultat du second Workshop 3D Garching, où la plupart des développeurs 3D se sont mis d'accord pour utiliser un jeu d'attributs unifié dans leur programmes. Essentiellement, le volume d'un bâtiment est décrit à l'aide de deux types d'aires. Le contour du bâtiment (building=*) pour l'aire globale du bâtiment et les parties de bâtiments (building:part=*) pour décrire les éléments avec des hauteurs différentes ou d'autres caractéristiques.

Comment cartographier

Contour d'un bâtiment

Deux building:part (vertes) détaillant l'intérieur d'un bâtiment (rouge)

Le contour du bâtiment est représenté avec l'attribut building=*. Il s'agit de l'aire couverte par l'union de toutes les parties du bâtiment.

D'autres attributs se référant au bâtiment entier (par exemple l'adresse, le nom, la hauteur totale, l'opérateur, etc.) doivent être placés sur ce contour du bâtiment. Un bâtiment devrait avoir un unique attribut building=*, plusieurs bâtiments ne devant pas se chevaucher.

Le contour du bâtiment assure la compatibilité avec les logiciels de rendu 2D, comme Mapnik, et d'autres consommateurs de données qui ne s'intéressent pas à la modélisation 3D. Lorsqu'un bâtiment comporte des zones utilisant des attributs 3D de type building:part=*, le contour du bâtiment n'est pas pris en compte par la plupart des logiciels de rendu 3D.

Parties d'un bâtiment

Si certaines parties du building=* ont des caractéristiques différentes (par exemple la hauteur, la couleur, etc.), elles peuvent être modélisées avec des zone polygones à l'intérieur du bâtiment entier, auxquels on ajoutera l'attribut building:part=* avec en général la valeur yes mais il est aussi possible d'utiliser n'importe quelle valeur de l'attribut building=* (exemple building=yes, building:part=government et building:part=school si un bâtiment a une partie utilisée par la mairie et une salle utilisée comme salle de classe).

Les zones building:part=* doivent recouvrir la totalité du contour du bâtiment, elles peuvent cependant se chevaucher ou être disjointes, selon le bâtiment (c'est inévitable pour un codage d'un bâtiment 3D dans un plan). Par contre, il faut éviter de faire se chevaucher les volumes 3D que vous modélisez - surtout si les volumes ont des faces communes.

Les attributs spécifiques aux parties de bâtiment building:part=* sont détaillés plus loin. Notez qu'étant destinés au rendu 3D, les parties marquées building:part=* seront normalement ignorées par les rendus cartographiques 2D.

OOjs UI icon information-progressive.svg Astuce JOSM  : Sélectionner des objets qui se chevauchent ou se superposent dans un logiciel d'édition peut être une opération délicate. Avec JOSM, cliquer autant de fois que nécessaire en maintenant la touche Alt enfoncée permet de sélectionner l'un après l'autre les objets qui se chevauchent jusqu'à celui qui vous intéresse.

Rassembler les éléments avec une relation

Si au moins une partie d'un bâtiment est suspendue au-dessus de l'empreinte du bâtiment ou si le bâtiment a une structure complexe avec beaucoup de parties, une relation de type type=building peut être utilisée pour regrouper le conteur du bâtiment et toutes les parties du bâtiment. Mais dans la pratique, la relation n'est pas nécessaire et il suffit de positionner toutes les parties du bâtiment à l'intérieur du contour du bâtiment comme décrit ci-dessus.

Si la relation type=building est définie pour le bâtiment,

  • le contour du bâtiment doit être répertorié avec le rôle rôle outline.
  • toutes les parties building:part=* du bâtiment doivent apparaître comme membres de la relation avec le rôle rôle part.

De plus, elle peuvent être situées de toutes les manières possibles (à l'intérieur, à l'extérieur, se croisant, se touchant) par rapport au contour du bâtiment. Elles n'ont plus besoin d'être positionnées obligatoirement à l'intérieur du contour building comme c'est le cas sans la relation.

Attributs pour les contours et parties de bâtiment

Les attributs suivants peuvent être utilisés sur les contours et les parties d'une construction.

Les attributs pour les bâtiments/parties de bâtiment sont classés en 3 catégories :

  • attributs uniquement pour le toit du bâtiment = attributs avec le préfixe roof:
  • attributs uniquement pour le bâtiment sous la toiture (c'est-à-dire les façades) = attributs avec le préfixe building:
  • attributs pour les deux = attributs sans préfixe

Attributs pour les façades et le toit des bâtiments

Exemple schématique d'utilisation des attributs height et levels
Clé Description
height=* Distance entre le sol et le haut du toit, à l'exclusion des antennes, des girouettes et des autres équipements montés sur le toit.

Voir la section ci-dessous pour une bonne compréhension de cet attribut et de l'utilisation de roof:height, building:levels et roof:levels.

min_height=* Hauteur en dessous de l'élément du bâtiment.

Notez que lorsque min_height=* est utilisé, height=* est toujours définie comme étant la distance entre le sol et le haut de la structure. Ainsi, un "pont" qui a 3 mètres de hauteur, où la partie inférieure du pont est positionnée à 10 mètres au-dessus du niveau du sol aura min_height=10 et height=13.

Attributs uniquement pour les façades des bâtiments sous le toit

Clé Description
building:levels=* Nombre d'étages du bâtiment au-dessus du sol (sans les étages du toit). Permet de texturer le bâtiment de manière simple car certains rendus 3D ajoutent des rangées de fenêtres pour chaque étage.

Si vous ajoutez de nouveaux bâtiments, essayez de donner une valeur de hauteur avec height=*. Essayez d'utiliser building:levels=* uniquement en complément de l'attribut height=* !

Voir la section ci-dessous pour une bonne compréhension de cet attribut et de l'utilisation de height, roof:height et roof:levels.

building:min_level=* Nombre d'étages à ignorer dans une partie de bâtiment, analogue à min_height=*.
building:material=* Matériau de la façade du bâtiment.
building:colour=* Couleur de la facade du bâtiment. Voir colour=* pour les différentes valeurs possibles.

Note: il n'y a pas d'attribut pour la hauteur des façades (pas d'attribut building:height). Cette valeur est automatiquement calculée à partir de la hauteur totale du bâtiment (height=*) moins la hauteur du toit (roof:height=*).

Attributs uniquement pour la toiture

Forme du toit

Il existe différentes formes caractéristiques de toits.

Image Roof Gabled.png Roof Flat.png Roof Hipped.png Roof Pyramidal.png Roof Skillion.png Roof Half Hipped.png Roof Hip and Gable.png Roof Butterfly.png
roof:shape gabled flat hipped pyramidal skillion half-hipped hipped-and-gabled butterfly
Image Roof Round.png Roof Gambrel.png Roof Mansard.png Roof Dome.png Roof Onion.png Roof Sawtooth.png
roof:shape round gambrel mansard dome onion sawtooth
Image Roof Cone.png Roof Crosspitched.png Roof Side Hipped.png Roof Side Half Hipped.png Roof Gabled Height Moved.png
roof:shape cone crosspitched side_hipped side_half-hipped gabled_height_moved
Autres valeurs communes
Value Comment
many Indique un bâtiment qui a différentes formes de toit. Un tel bâtiment peut avoir des building:part=* portant leurs propres attributs roof:shape=*. Un historique de cet attribut est décrit dans roof:shape=many

Autres clés

Clé Description
roof:orientation=along/across Par défaut, la panne faîtière est considérée parallèle au côté le plus long du bâtiment (roof:orientation=along), cette clé permet de le rendre explicite.
roof:height=* La hauteur de la façade se calcule par la soustraction height=* moins roof:height=*.
roof:angle=* Alternative à roof:height=*, la hauteur peut être déduite en renseignant l’inclinaison des pans en degrés.
roof:levels=* Nombre de paliers dans le toit, qui ne sont pas déjà comptés dans building:levels=*.
roof:direction=* Orientation du côté principal de la toiture.
roof:material=* Matériau principal du toit. Utile en association avec roof:colour=*.
roof:colour=* La couleur dominante du toit. Utile en association avec roof:material=*.

Cette section est un template du wiki, modifiable ici.

Terminologie utile à connaître pour la toiture

Diagramme des principaux éléments architecturaux qui composent un toit

Le codage des toits est basé sur des termes architecturaux anglais présenté dans l'image ci dessus. Les connaître facilite sa compréhension.

Exemples de réalisation en 3D

Vous pouvez aussi consulter des modèles.

Support logiciel

Article principal : FR:Développement 3D

De nombreuses cartes et outils supportent le modèle 3D simplifié. Parmi les premiers, il y eut le rendu OSM-3D.org en 2009, le rendu OSM2World et le greffon JOSM Kendzi3D en 2011, et le SDK Nutiteq Android 3D Mapping'' (maintenant Carto Mobile SDK) ainsi que WikiMiniAtlas en 2012. OSMBuildings lança un affichage 2.5D en 2012, suivi par une version 3D en 2015. En 2013, F4 Map devint le premier rendu dans un navigateur à supporter totalement le schéma Bâtiments 3D simples.

Outils d'édition

Nom du logiciel Plateforme Support du schéma License Notes
Kendzi3d Windows, macOS, Linux oui BSD greffon JOSM
SketchOSM Windows partiel Propriétaire SketchUp greffon en béta, arrêté en juillet 2020

Applications cartographiques

Nom du logiciel Plateforme Support du schéma License Notes
CartoType Maps App Windows, Linux, Macintosh partiel Propriétaire mais sans restriction d'utilisation Une application de démonstration libre utilisant la librairie propriétaire CartoType. La version CartoType GL implémente la plupart des formes de toit. Inclut un éditeur de feuilles de style.
Cesium OSM Buildings Web partiel Mis à jour tous les mois.
F4 Map Web oui Propriétaire Demo Web Map avec support de rendu et d'animations.
Mapbox Static API Web partiel BSD Nécessite un compte libre Mapbox Studio.
OpenScienceMap Web partiel LGPL Interprète uniquement les clés height/min_height côté client. La couche S3DB utilise des maillages VTM générés sur le serveur (en utilisant plpgsql avec PostGIS et SFCGAL). Carte Web.
OSG-Maps Android partiel Propriétaire
OSM2World Windows, Linux, macOS partiel LGPL Implémente actuellement le reste des fonctionalités pour la version 0.2.0 - slippymap (Allemagne uniquement).
OSM-3D.org Web partiel Actuellement hors ligne, sauf si vous disposez d'une ancienne version de Java (≤1.6). Nouvelle version WebGL en développement.
osmapa.pl Mapnik stylesheet Web partiel La plupart des types de toit rendus en vue 2.5.
OSM Building Viewer Web partiel Propriétaire Visualise un bâtiment individuel à partir des données OSM en direct.
OSMBuildings Web partiel BSD
OSM go Web partiel GPL Uniquement pyramide et dôme, en plus du toit plat (par défaut).
Streets GL Web oui MIT Mis à jour manuellement. Non mis à jour depuis septembre 2023.
VR Map Web partiel MPL Seulement les hauteurs et couleurs.
WikiMiniAtlas Web partiel GPL Uniquement les toits pyramidaux.

Frameworks cartographiques

Article principal : Frameworks
Nom du logiciel Plateforme Language Support du schéma License Notes
Carto Mobile SDK Android, iOS, Windows Phone Java, Objective-C++, Swift, C# partiel BSD La plupart des formes de toit sont supportées, cf. Carto's documentation.
CartoType for Android Android Java partiel Propriétaire La plupart des formes de toit sont supportées. Les styles peuvent être controllés avec les feuilles de style XML CartoType's. Utilise l'accélération graphique OpenGL. Les angles de vue, hauteur, champ de vue, etc. peuvent être modifiés.
CartoType for C++ Windows, Linux, OS X (Macintosh) C++
CartoType for iOS iOS Objective C, Swift
CartoType for .NET Windows C#, VB.NET and other .NET languages
CartoType for Qt Qt on Windows, Mac (OS X) and Linux C++
Mapbox Android SDK Android Java partiel BSD Les options de personnalisation de l'affichage des bâtiments 3D sont incluses dans la spécification des styles Mapbox. (Voir le billet de blog Mapbox [1] annonçant la prise en charge de GL JS).
Mapbox GL JS Web JavaScript
Mapbox iOS SDK iOS Objective-C, Swift, Interface Builder
Mapbox macOS SDK macOS Objective-C, Swift, Interface Builder, AppleScript
Mapbox Qt SDK Qt C++, QML
Mapbox Unity SDK Cross-platform C# Apache
node-mapbox-gl-native Node.js JavaScript BSD
osm2x3d Web partiel ? Voir aussi [2] et [3].
OSMBuildings Web JavaScript partiel BSD Versions 2.5D et 3D disponibles.
Tangram Web JavaScript partiel MIT Mapzen rend les bâtiments 3D dans Tangram et d'autres produits.
Tangram ES Android, iOS, Linux, macOS C++
VTM Android, iOS, Web Java partiel LGPL Partie du projet mapsforge.

Outils de conception

Nom du logiciel Plateforme Support du schéma License Description
blender-osm Windows, macOS, Linux partiel GPL Un clic télécharge et importe OpenStreetMap et le terrain. Peut importer plus de 100,000 bâtiments. Un grand nombre de formes de toits est supporté : flat, gabled, hipped (uniquement pour les bâtiment de forme rectangulaire), à pente unique, half-hipped, round, pyramidal, gambrel, dome, onion et saltbox.
Mapbox Studio Web partiel Propriétaire Inclut un éditeur de style Mapbox GL qui supporte les hauteurs de building:part.
Maputnik Web partiel MIT Un éditeur de style Mapbox GL qui supporte les hauteurs de building:part.
Tangram Play Web partiel MIT Un éditeur de scène Tangram qui supporte l'extrusion de bâtiments avec des hauteurs basées sur les données OSM.

Voir aussi

  • F3DB pour "Full 3D Buildings" : une proposition abandonnée de modélisation 3D
  • windows=* - Indique si les façades des building(part) ont des fenêtres.

References