FR:F3DB
Définition
Full 3D Building ou F3BD (en français "Modélisation complète des bâtiments en 3D") décrit l'approche globale qui combine la modélisation actuelle de l'intérieur des bâtiments avec la modélisation extérieure des bâtiments sous sa version simplifiée S3BD.
Contexte
Les deux approches, S3BD et la modélisation intérieur des bâtiments en 3D, n'étaient pas compatibles, notamment concernant certains de
éléments. F3BD devrait permettre de résoudre ces lacunes.
Objectifs
- Rétrocompatibilité.
- Simplicité.
- Compatibilité avec les définitions standard de l'ingénierie civile.
- Les objets peuvent être modélisés dans le détails et pas à pas.
- Rendu séparé des structures internes et externes des bâtiments niveaux par niveaux.
- Rendre compatible dans une grande mesure avec Industry Foundation Classes (https://de.wikipedia.org/wiki/Industry_Foundation_Classes)
- Rendre compatible dans une grande mesure avec CityGML, SIG 3D, OGDC.
- Complément de S3DB.
Spécifications et déroulement
Un travail pas à pas
Les caractéristiques de F3BD sont construites à partir de trois ensembles de fonctionnalités permettant de décrire les données 2D, 2.5D et 3D. En commençant par de la modélisation 2D, il est ensuite possible de compléter les données pour décrire les bâtiments en 2.5D ou en 3D. Les descriptions suivantes font références aux caractéristiques de la fonctionnalité 2D. Par ailleurs, les descriptions qui feront références aux caractéristiques 2.5D et 3D seront marquées par (2.5D) et (3D).
Notes générales
Pour distinguer les différents niveaux d'un bâtiment, chaque éléments et points d'intérêt du bâtiment doivent être taguer avec un identifiant du niveau comme dans l'exemple suivant pour le premier étage :
Le début de la modélisation
Le début de la modélisation débute soit en dessinant le contour du bâtiment en utilisant les images satellites, des données GPS ou simplement en utilisant les données existantes représentant le bâtiment de l'extérieur (exemple : cadastre).
Si vous avez le plan de masse du bâtiment, vous pouvez utiliser celui-ci pour affiner le contour du bâtiment. Les informations permettant d'utiliser un tel plan de masse pour affiner les données existantes peuvent être trouvées ici : https://wiki.openstreetmap.org/wiki/Proposed_features/IndoorOSM#PicLayer
Ajout de la structure du premier niveau : Indoor Areas
Fondé sur le plan de masse ou le plan intérieur, l'ensemble des pièces du bâtiment inclus les couloirs et halls sont dessinées comme des chemins (ways) en suivant les contours du bâtiment et en utilisant les tags suivants :
- indoor:area=* avec
- name=* et si possible
- ref=*
D'autres informations peuvent être fournies pour décrire le but de telle ou telle zone en détail. Par exemple : modélisation des toilettes à partir du plan de masse.
Faites attention de bien spécifier le tag "indoor:level=*". L'affectation d'une zone intérieure à un niveau est toujours spécifiée par ce tag !! Pendant la modélisation d'un bâtiments à plusieurs niveaux vous pouvez utiliser des filtres dans JOSM. Un filtre pour afficher seulement les éléments du premier niveau ressemble à ceci :
type:way & "indoor:level":"0"
La modélisation des pièces intérieures se fait avec des polylines fermées sur elle-même en utilisant le tag indoor:area=*=value.
Il faut noter que les pièces intérieures (indoor areas) doivent avoir les mêmes points que le contour extérieur du bâtiment et les zones voisines (éviter les erreurs de topologie et notamment les trous et les chevauchements de polylignes !!). C'est le point important différenciant cette méthode de modélisation et l'ancienne modélisation proposée [1].
Par ailleurs, les zones intérieures ne décrivent pas les murs, parce qu'ils sont représentés comme des pièces non fermées. Comme sur l'exemple suivant :
Facultatif : les zones
Les "zones" sont des pièces fermées spéciales sans murs ou parfois avec des séparateurs spéciaux comme des barrières de sécurités. Pour cela, il faut utiliser le tag :
indoor:zone=<name>
Par exemple : decoration / show / exposition / cuisine / salle_attente / cour_récré / fumoir …
Il est principalement utilisé pour dessiner des zones spéciales ou de très grandes pièces comme un aéroport qui possède une seule grande pièce avec différentes sections (poste de contrôle, zone d'embarquement, porte d'entrée, etc.).
Ajout d'un mur
Les chemins (ways) existants avec le tag indoor:area=* peuvent être utilisés pour définir des murs. Si le mur d'une pièce a différentes hauteurs ou largeurs, le chemin (way) doit être divisé pour modéliser ceci.
Pour décrire les murs d'un bâtiment (représentés en noir sur le schéma), il faut utiliser les tags suivants :
- indoor:wall=yes
- width=*
- height=* (2.5D)
D'autres valeurs sont possibles :
Vues après l'ajout de murs
Ajout de circulations et de chemins
Les chemins et éléments de circulation sont dessinés en tant que lignes (ways). Les pièces étant déjà dessinés en tant que surface avec des noms.
Les éléments de circulation dans un bâtiment sont décrit avec les tags suivants :
- indoor:highway=footway
- indoor:highway=steps
- indoor:highway=ramp
- indoor:highway=elevator
- indoor:highway=escalator
Le préfixe du tag indoor:highway=* s'explique car il permet une compatibilité avec le rendu Mapnik (les chemins sont invisibles dans la page principale d'openstreetmap et de perturbe pas la carte standard) et permet une navigation aisée à l'intérieur du bâtiment.
De plus, il peut y avoir des routes intérieures qui peuvent permettre de décrire le bâtiment comme les parkings souterrains. Ce type de route peut être réalisées avec le tag :
indoor:highway=service
Les premiers rendus donnent ceci :
Ajout de portes
Les portes sont des parties du murs, des points avec des attributs :
- door=yes ou plus précisément door=* voir Proposed_features/door
- width=*
- height=*
- opening_direction=*
Tag pour la direction de la porte
Solution A
La solution A ou l'approche géométrique est la préférée des utilisateurs.
Pour tagguer correctement le sens d'ouverture d'une porte pour le rendu, le sens de modélisation du mur (vecteur) doit être considéré.
Solution B
La solution B ou approche "niveau/pièce" est plus rapide mais pas forcément très clair dans certaines situations (portes entre deux pièces).
Lorsque je suis dans le couloir et que je vois la porte ouverte vers le couloir. La porte est :
- opening:direction=left lorsque la poignée est du côté gauche
- opening:direction=right lorsque la poignée est du côté droit
Lorsque je suis dans le couloir et que je vois la porte ouverte vers la pièce. La porte est :
- opening:direction=left_mirror quand la poignée est du côté gauche
- opening:direction=right_mirror quand le poignée est du côté droit
Cette solution est rejetée par la majorité des utilisateurs parce que des conflits sont possibles. Comme le montre le schéma suivant, la pièce rouge n'est pas définie en terme de couloir/pièce et peut produire des erreurs au rendu.
Ajout de fenêtres
Les fenêtres sont similaires aux portes. Elles sont des points dans le mur avec les tags suivants :
- window=*
- width=*
- height=*
- min_height=*
Escaliers, rampes et escalators
La direction de l'escalier est définie en taguant les coordonnées de commencement et de fin d'un élément indoor:highway=steps (ou une suite d'éléments tels que indoor:highway=steps - indoor:highway=footway - indoor:highway=steps). Pour plus de détails vous pouvez consulter la description complète pour modéliser un escalier : https://wiki.openstreetmap.org/wiki/Stairs_modelling
Les points extrêmes peuvent être tagguer de la façon suivante : incline=down et incline=up.
Analogiquement les rampes, élévateur et escalator peuvent être décrits de la façon suivante :
- indoor:highway=elevator
- indoor:highway=escalator
- indoor:highway=ramp
Rendu maquette 2D
Après avoir tagguer les murs, les fenêtres et les portes, le rendu 2D donne ceci :
Il est également possible d'avoir un rendu architectural qui fasse apparaître les chemins et circulation :
Le dessin des plafonds
Pour obtenir un modèle 3D complet, le dessin des plafonds doit prévoir des ouvertures pour les escaliers ou les balcons.
Les tags nécessaires sont les suivants :
- ceiling=*
- roof_level=<value>
- roof_height=* qui représente l'épaisseur du plafond
A noter que roof_level=0 représente le sol du rez-de-chaussée.
Dessiner avec ceiling=yes (ligne bleue) permet d'utiliser des relations pour les ouvertures. Les ouvertures peuvent être tagguer comme des zones spécifiques avec name=*.
Niveaux. Parties de bâtiments et définition de la hauteur
Les tags utiles pour gérer la hauteur et les niveaux d'un bâtiment sont les suivants :
- indoor:level:number=value par exemple indoor:level:1=3.95 où 3.95 représente une hauteur en mètres entre le point d'intersection le plus bas entre le bâtiment et le terrain
- indoor:level:name=value décrit l'activité ou le nom de l'étage, par exemple rez-de-chaussée, combles, etc.
Point de référence pour la hauteur d'un bâtiment
Le schéma suivant montre la position du point de référence utilisé pour calculer la hauteur height=*. C'est le point d'intersection le plus bas entre le bâtiment et le terrain.
Les toits
Le tag utilisé pour les toits est le suivant : roof=yes.
Les toits utilisés dans la modélisation simplifiée des bâtiments (S3DB) sont un type de modèle appelé "CSG models" (voir : https://en.wikipedia.org/wiki/Constructive_solid_geometry).
Les principes du F3DB utilisent pour modéliser l'ensemble des surfaces planes simples, modèle appelé "boundary representation" (voir : https://en.wikipedia.org/wiki/Boundary_representation).
Pour avoir une description précise d'un plan dans l'espace (appelé régulièrement "Pi"), il est nécessaire d'avoir trois points.
Par conséquent, un toit doit avoir trois points avec une donnée de hauteur.
Les dessinateurs sont libre de choisir les trois points qui recevront l'information concernant la hauteur avec le tag ele=*.
Selon cette définition, le toit d'un bâtiment est l'ensemble de surfaces planes simples. C
te approche permet de modéliser précisément des éléments très compliqués car tous tes objets 3D peuvent être représentés comme un ensemble de surfaces planes simples.
Tags
- Trois points sur le contour du bâtiment sont taggués avec le tag ele=*. Par exemple : Pa, Pb, Pc
- roof_thickness=* représente l'épaisseur du toit (paramètre T du schéma).
- surface=* ou plus précisément surface_top=*, surface_down=*, surface_sides=*
- colour=* ou plus précisément colour_top=*, colour_down=*, colour_sides=*
- ↑ https://wiki.openstreetmap.org/wiki/Indoor_Mapping