"Sans imagination il ne pourrait y avoir création."
Albert Jacquard.

"L'imagination est plus importante que le savoir."
Albert Einstein.

dimanche 4 août 2013

CityGML vers PostGIS 2.0

Intégration de CityGML dans PostGIS 2.0

 

Introduction

Après les trois billets précédents parlant de l’intégration de fichiers BIM/IFC dans PostgreSQL et sa cartouche spatiale PostGIS 2.0, voici un nouveau billet dans lequel je continue à expérimenter les nouvelles possibilités 3D de PostGIS, pour cela je vais vous présenter un outil permettant l’import du format CityGML dans PostGIS  version 2 .0.3

Ci-dessous le lien pour accéder à la page de téléchargement de PostgreSQL pour Windows :

 PostgreSQL Windows

image

 

 

J’ai développé cet outil en C# 2010 avec :

image

Ci-dessous un extrait de l’article Wikipedia sur GDAL http://fr.wikipedia.org/wiki/GDAL

GDAL est une bibliothèque libre permettant de lire et de traiter un très grand nombre de format d'images géographiques (notamment GeoTIFF et ECW) depuis des langages de programmation tels que C, C++, C sharp / .Net, Java, Ruby, VB6, Perl, Python, ou encore le langage statistique R. Un sous-ensemble de cette bibliothèque est la bibliothèque OGR permettant d'accéder à la plupart des formats courants de cartes vectorielles (à l'exception notable d'AutoCAD).

La version binaire inclut de nombreux utilitaires de conversion et de transformation et de reprojection pour traiter directement les photos ou les vecteurs.

Cette bibliothèque est un des piliers des systèmes d'informations géographique libres, car elle permet d'assurer la compatibilité avec de nombreux systèmes commerciaux reposant sur des formats propriétaires tout autant que sur les normes de l'Open Geospatial Consortium.
Logiciels utilisant GDAL/OGR

  • Quantum GIS
  • UMN Mapserver
  • GRASS GIS
  • gvSIG
  • JMap

Quelques liens :

image

BS Contact Geo permet la visualisation de données au format CityGML,VRML, X3D, KMZ, COLLADA, Open JT.

Lien : BS Contact Geo

 

Le format CityGML (qui est un standard de l’OGC) est la référence pour l’échange de modèles 3D de villes, on parle de villes numériques, de cités virtuelles. CityGML est basé sur le format XML , il est implémenté comme un schéma d’application pour le langage ‘Geography Markup Language version 3.1.1 (GML3). ‘ , la norme internationale pour l’échange de données spatiales délivré par ‘Open Geospatial Consortium (OGC)’  et le ‘TC211 ISO’ . CityGML est un standard officiel de l’OGC et peut utilisé gratuitement.

Ci-dessous la traduction de la première page du document :

OGC ® City Geography Markup Language (CityGML) Norme d'encodage

1 Champ d'application

Ce document est la norme d’encodage de l'OGC pour la représentation, le stockage et l'échange de vile 3D virtuelle et de modèles de paysage. CityGML est implémenté comme un schéma d'application de la version 3.1.1 Geography Markup Language (GML3).

Les modèles CityGML partagent des données complexes et géoréférencées du vecteur 3D avec la sémantique liée aux données. Contrairement à d'autres formats vectoriels 3D, CityGML est basé sur un riche modèle d'information générale en plus de la géométrie et d’une information sur l’apparence. Pour les zones spécifiques à un domaine, CityGML fournit également un mécanisme d’extension pour enrichir les données avec des objets identifiables en vertu de la préservation de l'interopérabilité sémantique.

Les domaines d'application visés incluent explicitement la planification urbaine et paysagère; la conception architecturale; les activités touristiques et de loisirs; les cadastres 3D; des simulations environnementales; les télécommunications mobiles; la gestion des catastrophes; la sécurité civile;  la navigation par véhicule et piétonne; les simulateurs d’entrainement et la robotique mobile.

CityGML est considéré comme source de format pour la 3D portraying. Les informations sémantiques contenues dans le modèle peuvent être utilisées dans le processus de définition du style de représentation lors de la génération de fichiers au format KML/COLLADA ou X3D. Le service approprié pour ce processus est l'OGC Web 3D Service (W3DS). Un service basé sur l'image pour les paysages virtuel en 3D et pour les modèles de ville celui-ci est assurée par le Service OGC Web View (WVS).

Caractéristiques du CityGML:

  • L'information géospatiale modèle (ontologie) pour les paysages urbains est basé sur la famille ISO 191xx
  • GML3 représentation de géométrie 3D, sur le modèle de la norme ISO 19107
  • Représentation des caractéristiques d'objets surfacique (textures, matériaux)
  • Les taxonomies et les agrégations
    o Modèles Numériques de Terrain comme une combinaison de (y compris imbriquée) réseaux triangulés irréguliers (TINs), les rasters réguliers, cassures et les lignes de squelettisation,
    o Sites (actuellement bâtiments, ponts et tunnels)
    o Végétation (surfaces, volumes, et objets isolés avec classification de la végétation)
    o Hydrographie (volumes, surfaces)
    o Réseaux de transport (structures de graphes et surfaces de données 3D )
    o Occupation du sol (représentation thématique des zones d’occupation du sol)
    o Matériel urbain
    o objets génériques et attributs de la ville
    o groupes (récursif) définissable par l'utilisateur
  • modèle multi-échelle de 5 niveaux de détail (LOD):
    o LOD0 - régionale, le paysage
    o LOD1 - ville, région
    o LOD2 – quartiers (ville), projets
    o LOD3 - modèles architecturaux (extérieur), points de repère
    o LOD4 - modèles architecturaux (intérieur)
  • visualiser simultanément différents niveaux de détail , généralisation des relations entre des objets de différent niveaux de détail
  • connexions topologiques optionnelles entre les objets (sous) géométrique
  • Extensions de domaine d'application (ADE): ajouts spécifiques dans CityGML, le schéma  permet de définir des extensions spécifiques, par exemple la simulation de la pollution sonore, ou pour enrichir CityGML par les propriétés de la nouvelle Norme nationale du bâtiment ‘National Building Information Model Standard’ (NBIMS) des États-Unis

Ci-dessous des extrait du document ‘OGC City Geography Markup Language (CityGML) Encoding Standard’ matérialisant les différents niveaux de détail.

image

image

image

image

image

image

image

image

Quelques liens pour plus d’informations :

Installation

 

Cliquez sur le lien CityGML2PostGIS_setup.exe pour télécharger le programme d’installation, puis lancez l’exécution .

Cliquer sur le bouton Suivant à chaque étape, puis sur le bouton Terminer.

image

image

 image

image

image

image

image

Utilisation

image Cliquer sur cet icône pour vous connecter à la base de données qui contiendra vos données CityGML, ce qui implique que vous avez PostgreSQL d’installé avec la version PostGIS 2.0

image

image Cliquer sur cet icône pour ouvrir un fichier CityGML, le répertoire par défaut est le répertoire Data sous le répertoire d’installation de l’application

image

 

image

Faites un clic droit dans la vue pour faire apparaitre le menu de BS Contact

image

Sélectionner l’onglet PostGIS

image

image Cliquer sur cet icône pour transférer le contenu du fichier CityGML dans la base de données, dans cette version du programme l’existence d’une table portant le même nom n’est pas réalisée. Le nom de la table qui sera créée est Building  qui est un membre de <cityObjecctMember>, ci-dessous un extrait du fichier CityGML .

 

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>


<CityModel xmlns="http://www.citygml.org/citygml/1/0/0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.citygml.org/citygml/1/0/0 http://www.citygml.org/citygml/1/0/0/CityGML.xsd">


 


  <gml:name>Sample City Model exported by LandXplorer (c) 2005 3D Geo GmbH</gml:name>


 


  <cityObjectMember>


    <Building gml:id="ID_15_D">


      <lod2Solid>


        <gml:Solid>


          <gml:exterior>


            <gml:CompositeSurface>


              <gml:surfaceMember>


                <gml:OrientableSurface orientation="+">


                  <gml:baseSurface>


                    <gml:Polygon>


                      <gml:exterior>


                        <gml:LinearRing>


                          <gml:pos srsDimension="3">583.197265625 920.46484375 19.2999999523163</gml:pos>


                          <gml:pos srsDimension="3">583.197265625 920.46484375 19.3296172618866</gml:pos>


                          <gml:pos srsDimension="3">583.197265625 920.46484375 19.3268783092499</gml:pos>


                          <gml:pos srsDimension="3">583.197265625 920.46484375 19.2999999523163</gml:pos>


                        </gml:LinearRing>


                      </gml:exterior>


                    </gml:Polygon>


                  </gml:baseSurface>


                </gml:OrientableSurface>


              </gml:surfaceMember>


        </gml:Solid>


      </lod2Solid>


    </Building>


  </cityObjectMember>


</CityModel>






image







Dans la combobox sélectionner la table qui vient d’être créée dans la base données puis cliquer sur le bouton Load Table



image



 



Conclusion





Ce billet met à disposition un outil permettant de visualiser/importer des données CityGML dans une base de données PostgreSQL/PostGIS, il reste très simple puisqu’il n’y a pas de vérification d’existence des tables présentes dans la base de données lors de l’import.

mardi 10 janvier 2012

IFC2PG 3D: Industry Foundation Classes vers PostGIS 3ème Partie

 

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.








  1. Arborescence du fichier IFC,


  2. Zone d’affichage 3D du fichier IFC (IFCEngine OCX) ,


  3. Gestion des niveaux (DoSpatial),


  4. 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:






    1. Cliquez sur le bouton OK,


    2. Sélectionnez un objet IfcBuildingStorey,


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





    • puis enregistrez le avec l’extension 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



    MeshLab



    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


















    Cette section montre les options pour les utilisateurs plus expérimentés :









    Contrôles de navigation avancés:




    • touche MAJ: augment la vitesse tant qu'elle est pressée


    • menu 'Vitesse': contrôle la vitesse de déplacement


    • touche CTRL: mode de déplacement alternatif selon le mode






















    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.

    jeudi 29 décembre 2011

    Export IFC vers PostGIS 2ème Partie

    IFC2PG : Industry Foundation Classes vers PostGIS 2ème Partie

     

    Introduction

    Ce billet est la suite de la première partie que vous trouverez ici IFC vers PostGIS 1ère partie, prenez en connaissance avant de poursuivre votre lecture.

    Le développement de l’outil est réalise dorénavant sous Visual Studio 2010 en VB.Net.

    Nouveau composant

    J’ai ajouté un nouveau composant DotSpatial qui permet de visualiser l’export 2D des objets du fichier IFC.

    DotSpatial est développé par les membres de l'équipe open source SIG de MapWindow, et la communauté de développeurs d'OSGeo .NET

    Evolution

    J’ai rajouté les objets suivants dans l’export :

    • IfcSpace
    • IfcSlab
    • IfcColumn
    • IfcDoor
    • IfcWindow

    Ces objets sont exportés sous forme de géométrie de type polygon.

    J’ai modifié l’export de l’objet IfcWall qui maintenant donne une géométrie de type polygon.

    L’interface s’est enrichi d’une vue 2D permettant de visualiser le résultat des exports.

    Installation

    Téléchargez l’outil IFC2PG : ifc2pg.rar

    Décompressez l’archive sous c:\

    Créez un raccourci sur le bureau.

     

    Utilisation

     

    Lancez l’application par un double-clic sur le raccourci.

    1. Arborescence du fichier IFC,
    2. Zone d’affichage 3D du fichier IFC (IFCEngine OCX) ,
    3. Gestion des niveaux (DoSpatial),
    4. 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 réaliser l’export des données, sélectionner un objet IfcBuildingStorey puis faites un clic droit pour faire apparaitre un menu contextuel.

    Ce menu permet de réaliser un export par type d’objet (IfcWallStandardCase, IfcSpace, IfcSlab, IfcColumn, IfcDoor, IfcWindow) en sélectionnant la ligne correspondante dans le menu, ou bien un export par IfcBuildindStorey, tous les objets seront alors exportés.

    Ce menu permet également de gérer l’affichage des objets dans la vue 3D par type d’objet ou pour tous les objets contenus par l’objet IfcBuildingStorey.

    Choisissez Export de tous les Objets dans le menu, vous devriez obtenir ceci :

    Pour que les objets soient transférés dans PostGIS, il faut se connecter à une base de données:

    1. Cliquez sur le bouton OK,
    2. Sélectionnez un objet IfcBuildingStorey,
    3. faites un clic droit, puis choisissez Export de tous les Objets dans le menu,

    Il ne vous reste plus qu’a allez visualiser le contenu tables avec par exemple OpenJump.

    Important

    Je ne vide pas les tables avant export, donc pensez à les vider pour ne pas vous retrouvez avec des doublons, je vais réfléchir à comment gérer ce risque de doublons.

    Conclusion

    Nous voila à la fin de cette seconde partie, je vais continuer à améliorer l’interface de l’outil, ajouter de nouveaux objets… Rendez-vous prochainement dans une troisième partie.

    Je vais également réfléchir à un export 3D sous PostGIS 2.0 Sourire

    jeudi 1 décembre 2011

    Export IFC vers PostGIS 1ere Partie

     

    IFC2PG : Industry Foundation Classes vers PostGIS 1ere Partie

     

    Introduction

    Je vais vous présenter l’outil de conversion de fichier IFC vers PostGIS que je suis en train de réaliser, outil développé sous en VB.Net  2008 avec :

    • le composant IFCsvr ActiveX de SECOM Co. Ltd.,
    • la librairie IFC Engine DLL de TNO Building Research .

    Cet outil doit permettre d’exporter les données d’un fichier IFC vers une base de données PostGIS, ce billet s’enrichira au fur et à mesure de l’évolution du développement de l’outil.

    IFCsvr ActiveX

    Le composant ActiveX IFCsvr est un composant ActiveX pour le traitement de données IFC(Industry Foundation Classes) . Ce composant fournit un environnement de programmation compatible IFC avec Microsoft Visual Basic, Visual Basic pour Application, VC + +, C #, Visual Basic.Net, ...

    Ce composant est gratuit pour un usage non commercial.

    Voici le lien pour le groupe ifcsvr-users : ifcsvr-users · IFCsvr ActiveX Component

    Il vous faudra vous référencer sur le groupe pour pouvoir télécharger le composant (IFCsvrR300) et autres documents.

    IFC Engine DLL

    Voici les lien pour la librairie IFC Engine : IFCEngine ou IFCdll

    Cette librairie est gratuite pour un usage non commercial.

     

     

    Industry Foundation Classes

     

     

    Ci-dessous des extraits de l’article Wikipédia sur le format IFC :

    Source : Article Industry Foundation Classes de Wikipédia en français (http://fr.wikipedia.org/wiki/Industry_Foundation_Classes).

    Début citation.

    Le format IFC (Industry Foundation Classes) est un format de fichier orienté objet utilisé par l'industrie du bâtiment pour échanger et partager des informations entre logiciels.

    Origine des IFC

    Ce standard est né de l'initiative de l'IAI (International Alliance for Interoperability), associant des entreprises du secteur de la construction et des éditeurs de logiciels. Cette organisation est divisée en chapitres nationaux dont BuildingSmart est le représentant français. Elle a pour objectif principal de favoriser l'interopérabilité des logiciels dans le secteur de la Construction.

    Building Information Modeling

    IFC est le format usé communément par le BIM (Building Information Modeling)

    Dans l'acceptation du BIM, le format IFC, standard ouvert compréhensible de tous les acteurs de la construction, organise les objets de l'industrie de la construction, les familles, autour d'un modèle informatique 3D, le BIM . Ces objets supportent le cycle de vie complet d'un bâtiment incluant les débuts-la conception, la documentation et la construction-, l'exploitation des bâtiments, la gestion des installations (facility management) et, enfin, la démolition et l'élimination2.

    Spécification des IFC

    Le modèle de données IFC est spécifié en langage EXPRESS, conforme à la norme ISO 10303-11 (STEP part 11). C'est un modèle orienté objet qui définit des classes associées à tous les objets de construction. Un modèle d'ouvrage est donc un ensemble hiérarchisé d'instances de classes du modèle IFC. Les échanges s'effectuent par l'intermédiaire de fichiers STEP-21 (ISO 10303-21) ou de fichiers XML (ifcXML).

    Par exemple, la hiérarchisation d'un bâtiment s'effectue ainsi :

    • une zone contient plusieurs bâtiments.
    • un bâtiment contient plusieurs étages
    • un étage contient plusieurs salles etc.

    Formats

    Formats IFC4
    Format Définition
    .ifc Fichier IFC utilisant la structure STEP conformément à ISO10303-21. Structuration des données selon les spécifications Express. C'est le format d'échange par défaut
    .ifcXML Fichier IFC utilisant la structure XML. Le format .ifcXML peut être généré directement par l'application ou à partir d'un fichier .ifc, conformément à ISO10303-28, la représentation XML des schémas et données Express.

    Le format .ifcXML est normalement 300-400% plus gros que le fichier .ifc

    .ifcZIP Fichier IFC utilisant l'algorithm de compression PKzip 2.04g

    Lien externe

    • Site du Projet Expert En france, le projet Expert rassemble les principaux acteurs du monde de la construction et du Bâtiment, il vise à promouvoir l'utilisation des IFC et de la BIM dans ce secteur. Il est soutenu par l'État (ministère chargé de la construction).

    Fin citation.

     

    Installation

    Téléchargez l’outil IFC2PG : ifcpg.rar

    Décompressez l’archive sous c:\

    Créez un raccourci sur le bureau.

     

    Utilisation

     

    Lancez l’application par un double-clic sur le raccourci.

     

    L’interface s’enrichira au fur a mesure du développement, la barre d’outil principal ne comporte que deux icônes :

    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

      1. Arborescence du fichier IFC, les icônes avec une ampoule peuvent être éteints (dé affichage de tous les objets enfants) ou allumés (affichage de tous les objets enfants)
      2. Zone d’affichage du fichier IFC (IFCEngine OCX)
      3. Barre d’outils pour interagir avec l’affichage :

                    

          1. Rotation 3D
          2. Zoom
          3. Déplacement
          4. Vue de Face
          5. Vue de Coté

    Dé afficher les deux derniers IfcBuildingStorey

    Connecter vous à une base PostGIS

    Export des données vers PostGIS

    A ce stade du développement, pour réaliser un export il faut faire un clic droit sur un objet pour ouvrir un menu qui contiendra l’ordre d’export. Seul les objets IfcWallStandardCase (Mur) peuvent être exportés, un par un en sélectionnant chaque IfcWallStandardCase  ou bien en sélectionnant l’objet IfcBuildingStorey (Etage) pour exporter tous les objets IfcWallStandarCase.

    Lorsque vous cliquez sur un objet appartenant à un objet IfcBuildingStorey, celui-ci passe en surbrillance.

    Sélectionnez le 4eme objet IfcBuildingStorey, faites un clic droit et sélectionnez “Export de tous les murs” dans le menu.

    La fonction va créer la table IfcWallStandardCase si elle n’existe pas, dans la base de données PostGIS à laquelle vous êtes connecté, il n’y a pas encore de gestion de doublons. La structure de la table pourra changer avec les prochaines version de l’outil. Faites moi savoir si vous avez des suggestions quand à son contenu.

     

    Il ne vous reste plus qu’a allez visualiser le contenu de la table avec par exemple OpenJump.

    Le champ géométrique de la table contient les axes des murs, un second champ géométrique pourrait contenir le contour, a voir.

    Conclusion

    Nous voila à la fin de cette première partie, l’outil réalise l’export des axes des murs (IfcWallstandardCase), je vais rajouter petit à petit l’export des autres objets.

    J’attends vos remarques, suggestions ce premier jet d’un outil permettant d’exporter les objets d’un fichier IFC vers une bas de données PostGIS.