FR:F3DB

From OpenStreetMap Wiki
Jump to navigation Jump to search

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 :

indoor:level=1

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

Plan de masse JOSM
Plan de masse utilisé dans JOSM

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 :

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.

Indoor area and tags
Cartographie d'une pièce et tags associés

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].

Indoor areas and walls
Différence entre mur et zone intérieur

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

Indoor Areas
Modélisation des pièces d'un niveau d'un bâtiment : Indoor Areas

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.

Walls in areas
Modélisation des murs

Pour décrire les murs d'un bâtiment (représentés en noir sur le schéma), il faut utiliser les tags suivants :

D'autres valeurs sont possibles :


Vues après l'ajout de murs

Walls indoor areas
Représentation possible d'un bâtiment après avoir tagué les murs intérieur avec width=*

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.

Chemins et circulations
Représentation de circulation d'un bâtiment

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 :

Parking
Route intérieure
Parking
Route intérieure/parking



Ajout de portes

Les portes sont des parties du murs, des points avec des attributs :

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é.

Sens d'ouverture d'une porte et direction du mur


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
Solution B porte

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.

Conflits solution B

Ajout de fenêtres

Les fenêtres sont similaires aux portes. Elles sont des points dans le mur avec les tags suivants :

Fenêtres d'un bâtiment

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.

Escaliers points haut et bas

Analogiquement les rampes, élévateur et escalator peuvent être décrits de la façon suivante :

  • indoor:highway=elevator
  • indoor:highway=escalator
    • direction=forward quand le mouvement est dans le sens du chemin
    • direction=backward quand le mouvement est dans le sens contraire au chemin
    • direction=reversible quand le mouvement varie
  • indoor:highway=ramp

Rendu maquette 2D

Après avoir tagguer les murs, les fenêtres et les portes, le rendu 2D donne ceci :

Rendu maquette 2D

Il est également possible d'avoir un rendu architectural qui fasse apparaître les chemins et circulation :

Rendu 2D architecture et chemins

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=*.

Représentation d'un plafond

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.
Schéma explicatif relatif aux niveaux et à la hauteur d'un bâtiment


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.

Point de référence pour la hauteur


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.

Trois points permettent de connaitre un plan dans l'espace

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=*
Représentation d'un toit à partir d'une surface plane définie par trois points
  1. https://wiki.openstreetmap.org/wiki/Indoor_Mapping