FR:Bâtiments 3D simples

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

Cette page décrit les tags à utiliser pour une modélisation basique des bâtiments en trois dimensions. Le schéma de description est pour des bâtiments basiques et 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 de tags 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.

[Page cohérente avec la reference anglaise au 25/7/2020]

Comment cartographier

Contour d'un bâtiment

Deux building:part à l'intérieur d'un bâtiment

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

D'autres tags se référant au bâtiment entier (par exemple l'adresse, le nom, l'opértateur, etc.) doivent être placés sur le contour du bâtiment. Un bâtiment devrait avoir un unique tag 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 balises 3D de type building:part=*, le contour du bâtiment n'est pas pris en compte pour le 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 supplémentaires, que l'on taguera simplement building:part=yes ou en précisant n'importe quelle valeur du tag building=*.

Les zones building:part=* doivent recouvrir la totalité du contour du batiment, elles peuvent cependant se chevaucher ou être disjointes, selon le bâtiment (c'est inévitable pour un codage d'un batiment 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.

OOjs UI icon information-progressive.svg Astuce JOSM  : Sélectionner des objets qui se chevauchent - voire se surperposent - dans un logiciel d'édition peut être une opération délicate. Avec JOSM, cliquer avec le bouton du milieu permet de sélectionner l'un après l'autre les objets qui se chevauchent jusqu'à celui qui vous intéresse.

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 de parties marquées building:part=*, ils seront normalement ignorés par les rendus cartographiques 2D.

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 plan 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 Role outline.
  • toutes les parties building:part=* du bâtiment doivent apparaître comme membres de la relation avec le rôle Role 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.

Hauteur et nombre d'étages

Exemple schématique d'utilisation des tags de niveau et de hauteur
Key Commentaire
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.
min_height=* Hauteur approximative au 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, height=* = 13.

building:levels=* Nombre d'étages du bâtiment au-dessus du sol (sans le niveau du toit), permet de texturer le bâtiment de manière simple.

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

building:min_level=* Nombre de niveaux à ignorer dans une partie de bâtiment, analogue à min_height=*.

Toiture

Forme du toit

Vous pouvez caractériser le toit d'un bâtiment grâce à un ensemble de types de toits simples décrits ci-après (la toiture désigne l'ensemble des toits d'un bâtiment).

D'autres types de toits pourront êtres ajoutés à l'avenir (S3DB_Proposals), dont des approches plus approfondies pour du "modelling" (assemblage) manuel (par exemple ProposedRoofLines ou les parties de OSM-4D/Roof_table).


Saltbox - one meaning, conflicting with alternative one, from DE:OSM-4D/Roof table and some editors
Saltbox - one meaning, conflicting with alternative one, from Simple 3D Buildings and some editors
Saltbox house roof shape, according to Saltbox house
Image Roof Flat.png Roof Skillion.png Roof Gabled.png Roof Half Hipped.png Roof Hipped.png Roof Pyramidal.png
roof:shape flat skillion gabled half-hipped hipped pyramidal
signification plat appentis pignon demi-croupe en croupe pyramidal
Image Roof Gambrel.png Roof Mansard.png Roof Dome.png Roof Onion.png Roof Round.png Roof Saltbox.png Roof Saltbox Flipped.png
roof:shape gambrel mansard dome onion round saltbox[1]
signification mansarde mansarde en croupe dôme oignon rond saltbox

Autres valeurs courantes et problèmes.

Valeur Commentaire
saltbox problématique du fait de définitions / significations conflictuelles de "saltbox" dans ce contexte.[2]
double_saltbox, quadruple_saltbox Idem.
sawtooth Toiture en dents de scie du style usine.
cone, conical Les deux sont rarement utilisés
side_hipped La moitié d'un toit en croupe, différent de la demi-croupe. Un pignon sur un coté du toit, et une 'croupe' avec trois pentes de l'autre côté. Est rencontré sur un grand bâtiment ayant un toit en croupe avec des parties de bâtiment rattachées en "side_hipped'.
lean_to Pas clair, probablement un appenti.
shed Pas clair, probablement un pignon ou appenti.
gabled_row Pas clair, parfois utilsé avec un toit en dents de scie (sawtooth), parfois une série de 'gabled terraces' (?).
crosspitched Toiture en croix avec deux toits de style pignons à 90 degrés.
many Indique un bâtiment qui a de multiples différentes formes de toits. Un tel bâtiment devrait avoir des building:part=* portant les différentes valeurs roof:shape. Devrait être évité, l'historique de cette valeur est décrite dans roof:shape=many.

Autres caractéristiques des toits

Key Comment
roof:orientation=along/across Pour les toitures avec une arête, celle-ci est supposée être parallèle au côté le plus long de l'édifice (roof:orientation=along). Mais elle peut être étiquetée explicitement avec ce tag.
roof:height=* Hauteur du toit en mètres. La hauteur des façades est déterminée par la hauteur totale du bâtiment height=* à laquelle est soustraite la hauteur du toit roof:height=* Exemple : pour un bâtiment de 6 mètres de hauteur (height=6) avec un toit de 2 mètres de hauteur (roof:height=2), les façades mesureront 4 mètres de hauteur.
roof:angle=* Angle du toit en degrés. À la place de roof:height=*, la hauteur du toit peut être indiquée implicitement en donnant l'inclinaison des pans.
roof:levels=* Nombre d'étages du toit, qui ne sont pas déjà pris en compte dans building:levels=*.
roof:direction=* Direction du toit en fonction des points cardinaux (N, S, E, W, NE, SW, NNE...) ou en degrés (0° étant le nord).

Exemple : pour un toit skillion roof:direction=SSW (ou roof:direction=202), la pente desendante du toit sera orientée vers le sud-sud-ouest.

roof:material=* Le matériaux couvrant le toit. Utile en conjonction avec roof:colour=*.
roof:colour=* La couleur dominante du toit. Utile en conjonction avec roof:material=*.

Encore une fois, certains toits (par exemple, les bâtiments carrés) ne peuvent pas être modélisés avec précision avec les techniques simples décrites sur cette page.

Surface, couleur et matériaux

Key Commentaire
building:colour=* Couleur de la facade du bâtiment. Voir colour=* pour les différentes valeurs possibles.
roof:colour=* Couleur de la toiture du bâtiment. Voir colour=* pour les différentes valeurs possibles.
building:material=* Matériau de la façade du bâtiment.
roof:material=* Matériau du toit du bâtiment.

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éalisations en 3D

Pour se rendre compte du travail déja réalisé et avoir plus d'exemples de codage, les pages suivantes permettent d'explorer rapidement des zones complètes ou des bâtiments intéressants :

  • Exemples de zones en 3D rassemble une collection de zones riches en bâtiments 3D (et met à disposition les liens directs pour les différents outils)

Vous pouvez aussi consulter Example Models

Support logiciel

Article principal : 3D development

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

Map applications

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 libre de démonstration application pour la librairie propriétaire CartoType. La version CartoType GL implémente la plupart des formes de toit. Inclut un éditeur de feuilles de style.
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. The S3DB Layer uses vtm meshes generated on the server (using plpgsql with PostGIS and SFCGAL). Web map
OSG-Maps Android partiel Propriétaire
OSM2World Web partiel LGPL Implémente actuellement le reste des fonctionalités pour la version 0.2.0 - slippymap (Allemagne uniquement)
OSM-3D.org Web partiel see OSM-3D#Buildings
osmapa.pl Mapnik stylesheet Web partiel La plupart des types de toit rendus en vue 2.5
OSMBuildings Web partiel BSD
OSM go Web partiel GPL Uniquement pyramide et dôme, en plus du toit plat (par défaut).
WikiMiniAtlas Web partiel GPL uniquement les toits pyramidaux
VR Map Web partiel MPL Seulement les hauteurs et couleurs

Map frameworks

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 iOS iOS Objective C, Swift
CartoType for C++ Windows, Linux, OS X (Macintosh) C++
CartoType for .NET Windows C#, VB.NET and other .NET languages
CartoType for Qt Qt on Windows, Mac (OS X) and Linux C++
Mapbox GL JS Web JavaScript partiel BSD Options for customizing 3D building display are included in the Mapbox Style Specification. (See Mapbox's blog post announcing GL JS support.)
Mapbox Android SDK Android Java
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 Unknown see also [1] and [2]
OSMBuildings Web JavaScript partiel BSD versions 2.5D and 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.

Design tools

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 (for a quadrangle outline only), mono-pitched, half-hipped, round, pyramidal, gambrel, dome, onion and 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
  1. By some users/editors, the roof shape which is shown on this picture may be interpreted as double_saltbox, whereas saltbox then has only one upper roof edge.
  2. https://lists.openstreetmap.org/pipermail/tagging/2020-February/thread.html#51110