La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

16 novembre 2005 Présentation du projet final Développement d’un plugin pour l’importation de données 3D normalisées pour la plate-forme Gocad Dans le.

Présentations similaires


Présentation au sujet: "16 novembre 2005 Présentation du projet final Développement d’un plugin pour l’importation de données 3D normalisées pour la plate-forme Gocad Dans le."— Transcription de la présentation:

1 16 novembre 2005 Présentation du projet final Développement d’un plugin pour l’importation de données 3D normalisées pour la plate-forme Gocad Dans le cadre du cours Application SIG SCG-64739 Par Etienne Desgagné 20 avril 2006 Présentation du projet final Développement d’un plugin pour l’importation de données 3D normalisées pour la plate-forme Gocad Dans le cadre du cours Application SIG SCG-64739 Par Etienne Desgagné 20 avril 2006

2 16 novembre 2005  Introduction –Mise en contexte –Définiton du projet  Analyse et conception  Réalisation  Échéancier  Démonstration  Tests et résultats –Résultats, limites et travaux futurs  Introduction –Mise en contexte –Définiton du projet  Analyse et conception  Réalisation  Échéancier  Démonstration  Tests et résultats –Résultats, limites et travaux futurs Plan de la présentation

3 16 novembre 2005  Situé dans le cadre du projet de maîtrise: ÉLABORATION DE CONCEPTS NÉCESSAIRES À LA MISE EN PLACE D’UN SIG 3D Application XML en géologie  Mettre en place un système permettant: –Le couplage d’un outil de modélisation 3D avec un SGBD –Le requêtage tridimensionnel d’objets géométriques adapté au contexte de modélisation géologique adapté au contexte de modélisation géologique  Adopter une approche générique et normative visant l’interopérabilité  Situé dans le cadre du projet de maîtrise: ÉLABORATION DE CONCEPTS NÉCESSAIRES À LA MISE EN PLACE D’UN SIG 3D Application XML en géologie  Mettre en place un système permettant: –Le couplage d’un outil de modélisation 3D avec un SGBD –Le requêtage tridimensionnel d’objets géométriques adapté au contexte de modélisation géologique adapté au contexte de modélisation géologique  Adopter une approche générique et normative visant l’interopérabilité IntroductionIntroduction Mise en contexte

4 16 novembre 2005  Utilité du 3D en géologie –Besoin de systèmes pour gérer la 3 e dimension  Plusieurs CAD ont atteint une certaine maturité côté modélisation 3D (ex. gocad) –Mais capacités limitées pour le stockage des données descriptives et pour l’analyse 3D  Les SIG et les Geo-SGBD offrent des fonctionnalités intéressantes pour la gestion de données spatiales –Mais ne permettent pas la gestion efficace des modèles volumétriques 2.5 D2.5 D analyse spatiale 2Danalyse spatiale 2D  Utilité du 3D en géologie –Besoin de systèmes pour gérer la 3 e dimension  Plusieurs CAD ont atteint une certaine maturité côté modélisation 3D (ex. gocad) –Mais capacités limitées pour le stockage des données descriptives et pour l’analyse 3D  Les SIG et les Geo-SGBD offrent des fonctionnalités intéressantes pour la gestion de données spatiales –Mais ne permettent pas la gestion efficace des modèles volumétriques 2.5 D2.5 D analyse spatiale 2Danalyse spatiale 2D IntroductionIntroduction Mise en contexte

5 16 novembre 2005 IntroductionIntroduction Architecture global du système

6 16 novembre 2005  Développer une application permettant d’importer dans un outil de modélisation 3D (Gocad), des données géométriques 3D sous format standard disponible sur un serveur. –Obtenir les données à partir d’une URL –“Parser” les données –Convertir les données en objets géométriques Gocad –Afficher les objets à l’écran  Composante d’une architecture multi-tiers  Développer une application permettant d’importer dans un outil de modélisation 3D (Gocad), des données géométriques 3D sous format standard disponible sur un serveur. –Obtenir les données à partir d’une URL –“Parser” les données –Convertir les données en objets géométriques Gocad –Afficher les objets à l’écran  Composante d’une architecture multi-tiers IntroductionIntroduction Définition et objectifs du projet

7 16 novembre 2005  Application-cliente : Gocad  Serveur d’application : Apache Tomcat  Langages de programmation : –Java –C++  Pont entre Java et C++ : JNI  Format de stockage et d’échange : XML (GML)  Parser SAX : JAXP et Apache Xerces  Application-cliente : Gocad  Serveur d’application : Apache Tomcat  Langages de programmation : –Java –C++  Pont entre Java et C++ : JNI  Format de stockage et d’échange : XML (GML)  Parser SAX : JAXP et Apache Xerces Analyse et conception Choix des technologies

8 16 novembre 2005 Analyse et conception Justification des choix technologiques  Gocad: Beaucoup utilisé en géologie et décision départementale  Langage Java: –Portabilité, code indépendant des systèmes d’exploitation –Robustesse –Orienté-objets –Grande disponibilité de librairies et produits connexes (Eclipse, parser, serveur d’application, …) –Permet de développer gratuitement –Réutilisation du code au niveau du serveur d’application  JNI : Permet le passage entre Java et code natif dans Gocad  Tomcat: Développement en Java, gratuit, bonne réputation, performance similaire aux produits concurrents commerciaux  GML 3 : Norme OGC pour représentation de données géométriques 3D  Parser SAX : Plus rapide car ne nécessite pas la création d’un arbre représentant l’ensemble de notre fichier XML, seulement quelques balises représentant l’ensemble de notre fichier XML, seulement quelques balises bien-définies nous intéresse.  Gocad: Beaucoup utilisé en géologie et décision départementale  Langage Java: –Portabilité, code indépendant des systèmes d’exploitation –Robustesse –Orienté-objets –Grande disponibilité de librairies et produits connexes (Eclipse, parser, serveur d’application, …) –Permet de développer gratuitement –Réutilisation du code au niveau du serveur d’application  JNI : Permet le passage entre Java et code natif dans Gocad  Tomcat: Développement en Java, gratuit, bonne réputation, performance similaire aux produits concurrents commerciaux  GML 3 : Norme OGC pour représentation de données géométriques 3D  Parser SAX : Plus rapide car ne nécessite pas la création d’un arbre représentant l’ensemble de notre fichier XML, seulement quelques balises représentant l’ensemble de notre fichier XML, seulement quelques balises bien-définies nous intéresse.

9 16 novembre 2005 Analyse et conception Conception de l’application TOMCAT Fichiers GML Parser de données Conversion de GML vers format strGeom Application-cliente Création et affichage des objets géométriques avec l’API de Gocad PARSER SAX JAVA Ex: [(1 2 3,4 5 6,7 8 9 ),(4 6 3,8 9 4,7 2 3)] PLUGIN GOCAD C++ Serveur de données JNI solide_demo.xml ImportObjectsFromJava http://127.0.01:8080/gml/solide_demo.xml Passage de la géométrie entre Java et C++

10 16 novembre 2005 Analyse et conception Problématiques et contraintes (1/2)  Essayer de rester générique (éviter de tout coder dans l’API propriétaire de Gocad ) –On parse le GML et on récupère les coordonnées d’un côté –On construit les objets propriétaires de l’autre  Complexité du passage entre Java et C++ (JNI) –Essayer de garder le plus simple possible les échanges entre les deux (codification de la géométrie dans une string)  Réaliser un “mapping” entre les objets Gocad et la représentation en GML –Analyse de la structure et du modèle de données de Gocad –Analyse de la norme GML  Essayer de rester générique (éviter de tout coder dans l’API propriétaire de Gocad ) –On parse le GML et on récupère les coordonnées d’un côté –On construit les objets propriétaires de l’autre  Complexité du passage entre Java et C++ (JNI) –Essayer de garder le plus simple possible les échanges entre les deux (codification de la géométrie dans une string)  Réaliser un “mapping” entre les objets Gocad et la représentation en GML –Analyse de la structure et du modèle de données de Gocad –Analyse de la norme GML

11 16 novembre 2005 Analyse et conception Problématiques et contraintes (2/2)  L’utilisation de l’API GOCAD requiert la création d’un Plugin –Création et développement dans une structure arborescente parallèle à celle de Gocad –Structure complexe, documentation incomplète et non à jour  L’utilisation de l’API GOCAD requiert la création d’un Plugin –Création et développement dans une structure arborescente parallèle à celle de Gocad –Structure complexe, documentation incomplète et non à jour

12 16 novembre 2005 Analyse et conception Modèle de classe GobjCreator createTsurf(StrGeom,nom) void createGocadObjects init() : JNIEnv* create (env*,fichierGML,nom) void StrGeom StrGeom(string geom) getNbElement() : int getTypeGeom() : string getElement(int pos) : strGeom getPoint3d(int pos) : Point3D tokenize(str,vector,delimiters):void getNbOccurence(str,el) : int m_nbElement : int m_type : string m_strGeom : string SAXParser SAXParser(uri) getStrGeomFromGML(args):String setStrGeom(String strGeom): void m_strGeom : string SAX_contentHandler startDocument(…) void endDocument(…) void startElement(…) void endElement(…) void Characters(…) void CreateurDeGML Convertisseur de données Gocad ASCII -> GML

13 16 novembre 2005 Analyse et conception Structure de données géométriques :Surface  Dans Gocad, les surfaces (TSurf) sont composées d’un ensemble de TFace qui sont représentées par un maillage de triangles interconnectés.

14 16 novembre 2005 Analyse et conception Structure de données géométriques :Solide  Dans Gocad, les solides (TSolid) sont composées d’un ensemble de TVolume qui sont représentées par un maillage de tétraèdres interconnectés.

15 16 novembre 2005 Analyse et conception GMLGML  Dans la norme GML 3.0, les objets 3D peuvent être représentées par des géométries composées (geometric composite) c’est-à-dire des objets composés d’une collection de primitives homogènes. On y retrouve: –Les compositeCurve –Les compositeSurface –Les compositeSolid  Dans la norme GML 3.0, les objets 3D peuvent être représentées par des géométries composées (geometric composite) c’est-à-dire des objets composés d’une collection de primitives homogènes. On y retrouve: –Les compositeCurve –Les compositeSurface –Les compositeSolid

16 16 novembre 2005 Analyse et conception CompositeSurfaceCompositeSurface

17 16 novembre 2005 Analyse et conception CompositeSolidCompositeSolid

18 16 novembre 2005 RéalisationRéalisation Création des objets géométriques (API Gocad) strGeom en provenance de Java

19 16 novembre 2005 RéalisationRéalisation Implémentation du parser SAX  On réagit aux événements: –startDocument –endDocument –startElement –endElement –characters…  Si (nom balise == “CompositeSolid”) {…}  Si (nom balise == “CompositeSurface”) {…}  On réagit aux événements: –startDocument –endDocument –startElement –endElement –characters…  Si (nom balise == “CompositeSolid”) {…}  Si (nom balise == “CompositeSurface”) {…} startDocument(…) void endDocument(…) void startElement(…) void endElement(…) void Characters(…) void SAX_contentHandler

20 16 novembre 2005 RéalisationRéalisation Implémentation de JNI  Dans une classe C++ –On créer une JVM  init() –On récupère notre classe Java env->FindClass("SAXParser")env->FindClass("SAXParser") –On lance la méthode qui démarre le Parser env->CallStaticObjectMethod(classe,methodeID,args)env->CallStaticObjectMethod(classe,methodeID,args) –On récupère la strGeom –On lance la création de l’objet  **Attention à ne pas créer plusieurs JVM!!! –Gestion des thread ( jvm->AttachCurrentThread((void**) &env, NULL);)  Dans une classe C++ –On créer une JVM  init() –On récupère notre classe Java env->FindClass("SAXParser")env->FindClass("SAXParser") –On lance la méthode qui démarre le Parser env->CallStaticObjectMethod(classe,methodeID,args)env->CallStaticObjectMethod(classe,methodeID,args) –On récupère la strGeom –On lance la création de l’objet  **Attention à ne pas créer plusieurs JVM!!! –Gestion des thread ( jvm->AttachCurrentThread((void**) &env, NULL);) createGocadObjects init() : JNIEnv* create (env*,fichierGML,nom) void

21 16 novembre 2005 ÉchéancierÉchéancier Calendrier des activités  Configuration de l’environnement de développement de Gocad (4 sem) –Récupération et installation des composantes (QT, Gogad Dev Kit, VS6) –Création d’un “frame” de Plugin –Des heures de plaisir sur les forums et mailing list  Étude de l’API et création d’objets 3D par programmation (3 sem)  Implémentation de JNI (2 sem)  Étude de la norme et création de fichier GML (2 sem)  Implémentation du Parser Sax (1 sem)  Intégration et tests finaux (2 sem)  **Beaucoup de temps perdu au départ pour des technicalités!!! –Bouchés-doubles à la fin  Configuration de l’environnement de développement de Gocad (4 sem) –Récupération et installation des composantes (QT, Gogad Dev Kit, VS6) –Création d’un “frame” de Plugin –Des heures de plaisir sur les forums et mailing list  Étude de l’API et création d’objets 3D par programmation (3 sem)  Implémentation de JNI (2 sem)  Étude de la norme et création de fichier GML (2 sem)  Implémentation du Parser Sax (1 sem)  Intégration et tests finaux (2 sem)  **Beaucoup de temps perdu au départ pour des technicalités!!! –Bouchés-doubles à la fin

22 16 novembre 2005 Tests et résultats Réalisation des tests finaux  Nécessite des fichiers GML pour tester… –Développement d’un convertisseur du format de fichier ASCII de Gocad vers GML 3  Le système fonctionne bien  Performance acceptable pour la récupération de petits et moyens fichiers GML à partir du serveur Tomcat pour affichage dans Gocad (en local!)  Perte de performance dans le cas de gros fichier contenant plusieurs milliers de triangles.  Nécessite des fichiers GML pour tester… –Développement d’un convertisseur du format de fichier ASCII de Gocad vers GML 3  Le système fonctionne bien  Performance acceptable pour la récupération de petits et moyens fichiers GML à partir du serveur Tomcat pour affichage dans Gocad (en local!)  Perte de performance dans le cas de gros fichier contenant plusieurs milliers de triangles.

23 16 novembre 2005 Tests et résultats Limites et travaux futurs  Seulement la gestion des surfaces et des solides à été implémentée comme “proof of concept”  Le convertisseur de format ne créer que des surfaces  Optimisation du système  La gestion des propriétés associées à nos objets géologiques n’est pas encore traitée –Intégration de la structure SIGEOM et/ou NADM à notre structure GML –Ajout de fonctionnalité d’analyse spatiale tridimensionnelle Développement d’algorithmes sous TomcatDéveloppement d’algorithmes sous Tomcat  Stockage natif XML dans Oracle  Choix et implantation d’un langage de requête  Seulement la gestion des surfaces et des solides à été implémentée comme “proof of concept”  Le convertisseur de format ne créer que des surfaces  Optimisation du système  La gestion des propriétés associées à nos objets géologiques n’est pas encore traitée –Intégration de la structure SIGEOM et/ou NADM à notre structure GML –Ajout de fonctionnalité d’analyse spatiale tridimensionnelle Développement d’algorithmes sous TomcatDéveloppement d’algorithmes sous Tomcat  Stockage natif XML dans Oracle  Choix et implantation d’un langage de requête

24 16 novembre 2005 DémoDémo

25 DémoDémo

26 Merci!Merci!


Télécharger ppt "16 novembre 2005 Présentation du projet final Développement d’un plugin pour l’importation de données 3D normalisées pour la plate-forme Gocad Dans le."

Présentations similaires


Annonces Google