IFC2PG 3D: Industry Foundation Classes vers PostGIS 3ème Partie
Introduction
Ce billet est la suite de la seconde partie que vous trouverez ici IFC vers PostGIS 2ème partie , prenez en connaissance avant de continuer votre lecture.
Pour cette troisième partie nous allons entrer dans le monde de la 3D grace à PostGIS 2.0, cette version nous ouvre les portes de la troisième dimension car elle permet le stockage de données géométries volumiques avec ces nouveaux types :
- TIN( ((0 0 0, 0 0 1, 0 1 0, 0 0 0)), ((0 0 0, 0 1 0, 1 1 0, 0 0 0)) )
- POLYHEDRALSURFACE( ((0 0 0, 0 0 1, 0 1 1, 0 1 0, 0 0 0)), ((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)), ((0 0 0, 1 0 0, 1 0 1, 0 0 1, 0
0 0)), ((1 1 0, 1 1 1, 1 0 1, 1 0 0, 1 1 0)), ((0 1 0, 0 1 1, 1 1 1, 1 1 0, 0 1 0)), ((0 0 1, 1 0 1, 1 1 1, 0 1 1, 0 0 1)) )
Cela ouvre beaucoup de perspectives, j’ai déjà d’autres idées pour de prochains billets, mais revenons à l’outil d’export IFC2PG qui va exporter les objets IFC en 3D, un champ geom3d de type geometry devrait apparaitre dans les tables issues de l’opération d’export et ce uniquement si vous êtes sous PostGIS 2.0
Installation
Si vous n’avez pas installé PostGIS 2.0 , rendez-vous à ce lien http://www.postgis.org/download/windows/experimental.php
Et choisissez entre ces deux liens suivant la version de PostgreSQL 9 que vous utilisez :
http://www.postgis.org/download/windows/pg90/experimental/postgis/postgis-pg90-binaries-2.0.0svn.zip
http://www.postgis.org/download/windows/pg91/experimental/postgis/postgis-pg91-binaries-2.0.0svn.zip
Pour ma part j’ai une version 9.0 de PostgreSQL.
Ouvrez l’archive que vous avez téléchargée :
- Copier le contenu de l’archive sous C:\Program Files\PostgreSQL\9.0\share
- Lire les consignes des fichiers textes README
- Éditer le fichier makepostgisdb.bat
-
set PGPORT=5432
set PGHOST=localhost
set PGUSER=postgres
set PGPASSWORD=yourpasswordhere
set THEDB=template_postgis20
set PGBIN=C:\Program Files\PostgreSQL\9.0\bin\
set PGLIB=C:\Program Files\PostgreSQL\9.0\lib\
set POSTGISVER=2.0
xcopy bin\*.* "%PGBIN%"
xcopy /I /S bin\postgisgui\* "%PGBIN%\postgisgui"
xcopy lib\*.* "%PGLIB%"
"%PGBIN%\psql" -c "CREATE DATABASE %THEDB%"
"%PGBIN%\psql" -d "%THEDB%" -c "CREATE LANGUAGE plpgsql"
"%PGBIN%\psql" -d "%THEDB%" -f "share\contrib\postgis-%POSTGISVER%\postgis.sql"
"%PGBIN%\psql" -d "%THEDB%" -f "share\contrib\postgis-%POSTGISVER%\spatial_ref_sys.sql"
"%PGBIN%\psql" -d "%THEDB%" -f "share\contrib\postgis-%POSTGISVER%\postgis_comments.sql"
REM installs raster support
"%PGBIN%\psql" -d "%THEDB%" -f "share\contrib\postgis-%POSTGISVER%\rtpostgis.sql"
"%PGBIN%\psql" -d "%THEDB%" -f "share\contrib\postgis-%POSTGISVER%\raster_comments.sql"
REM installs topology support
"%PGBIN%\psql" -d "%THEDB%" -f "share\contrib\postgis-%POSTGISVER%\topology\topology.sql"
"%PGBIN%\psql" -d "%THEDB%" -f "share\contrib\postgis-%POSTGISVER%\topology\topology_comments.sql"
REM Uncomment the below line if this is a template database
REM "%PGBIN%\psql" -d "%THEDB%" -c "UPDATE pg_database SET datistemplate = true WHERE datname = '%THEDB%';GRANT ALL ON geometry_columns TO PUBLIC; GRANT ALL ON spatial_ref_sys TO PUBLIC"
pause
Préciser le mot de passe de connexion en remplaçant yourpasswordhere par votre mot de passe,
Décommenter la ligne pour les templates, si nécessaire
Lancer makepostgisdb.bat
La base de données template_postgis20 est créée.
Puis sous PgAdmin III créez une base IFCBD (par exemple) à partir du template_postgis20.
Nouvelle version de l’outil IFC2PG
Cliquez sur le lien ifc2pg_3.rar pour télécharger le fichier rar, puis décompressez le sous C:\
Utilisation
Lancez l’application par un double-clic sur le raccourci.
- Arborescence du fichier IFC,
- Zone d’affichage 3D du fichier IFC (IFCEngine OCX) ,
- Gestion des niveaux (DoSpatial),
- Zone d’affichage 2D des objets exportés (DotSpatial)
Cet icône permet d’ouvrir un fichier IFC.
Cet icône permet de se connecter à une base de données PostgreSQL/PostGIS.
Ouvrez le fichier qui se trouve dans le répertoire IFC
Export des données
Pour que les objets soient transférés dans PostGIS, il faut se connecter à une base de données:
- Cliquez sur le bouton OK,
- Sélectionnez un objet IfcBuildingStorey,
- faites un clic droit, puis choisissez Export de tous les murs dans le menu contextuel,
Visualisation des données
Ouvrez PgAdmin, ouvrez le requêteur et exécutez la requête suivante : SELECT * FROM ifcwallstandardcase;
Vous pouvez voir qu’il y a un champ géométrique supplémentaire dans la table ifcwallstandardcase, le champ geom3 qui contient des géométries de type TIN. Nous allons utiliser une nouvelle fonction de PostGIS 2.0 ST_AsX3D pour créer un document X3D qui sera visualisable dans tous les outils permettant d’afficher un document X3D.
Voici des liens pour plus d’information sur le format X3D :
http://web3d.org/about/overview/
http://www.web3d.org/x3d/wiki/index.php/Main_Page
http://fr.wikipedia.org/wiki/Extensible_3D
Création du fichier X3D
Dans un éditeur de texte, insérez le texte suivant :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.2//EN" "http://www.web3d.org/specifications/x3d-3.2.dtd">
<X3D profile='Immersive' version='3.2' xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='http://www.web3d.org/specifications/x3d-3.2.xsd'>
<Scene>
Dans le requêteur de PgAdmin :
- tapez la requête suivante :
SELECT '<Viewpoint position='||quote_literal(((st_xmin(St_3DExtent(geom3d))+st_xmax(St_3DExtent(geom3d)))/2)::text||' '||
((st_ymin(St_3DExtent(geom3d))+st_ymax(St_3DExtent(geom3d)))/2)::text||' '||
(st_zmax(St_3DExtent(geom3d))+10)::text)||'/>'
FROM ifcwallstandardcase;
- Sélectionnez le résultat, puis copiez le.
- collez le résultat dans l’éditeur de texte, sélectionnez ce bloc et remplacez le caractère “ par un espace.
- tapez la requête suivante :
SELECT '<Shape>
<Appearance>
<Material emissiveColor=''0 0 1''/>
</Appearance>
' || ST_AsX3d(geom3d) ||
'
</Shape>
' as x3dgeom
FROM ifcwallstandardcase;
- Sélectionnez le résultat, puis copiez le.
- collez le résultat dans l’éditeur de texte, sélectionnez ce bloc et remplacez le caractère “ par un espace.
- rendez vous à la fin à la dernière ligne et insérez le texte suivant :
</Scene>
</X3D>
Voici le lien pour télécharger le fichier x3d correspondant à cet exemple : fichier X3D
Afficher le fichier X3D avec MeshLab
Pour visualiser le fichier X3D vous pouvez utiliser
téléchargeable à cette adresse : http://meshlab.sourceforge.net/
Afficher le fichier X3D sous Mozilla Firefox ou Google Chrome
Vous pouvez également afficher le fichier X3D sous un explorateur internet comme Google Chrome ou Mozilla Firefox, ce sont les deux browser sur lesquels j’ai testé l’affichage d’un fichier X3D. Pour cela vous installer un plugin compatible avec le format X3D, j’ai installé BS Contact de la société Bitmanagement. Pour le télécharger, rendez vous à ce lien : http://www.bitmanagement.de/en/products/interactive-3d-clients/bs-contact puis cliquez sur download, vous devrez remplir un mini formulaire pour pouvoir lancer le téléchargement :
Après le téléchargement, lancer l’installation.
Cliquez sur ce lien http://ifcx3d.netau.net/testx3d3.html pour vérifier le bon fonctionnement du plugin, vous devriez voir ceci :
vous pouvez cliquer dans la vue, puis zoomez avec la molette de la souris. Un clic droit fait apparaitre un menu contextuel. Pour plus d’informations, consulter le guide de l’utilisateur de BS Contact à cette adresse : http://www.bitmanagement.com/developer/contact/userguide/6.1-fr/index.html
Voici un extrait du guide utilisateur :
BS Contact - Guide de l'utilisateur
Pour bien débuter
Ce document traite de la Navigation. La navigation est l'action de se déplacer dans un environnement virtuel ou de voir un object depuis différentes vues.
Pour savoir ce qu'est un environnement virtuel - ou scène VR -, réferrez-vouz à la page Vue d'ensemble.
Général
Ceci est l'aperçu principal de la façon dont BS Contact opère:
BS Contact se conduit principalement avec la souris. Vous pouvez:
- bouton gauche: se déplace dans la scène VR.
- bouton droit: ouvre le menu de BS Contact.
La molette a des fonctionnalités additionnelles:
- tournée: ajuste votre point de vue.
- pressée: ouvre le menu de navigation.
Il existe des fonctionnalités pour les utilisateurs expérimentés, qui sont discutées plus loin.
Se déplacer avec la souris:
Se déplacer avec la souris dans une scène VR sera appelé naviguer. Celà marche comme ci-dessous:
D'abord, vous cliquez dans la scène et gardez le bouton appuyé. Puis, vous déplacez la souris depuis le point où vous avec cliqué. La distance dont la souris a bougé détermine votre vitesse en 3D. Déplacez la souris...
...vers le haut
pour avancer.
...vers la gauche
pour tourner à gauche.
déplacez
la souris...
...vers la droite
pour tourner à droite.
...vers le bas
pour reculer.
De plus, la molette de la souris vous permet d'ajuster votre direction de regard verticalement:
...en avant
pour lever le regard.
déplacez la molette...
...en arrière
pour baisser le regard.
Essayer:
Vous pouvez essayer tout ceci dans cet exemple: cyberhood.
...La suite:
Parfois, le curseur prend la forme d'une main, celà signifie alors qu'il est au-dessus d'un object interactif. Pour naviguer, déplacez le curseur vers un endroit où il redevient une croix.
Plus d'informations sur l'interactivité...
Astuce:
Perdu ? Pressez la touche ECHAP.
(Dans Netscape: bouton droit de la souris → 'Vues' → 'Réinitialisation')
Astuce:
Les touches PagePrecedente et PageSuivante vous transportent à des positions predéfinies par l'auteur.
Plus d'informations à propos des vues...
Examiner un Objet:
Les explications ci-dessus se réferraient à un mode de navigation appelé MARCHE (WALK). Un autre mode important est EXAMINER, qui est décrit ici. Pour en apprendre plus sur les autres modes, réferrez-vous à la section Modes de Navigation.
Le mode EXAMINER fonctionne de façon similaire au mode MARCHE: vous cliquez un object et déplacez la souris en maintenant le bouton de la souris pressé. Les mouvements de la souris sont intimement liés aux mouvements de l'object: il tourne uniquement lorsque vous déplacez la souris.
Fonctions additionnelles:
- Pour déplacer un objet sur l'écran, pressez la touche CTRL, cliquez sur l'objet en la maintenant appuyée, et déplacez la souris.
- Pour se rapprocher ou s'éloigner, utilisez la molette de la souris.
Essayer:
Essayez avec le configurateur de voiture.
Astuce:
BS Contact vous aide en alignant l'objet en douceur pendant que vous le tournez. Si vous souhaitez aligner parfaitement un objet, déplacez la souris de droite à gauche ou de haut en bas quelques fois.
Astuce:
Les touches PagePrecedente et PageSuivante, ainsi que ECHAP vous aident dans la presque totalité des scènes.
Modes de Navigation
Il y a différentes manières de modifier votre point de vue dans la scène lorsque vous déplacez la souris. Ces manières sont appelées modes de navigation et remplissent les besoins de différents types d'applications VR. Une application peut préselectionner un mode et l'utilisateur en choisir un autre.
Pour sélectionner un mode de navigation:
- cliquez sur le bouton central, ou
- cliquez sur le bouton droit et sélectionnez Déplacement.
Voici les modes de navigation disponibles dans BS Contact:
MARCHE (WALK):
Le mode MARCHE est actif dans la plupart des scènes. Il vous permet de vous déplacer de la façon dont vous le faites dans le monde réel.
avancer
tourner à gauche
souris
tourner à droite
reculer
baisser le regard
molette
lever le regard
VOL (FLY):
Le mode VOL se comporte comme le mode MARCHE, à celà près qu'il ne vous garde pas au sol, d'où la possibilité de voler. Utilisez la molette pour monter ou descendre, ou utilisez la touche CTRL pour vous déplacer directement en haut ou en bas avec la souris.
avancer
tourner à gauche
souris
tourner à droite
reculer
baisser le regard
molette
lever le regard
EXAMINER (EXAMINE):
Le mode EXAMINER vous permet de faire tourner un objet et de l'examiner de différentes positions. Il est activé par défaut si l'on regarde un objet seul.
tourner vers le haut
tourner vers la gauche
souris
tourner vers la droite
tourner vers le bas
se rapprocher
molette
s'éloigner
Les modes de navigation suivants sont des extensions de BS Contact, en plus de ceux de la norme VRML.
PANORAMIQUE (PAN):
Dans le mode PANORAMIQUE, l'utilisateur peut facilement regarder autour de soi. Se déplacer est également possible, mais requiert de presser la touche CTRL en même temps que déplacer la souris.
lever le regard
tourner à gauche
souris
tourner à droite
baisser le regard
avancer
molette
reculer
DECALER (SLIDE):
Ce mode vous permet de vous déplacer en translation, sans changer votre direction de regard.
monter
allez à gauche
sourise
aller à droite
descendre
avancer
molette
reculer
JEU VIDEO (GAME):
Le mode JEU VIDEO est une alternative au mode MARCHE. Vous pouvez controller les mouvements comme dans un jeu:
- changer votre direction de regard via la souris sans la presser,
- et vous déplacer avec l'autre main sur le clavier.
Plus d'informations sur le mode JEU...
lever les yeux
regarder à gauche
souris
regarder à droite
baisser les yeux
accelérer
molette
ralentir
SAUTER (JUMP):
C'est un mode spécial qui vous permet de cliquer sur un objet, vous transportant alors à cet endroit automatiquement.
Néanmoins vous pouvez vous déplacer en navigation similaire à MARCHE ou PANORAMIQUE. Selon lequel de ces deux sous-modes est actif dépend la présence ou non de la gravité.
SIMILI-PANORAMIQUE (sans gravité):
lever les yeux
regarder à gauche
souris
regarder à droite
baisser les yeux
avancer
molette
reculer
SIMILI-MARCHE (avec gravité):
lever les yeux
regarder à gauche
souris
regarder à droite
baisser les yeux
avancer
molette
reculer
© 2005 Bitmanagement Software GmbH All rights reserved.
Le fichier testx3d3.html
Ci dessous le contenu du fichier testx3d3.html qui est l’adaptation d’un exemple trouvé sur internet :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<h1> ifcwallstandardcase X3D </h1>
<!-- TODO: * authors need to replace the X3D filename (along with relative or online location) in the next two lines * -->
<object data="test2.x3d" type="model/x3d+xml" height="600" width="600">
<param name="src" value="test2.x3d"/>
<!-- the remaining HTML that follows should not need further modification -->
<param name="DASHBOARD" value="FALSE"/>
<param name="SPLASHSCREEN" value="FALSE"/>
<!-- the following anchor-link text is only shown if no X3D plugin is already installed -->
<div class="noX3dPluginInstalled">
<a href="http://www.web3d.org/x3d/content/examples/X3dResources.html#Applications" target="helpPage">Select an X3D plugin to see this example...</a>
<!-- alternate url: http://www.web3d.org/tools/viewers_and_browsers -->
</div>
</object>
</body>
</html>
Conclusion
Ce billet nous a permis de mettre un pied dans le monde de la 3D sous PostGIS en intégrant des données issues d’un fichier IFC. Il reste bien sur à enrichir les tables de champs porteur d’informations supplémentaires, rajouter des fonctionnalités pour faciliter l’import des objets dans PostGIS, finaliser le traitement des objets non encore traités.
Mais le plus passionnant reste à faire, mettre en place un nouvel outil pour l’exploitation des objets stockés dans la base de données, une interface développée en HTML utilisant le plugin BS Contact pour l’affichage des données au format X3D. Je vais réfléchir à cette interface et je vous la présenterait dans un prochain billet.
Les domaines d’applications sont vastes, jusqu’a présent les SIG,base de données spatiales nous amenait aux portes des batiments via une adresse ou une requête spatiale et ne permettait pas d’entrer directement dans ce bâtiment ou alors cela nécessitait une extension, aujourd’hui il devient possible grâce à PostGIS 2.0 de pénétrer dans ce bâtiment, puis de vous promener à l’intérieur de celui-ci étage par étage, pièce par pièce. Vous avez sans doute des idées sur ce sujet, n’hésitez pas à m’en faire part.
This is a fabulous post I seen because of offer it. It is really what I expected to see trust in future you will continue in sharing such a mind boggling post
RépondreSupprimerfabric waste in garment industry