Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
Université de La Rochelle
Pôle Science et Technologie
_____
IUP Génie Informatique
Conception et développement
Rapport du stage en entreprise
effectué du 24 février au 11 juillet 2003
au sein de la société
Soutenu par :
Maître de stage :
Tuteur :
Jean-Baptiste SERIEYS
Vélizar VESSELINOV
Thierry BOUWMANS
Année scolaire :
2002-2003
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 3 - - 3 -
JB.Serieys – Page 3 –
Remerciements
Je remercie la société Techsia pour m’avoir accepté au sein de son entreprise. Je tiens à
remercier tout particulièrement mon maître de stage Vélizar VESSELINOV qui m’a intégré
totalement à l’équipe et qui m’a beaucoup aidé au cours de ce stage.
Je suis reconnaissant envers l’IUP Génie Informatique de La Rochelle qui a accepté ce
stage.
Je tiens aussi à saluer l’ambiance conviviale qui règne au sein de cette entreprise.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 4 - - 4 -
JB.Serieys – Page 4 –
- SOMMAIRE -
ENGLISH ABSTRACT .......................................................................................... 5
INTRODUCTION ................................................................................................... 6
I. PRESENTATION DE L’ENTREPRISE ........................................................................... 7
1) La société Techsia ................................................................................................. 7 2) Activités .................................................................................................................. 8
a. Secteur d’activité et positionnement .............................................................................. 8 b. Le savoir-faire ................................................................................................................ 8
3) Organisation interne ............................................................................................... 9 4) Les produits .......................................................................................................... 10
a. La prestation de services............................................................................................. 11 b. Les logiciels ................................................................................................................. 11
II. ENVIRONNEMENT DE TRAVAIL .............................................................................. 14
1) Organisation ......................................................................................................... 14 2) Réunions .............................................................................................................. 14 3) Logiciels pour travailler en équipe ....................................................................... 16
a. Pour développer .......................................................................................................... 16 b. Pour communiquer ...................................................................................................... 16
III. OUTILS DE DEVELOPPEMENT ............................................................................... 17
1) Visual studio .net .................................................................................................. 17
2) QT ......................................................................................................................... 18
IV. TRAVAIL PERSONNEL ........................................................................................ 20
1) L’offre de stage ..................................................................................................... 20 2) Aperçu de Techlog ............................................................................................... 21 3) Conversion d’images vectorielles ........................................................................ 22
a. Définition du besoin ..................................................................................................... 22 b. Description des formats ............................................................................................... 22 c. Etapes de la recherche................................................................................................ 24 d. Développement de la solution ..................................................................................... 24 e. Tests............................................................................................................................ 26
4) Importation et exportation de données ................................................................ 27 a. Outil d’importation personnalisée de données ............................................................. 27 b. Importer des tableaux à 3 dimensions ......................................................................... 29 c. Participer à l’interfaçage avec un autre logiciel ........................................................... 30
5) Divers.................................................................................................................... 31
CONCLUSION ..................................................................................................... 36
BIBLIOGRAPHIE ................................................................................................ 37
GLOSSAIRE ........................................................................................................ 38
ANNEXES ........................................................................................................... 39
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 5 - - 5 -
JB.Serieys – Page 5 –
ENGLISH ABSTRACT
Techsia is a company which works in diverse scientific sectors like Geosciences and
Process Engineering.
I am currently in the master’s program of engineering at the Computing IUP of La
Rochelle. This professional formation is achieved through a five-month placement I did at
Techsia. The purpose is to develop innovative software within a team of programmer analysts.
I develop some programs with the team. Results are good and Techsia’s members are
satisfied with my work.
To sum up, I correct existing problems in the application and I create programs to meet the
needs. It’s very interesting to work with other people on innovative software.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 6 - - 6 -
JB.Serieys – Page 6 –
INTRODUCTION
Dans le cadre de l’IUP informatique de La Rochelle, j’ai effectué le stage en entreprise de
fin d’année au sein de la société Techsia. C’est parmi une équipe de 7 développeurs que j’ai
travaillé pendant ces 20 semaines.
Techsia est une jeune société située à Montpellier qui propose des logiciels et des études
dans le domaine des Géosciences. C’est après la consultation de mon cv et le passage d’un
entretien que j’ai été sélectionné pour intégrer l’équipe et participer à divers développements.
Dans un premier temps je vais présenter l’entreprise pour mieux cerner son activité.
Ensuite, après avoir expliqué l’environnement dans lequel je travaillais ainsi que les outils de
développement utilisés ; j’évoquerais le travail que j’ai pu réaliser. Enfin, je dresserai un bilan
professionnel et personnel de ce stage.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 7 - - 7 -
JB.Serieys – Page 7 –
I Présentation de l’entreprise
1) La société Techsia
Techsia est une société créée le 25 octobre
2000 par trois associés. Stéphanie Gottlib-Zeh,
docteur en Géophysique et Présidente Directrice
Générale de la société, est à l’origine de cette
création. C’est au cours de sa thèse liée au
domaine des Géosciences réalisée à Total Fina Elf
qu’elle a l’idée de créer Techsia. Le projet initial a
ainsi été lauréat, deux années consécutives (1999
et 2000), du concours national d’aide à la création
d’entreprise de technologies innovantes.
Le siège social de TECHSIA est situé au CEEI CAP ALPHA (Centre Européen
d’Entreprises et d’Innovation) localisé à Clapiers (34), aux portes de Montpellier. L’effectif
de la société est de 13 personnes et son capital s’élève à 343 728 euros. Techsia a réalisé un
chiffre d’affaires de 323 000 euros en 2001 et de 350 000 en 2002. Les prévisions pour
l’année 2003 sont en forte hausse par rapport aux années précédentes.
MONTPELLIER
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 8 - - 8 -
JB.Serieys – Page 8 –
2) Activités
a. Secteur d’activité et positionnement
L’activité de Techsia se positionne dans les domaines des technologies innovantes, et plus
précisément dans la chaîne du traitement et de l’analyse des données acquises dans les puits
de forage. Techsia est à la fois éditeur de logiciels et prestataire de services (réalisation
d’études).
Ses méthodes s’appliquent au traitement de données volumineuses et/ou hétérogènes, dans
le domaine des géosciences (géophysique, géologie, gisement) en général, et de
l’interprétation des données de forage/sondage (géologiques, pétrophysiques, diagraphiques et
géophysiques) en particulier. Elle travaille également dans le domaine des procédés (analyse
multiple de fluides complexes : thermodynamique appliquée).
b. Le savoir-faire
Le savoir-faire de Techsia découle de cinq années de recherche et développement qui lui
ont permis de mettre au point des méthodes et des outils innovants destinés à améliorer
l’interprétation de données géologiques. A ce jour plusieurs compagnies pétrolières
internationales exploitent ces méthodes dans le but de mieux caractériser leurs réservoirs
pétroliers.
Techsia possède donc trois métiers principaux :
La pétrophysique : traitement et interprétation des données (diagraphiques et carottes)
acquises au puits.
La géophysique : traitement et interprétation des données sismiques.
Les procédés : analyse des fluides complexes.
Ces trois métiers reposent essentiellement sur un apport informatique considérable grâce
aux compétences de Techsia dans le développement de logiciels performants et adaptés aux
besoins de ses clients.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 9 - - 9 -
JB.Serieys – Page 9 –
3) Organisation interne
Outre son aspect technique, TECHSIA fait également preuve d’une organisation
innovante en regroupant en interne trois pôles de compétences complémentaires en
interaction permanente :
Compétences Métiers
Techsia regroupe des ingénieurs « métiers » dans les domaines des Géosciences
(géophysique, pétrophysique, sédimentologie, thermodynamique et analyse physico-
chimique). Ces compétences « métiers » leur permettent d’appréhender au plus juste les
besoins du client. Leur expertise repose à la fois sur leur haut niveau de qualification et sur
leur culture du monde industriel développée pendant leur parcours. Autour de ces
compétences métiers s’articulent les compétences Statistiques et Informatiques.
Compétences Statistiques et Numériques
Le savoir-faire de Techsia repose sur les méthodes statistiques et numériques les plus
récentes, telles que les réseaux de neurones, l’optimisation paramétrique de systèmes
complexes non linéaires, les plans d’expériences ou les méthodes de Monte-Carlo… Ces
compétences sont entièrement dédiées à la résolution de problématiques « métiers ».
Compétences Informatiques
L’équipe d’informaticiens de Techsia assure l’optimisation des algorithmes et la mise au
point de logiciels scientifiques précis et performants adaptés aux besoins de ses clients.
L’organigramme de l’entreprise est disponible en annexe page 40.
Ces trois compétences se regroupent dans une organisation structurelle originale,
schématisée à la page suivante.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 10 - - 10 -
JB.Serieys – Page 10 –
Ce type d’organisation offre un double avantage :
La garantie de produits de qualité.
La rapidité et la facilité de communication entre les compétences
4) Les produits
Deux activités principales caractérisent Techsia :
La prestation de services.
La conception et le développement de logiciels issus de travaux de recherches et de
développements internes.
PROBLEMATIQUE PROBLEMATIQUE
PARTENARIATS (Entreprises,
Universités,…)
PARTENARIATS (Entreprises,
Universités,…)
CONGRÉS, FORUM CONFERENCES
CONGRÉS, FORUM CONFERENCES
DONNEES DONNEES CLIENT
Opérationnelles
R&D
SAVOIR - FAIRE OFFRE
Compétences METIER
Compétences STATISTIQUE
Compétences INFORMATIQUE
ETUDES ETUDES
Produits
Maintenance Évolutions Formation
LOGICIELS LOGICIELS
PROTOTYPES
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 11 - - 11 -
JB.Serieys – Page 11 –
a. La prestation de services
Techsia propose une prestation de services qui se traduit par des études utiles pour les
géosciences. Ces études sont de deux types :
des études traditionnelles classiques réalisées en pétrophysique.
des études de recherches et de développements visant à optimiser les méthodes de
calcul et d’interprétation du client dans ses domaines d’activités.
Ces études sont principalement réalisées pour le compte de plusieurs clients tels que Total
Fina Elf, Gaz de France et l’Andra, mais aussi des clients anglo-saxons tels que Amerada
Hess (USA), BHP Billiton (AUSTRALIE), Burlington Resources (Canada), British Petroleum
(UK), Marathon Oil, Phillips…
b. Les logiciels
TECHLOG :
Le calibrage de ces données est effectué par l’étude des carottes échantillons de roche
prélevées (à grands frais) dans les parties des réservoirs des couches géologiques traversées
dont on corrèle la description géologique avec les réponses électriques des diagraphies.
Techlog constitue une aide à la modélisation et s’utilise en parallèle avec les logiciels
classiques d’interprétation géologique. Une panoplie complète d’outils statistiques intégrés
(utilisés dans une chaîne logique optimisée) permet une amélioration de la séquence de
travail. Techlog optimise le lien entre le modèle géologique statique (vision interprétée de
l’architecture du sous-sol : œuvre du géologue) et le modèle réservoir dynamique (vision
déduite de l’écoulement des fluides dans les couches productives des réservoirs
d’hydrocarbures, estimation de la production : œuvre de l’ingénieur réservoir).
Techlog est un logiciel de géosciences pour l’interprétation
géologique des diagraphies. C’est un outil qui permet une
exploitation différente et optimisée des informations
contenues dans les enregistrements diagraphiques, c’est à dire
des signaux captés par les sondes généralement descendues
dans les forages pétroliers afin de déterminer à distance, via
des paramètres physiques, la nature du sous-sol.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 12 - - 12 -
JB.Serieys – Page 12 –
2180
2190
2200
2210
2220
2230
Depth
()
CNC0.45 -0.15V/V
ZDEN1.95 2.95G/C3
Unknown
VSH0.00 1.00V/V
VSH baseline0.00 1.000.00
Vcl
Puits : Coastal-TestProjet : TEST
Set : Coastal-Test.WIRE Date : 05/06/2003
PLANCHE COMPOSITE
Auteur : mars
Echelle : 1:200
Exemple de diagraphie
Module Ipsom : Prédiction faciologique des diagraphies.
Cet outil permet une interprétation sédimentologique optimisée des puits non-carottés à
partir des diagraphies (logs classiques, RMN, pendagemétrie, …). Il donne un sens
géologique aux classes diagraphiques en reliant objectivement des propriétés physiques
mesurées à des faciès sédimentaires, et propage ensuite le résultat modélisé à l'ensemble du
champ.
Grâce à l’utilisation intégrée de trois modules, le
géologue peut fournir des informations quantifiées à
l’ingénieur réservoir qui peut évaluer plus précisément
la production pétrolière :
Module K.mod : Reconstruction de variables
quantitatives.
K.mod part du principe qu'une partie de l'information
pétrophysique non directement accessible par les sondes
diagraphiques est en fait contenue dans les
enregistrements acquis. L'idée est donc d'extraire cette
information via une approche statistique, et de propager
cette information dans les zones moins bien étudiées.
Ce module s'appuie sur la technologie du perceptron
multicouches : une méthode de régression non linéaire,
performante et éprouvée (réseaux de neurones), qui
permet la reconstruction ou la modélisation de certains
paramètres enregistrés ou calculés, à partir des données
acquises au puits, et à travers un processus
d'apprentissage interactif.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 13 - - 13 -
JB.Serieys – Page 13 –
Module Ancor : Analyses des correspondances entres variables.
Ancor est un outil simple permettant à tout utilisateur de réaliser rapidement une recherche
des règles de correspondances entre des données de natures et de résolutions différentes. C’est
également un module statistique ergonomique permettant une représentation graphique
multiple et objective des corrélations entre variables qualitatives et/ou quantitatives
discrétisées.
TECHSIS :
Ce logiciel permet une estimation des paramètres géologiques (sables, argiles) ou
pétrophysiques (PHI, VSH) en tout point de la sismique grâce à la mise à disposition d'un
ensemble complet d'outils de validation. Techsis permet également une navigation croisée
entre blocs de données (sismiques et attributs) et visualisation 3D des objets constituant le
modèle géologique à étudier.
Bloc sismique vu en 3D par Techsis
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 14 - - 14 -
JB.Serieys – Page 14 –
II Environnement de travail
1) Organisation
Les différentes réunions permettent au chef de projet de répartir les tâches. Ensuite chacun
s’occupe de son travail avec une collaboration plus ou moins importante avec les autres
membres de l’équipe. Autant certains modules peuvent être réalisés seuls, autant d’autres
nécessites un travail d’équipe et donc une bonne organisation. Le plus important selon moi
étant la bonne cohésion dans l’équipe, l’échange d’information et l’entraide, qui permettent
d’avancer rapidement et efficacement. Une autre chose importante est l’autonomie laissée aux
développeurs ce qui permet de réfléchir à la meilleure solution sans trop de contraintes.
2) Réunions
Au cours de ce stage j’ai pu assister à diverses réunions de natures bien différentes. Le
nombre de personne assistant aux réunions pouvait varier entre environ 4 et 7 personnes.
Répartition des tâches et délégation du travail :
Exemple du 3 mars 2003
Chacun s’est vu attribué diverses taches à réaliser avec une priorité plus ou moins grande
et un délai variable. Les tâches sont réparties selon les spécificités de chacun (base de
données, visualisations 2D/3D, statistiques, etc…) pour permettre un rendement optimum.
Etant donné que je suis familiarisé avec les expressions régulières (aussi appelées expressions
génériques) ; on m’a confié la tâche de travailler sur des modules d’importation de données de
différents formats. Il fallait donc créer un module d’importation personnalisée de données.
Comme point de référence j’avais le logiciel Excel qui offre une telle fonctionnalité.
Connaissant le format SVG pour avoir travaillé dessus lors du projet de Génie
Informatique de 3ème
année d’IUP, j’ai pris la responsabilité de trouver un moyen pour
convertir des images vectorielles depuis le format SVG (format récent utilisé pour le Web
notamment), vers le format CGM (format très utilisé dans l’industrie).
D’autre part j’ai été chargé lors de cette réunion d’essayer de résoudre un bug concernant
le picking (sélection d’objets avec la souris) en OpenGL qui ne fonctionnait pas sur tous les
postes.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 15 - - 15 -
JB.Serieys – Page 15 –
Brainstorming marketing :
Exemple le 13 mars 2003
Cette après-midi fut l’occasion de découvrir ce qu’était un brainstorming. L’ordre du jour
était l’interactivité. Nous devions donc dire tout ce qui nous passait par la tête concernant
l’interactivité comme par exemple, la convivialité, l’interface, des couleurs, etc… Bref après
avoir remplis un tableau d’idées quelconques, des thèmes principaux sont apparus. La
diversité des personnes présentes a permis un grand nombre de réponses très différentes. Le
résultat a donné à la personne chargée du marketing de nouvelles idées pour promouvoir les
produits que nous concevons. C’était intéressant de se prêter à cette expérience nouvelle pour
moi.
Recherche et développement :
Exemple le 21 mars 2003
Jusque là les utilisateurs ne pouvaient comparer et étudier les données ne correspondant
qu’à un seul puits. L’idée est de pouvoir comparer les puits entre eux, trouver les similitudes
ou les points de discordance. Un géologue faisant parti de l’équipe Techsia a pu exprimer ses
besoins et donner son avis par rapport aux solutions envisagées. Cette réunion a permis de
définir les fonctionnalités du programme ainsi qu’une ébauche de l’interface. En discutant les
idées de chacun, nous avons pu trouver une solution convenable qu’un des développeurs à été
chargé de mettre en place.
Formation :
Exemple le 18 avril 2003
Cette réunion fut l’occasion d’en apprendre davantage sur l’exploration pétrolière. La
formation du pétrole, l’étude des minéraux ou encore la croûte terrestre. Ces informations de
culture générale étaient très intéressantes et ont permis de mieux appréhender le logiciel ainsi
que son utilisation. Comprendre comment les puits sont construits, comment les données sont
récupérées et comment elles sont utilisées par le géologue est primordial pour l’informaticien.
Il est toujours intéressant de découvrir de nouveaux domaines.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 16 - - 16 -
JB.Serieys – Page 16 –
3) Logiciels pour travailler en équipe
a. Pour développer
Microsoft Visual SourceSafe
C’est un outil indispensable pour le travail en équipe. Ce logiciel permet de partager un
ensemble de fichiers pour une équipe de développeurs. Dès qu’une personne prend un fichier
pour le modifier les autres personnes ne peuvent y accéder qu’en lecture. On peut aussi
récupérer des versions antérieures, comparer les différences entre deux fichiers, etc… Bref
c’est l’outil nécessaire pour travailler en équipe. Des options telles que l’historique des
modifications d’un fichier permettent de savoir qui à fait quoi et à quel moment ce qui permet
une traçabilité parfaite. On peut donc s’adresser directement à la personne qui a créé une
classe pour mieux la comprendre par exemple.
b. Pour communiquer
Vypress Chat
Ce logiciel permet de discuter facilement et rapidement au sein de l’équipe. C’est très utile
pour expliquer une erreur dans un programme, donner un lien vers un site Internet,
communiquer une information à toute l’équipe, etc… Il est évident que nous nous déplaçons
toujours entre les bureaux mais c’est un outil complémentaire bien pratique pour gagner du
temps.
Outlook
Programme de messagerie Internet classique, utile pour avoir un suivi et une trace des
informations communiquées. Surtout utilisé pour diffuser des informations destinées à toute
l’équipe.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 17 - - 17 -
JB.Serieys – Page 17 –
III Outils de développement
1) Visual studio .net
Cette dernière version de Visual Studio est directement liée à Source Safe. On peut donc
extraire ou archiver des fichiers directement, sans passer par un programme extérieur. Il faut
un temps d’adaptation pour trouver où sont toutes les options de compilation par rapport à la
version 6 mais ceci se fait rapidement. Cet environnement de développement facilite le travail
des développeurs, avec les possibilités habituelles comme le débuggage, l’auto indentation,
etc…
On voit à gauche les fichiers qui sont utilisés par d’autres personnes et dont on n’a accès
qu’en lecture seule. Les onglets permettent d’accéder directement à tel ou tel fichier.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 18 - - 18 -
JB.Serieys – Page 18 –
2) QT
Qt de Trolltech est un système de développement C++ d'IHM (Interface Homme Machine)
portables (classes C++ avec source) entre Mac, Windows, UNIX et PDA. Doté d'un outil de
conception visuelle et interactive, il raccourcit très significativement les temps de
développement d'applications lorsqu'il s'agit de les faire tourner sur plusieurs plateformes. Il
permet de créer des interfaces intuitives, totalement orientées objets et ceci très facilement.
Les principaux avantages que j’ai trouvé à QT :
Le code est portable
Techlog étant principalement distribué sous Windows ainsi que sous stations Sun Solaris,
la portabilité du code créé doit être prise en compte. Les fonctions offertes par QT
fonctionnent sous les différentes plateformes ce qui facilite grandement le travail.
Le code est succinct
QT permet d’écrire entre 63 et 73 % moins de code qu’avec d’autres IHM comme MOTIF
ou les MFC. De plus ce code unique fonctionnera directement sur toutes les plateformes.
Exemple sur le site de Trolltech:
http://www.trolltech.com/products/qt/codecomp/index.html?cid=9
Le mécanisme de signals/slots (programmation événementielle)
C’est un atout majeur de QT, ce mécanisme permet de connecter un événement qui se
produit à une fonction à réaliser. On peut donc récupérer l’événement de clic sur un bouton
pour l’associer au traitement à effectuer. C’est la solution que j’ai trouvé – de loin – la plus
efficace pour concevoir une interface facilement compréhensible par le développeur, efficace
et réutilisable.
La très grande quantité de librairies
Tous les éléments pour faire une interface graphique sont présents. De plus, on trouve des
fonctions pour trier, pour gérer des bases de données, pour exploiter l’OpenGL (visualisations
2D/3D), les expressions régulières, etc… bref tout ce dont on peut avoir besoin.
La traduction
Il suffit d’écrire toutes les chaînes à traduire avec tr(« chaîne à traduire ») ; dans le code
source. On peut ensuite traiter les différents langages facilement avec un logiciel externe
nommé QT Translator.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 19 - - 19 -
JB.Serieys – Page 19 –
La création d’interfaces
QT Designer permet de concevoir une interface graphiquement, ce qui est plus facile.
Cependant le code généré est souvent trop lourd, trop volumineux (car généré par logiciel). Il
est beaucoup plus efficace d’écrire soit même le code qui indique comment placer les
boutons, comment réagir lors de l’agrandissement d’une fenêtre, etc…
La documentation
Elle est indispensable et très bien conçue. Le détail des classes, les exemples appropriés,
les tutoriaux permettent de vite se familiariser avec l’environnement et évitent de perdre du
temps à chercher. Ce qui n’est pas le cas avec par exemple la MSDN de Microsoft bien trop
volumineuse et peu pratique dans son utilisation.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 20 - - 20 -
JB.Serieys – Page 20 –
IV Travail Personnel
1) L’offre de stage
Nom et prénom du stagiaire : Jean-Baptiste Serieys
Durée : 6 mois (Février – Juillet)
Lieu du stage : Montpellier (Clapiers)
Objectifs : S'intégrer à une équipe de développement constituée d'ingénieurs et de docteurs.
Comprendre les problématiques et les enjeux métiers des logiciels développés chez Techsia. Acquérir
des compétences en programmation IHM pour pouvoir prendre en charge le développement de
modules spécifiques et s'intégrer efficacement dans l'équipe.
Sujet : Une équipe d'informaticiens collaborent avec les Géophysiciens à la réalisation de logiciel
utilisant des méthodes statistiques innovantes (Réseaux de neurones, déconvolution multiples, etc ...)
pour l'interprétation et le traitement des données issues du domaine pétrolier.
Il est proposé au stagiaire de prendre part au développement et à la validation des modules
développés.
Le sujet que nous proposons se situe dans la conception et la programmation, en participant au
développement de nouvelles fonctionnalités des logiciels existants. Il comporte plusieurs tâches :
Conception et réalisation de modules spécifiques avec développement de graphiques 2D et 3D
qui soient conviviales et compatibles avec l'interface graphique des logiciels existants.
Conception et Développement d'un nouveau module d'impression
Tests et validation des modules développés auprès des ingénieurs métiers
Le travail sera réalisé en collaboration étroite avec notre chef de projet.
Hormis un travail d'analyse et de programmation, ce stage permettra à l'étudiant de mettre en ouvre
ses capacités d'intégration et d'adaptation.
Thèmes abordés : Conception, programmation, Visualisation 2D/3D, Génie logiciel, réseaux de
neurones, IHM.
L’environnement de travail : Système d’exploitation : Windows (2000 professionnel, XP
professionnel) et Solaris (8)
Langages et outils : C++, Qt, OpenGL, XML
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 21 - - 21 -
JB.Serieys – Page 21 –
2) Aperçu de Techlog
Dans Techlog les données sont organisées selon la hiérarchie suivante :
Projet (project) – Puits (well) – Jeu de données (set) – Diagraphie (log)
Voici un aperçu des données dans le logiciel ; à une profondeur donnée (depth) on trouve
un ensemble de valeurs qui correspondent aux mesures effectuées par les instruments.
Jeu de données Wire appartenant au puits Quartzites Valeurs des diagraphies (AHTxx)
Profondeur
Le code source de Techlog représente un peu plus de 300 fichiers sources. Soit environ
230 000 lignes de code. C’est un volume conséquent qui nécessite une bonne organisation.
Un autre aperçu d’écran avec des fenêtres de statistiques se trouve en annexe page 41.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 22 - - 22 -
JB.Serieys – Page 22 –
3) Conversion d’images vectorielles
a. Définition du besoin
Dans Techlog, on trouve de nombreuses visualisations en 2D. Des graphiques, des courbes,
des histogrammes, des dessins, etc… Ces images sont vectorielles, c'est-à-dire qu’elles sont
définies par un ensemble de tracé et non par des pixels de telle ou telle couleur. L’image est
donc décrite par des points, des lignes, des cercles, etc… L’utilisateur doit avoir la possibilité
d’exporter ces images pour pouvoir les utiliser dans des logiciels de dessin, les intégrer dans
des traitements de texte, bref les exploiter. Actuellement, QT ne propose qu’une exportation
des images au format SVG. Ce format relativement récent, n’est pas compatible avec toutes
les applications dont se servent les géologues, celles-ci utilisent principalement le format
CGM. L’objectif est donc de pouvoir convertir les images SVG en images CGM pour les
utiliser ensuite avec des logiciels tels que Canvas ou Word.
b. Description des formats
Le format SVG (Scalable Vector Graphics)
Spécification : http://www.w3.org/Graphics/SVG/Overview
Visualiseurs : SVGViewer (Adobe), SVG Viewer (Corel), …
Editeurs : Xstudio (EvolGrafix), XnView, …
L’activité autour de SVG a débuté en 1998, et le W3C (World Wide Web Consortium) a
créé le 1er modèle utilisable en 1999. Cette spécification définit les fonctions et la syntaxe des
graphiques vectoriels adaptables.
SVG est un langage de description de graphiques bidimensionnels en XML. SVG admet
trois types d'objets graphiques : des contours graphiques vectoriels (par exemple, des tracés
consistant en lignes droites et courbes), des images et du texte. Les objets graphiques peuvent
être regroupés, stylés, transformés et composés dans des objets précédemment rendus.
Ce format est facile d’utilisation pour la visualisation de données diverses grâce à sa
syntaxe en texte lisible. Les domaines d’utilisation sont nombreux et ce format est en pleine
expansion.
Sur la page suivante on peut voir un exemple de fichier SVG.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 23 - - 23 -
JB.Serieys – Page 23 –
Exemple de fichier SVG et de l’image équivalente:
Le format CGM (Computer Graphics Metafile)
Spécification : http://www.posc.org/technical/cgmpip/get_cgm.shtml
Visualiseurs : Canvas (Larson), Word (Microsoft), …
Editeurs : Canvas (Larson), CGM Editor (SDI), …
La 1ère
édition de CGM est apparue en 1987 puis ont suivi des extensions standardisées
depuis. C’est une norme pour le stockage et le transfert d’information sur la description
d’images. Très utilisé dans des domaines tels que l’aéronautique, l’automobile mais aussi la
géologie.
C’est une norme ISO (ISO 8632). L'expérience pratique a montré que cette norme est
beaucoup trop complexe et trop fournie pour pouvoir être appliquée intégralement. Ce qui a
donné lieu à la spécification de ce qu'on appelle les profils de CGM. Ces profils définissent
les règles de chacun des éléments CGM dans cette norme. Les profils ont été développés pour
certaines industries qui avaient besoin d'un échange fiable de données CGM.
Les données d’une image étant binaires, on ne peut pas les lire directement. Mais
l’avantage est que le fichier est plus petit et sa lecture s’en trouve accélérée par rapport à un
fichier non binaire.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 24 - - 24 -
JB.Serieys – Page 24 –
c. Etapes de la recherche
Tout d’abord j’ai cherché des logiciels pour convertir du format SVG vers le format CGM
automatiquement. Il en existe plusieurs, cependant ils sont tous payants ; ce n’était donc pas la
bonne solution. Ensuite j’ai regardé s’il existait des librairies pour créer des fichiers CGM.
Car ensuite il « suffit » de récupérer toutes les informations graphiques du fichier SVG pour
appliquer les fonctions CGM adéquates et créer ainsi le fichier CGM correspondant.
Librairies CGM :
CGM Draw (NIST): librairie intéressante mais incomplète : on ne peut pas insérer d’images non vectorielles dans un dessin.
http://www.pa.msu.edu/reference/cgmdraw_ref.html
CGM Generator Library (Larson): librairie très complète mais la documentation
est parfois évasive ou même erronée par endroit.
http://www.cgmexperts.com/downloads.htm
C’est donc la librairie CGMLIB de Larson qui a été choisie, elle comporte toutes les
fonctions nécessaires pour créer une image au format CGM.
d. Développement de la solution
En premier lieu, j’ai fais l’inventaire de tous les tracés utilisés dans les images et de leurs
représentations dans le fichier SVG : lignes, polygones, rectangles, textes, images, etc…
Ensuite j’ai créé un parseur pour extraire toutes ces informations. Enfin j’ai associé aux
informations extraites l’exécution des fonctions de la librairie CGM correspondantes afin de
générer l’image CGM.
Voici le traitement nécessaire sur un exemple simple : une ligne.
Exemple de ligne en SVG :
<line transform="translate(70 75)" style="stroke:rgb(212,212,212);stroke-
width:1;fill:none;" y1="173" y2="173" x1="0" x2="330" />
Les coordonnées de la ligne sont récupérées avec les valeurs des champs x1, y1, x2, y2 et
translate ; style indique la couleur de la ligne et stroke-width son épaisseur.
Les expressions régulières permettent de récupérer l’information très facilement. On
exécute ensuite la fonction correspondante pour écrire la ligne dans le fichier CGM. Voici ce
que l’on obtient pour la couleur de la ligne :
// Récupération de la couleur de la ligne
rx = QRegExp("stroke:rgb\\((.+),(.+),(.+)\\);");
rx.setMinimal(TRUE);
if (rx.search(value) != -1)
cgmline_color(NULL,rx.cap(1).toInt(),rx.cap(2).toInt(),rx.cap(3).toInt());
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 25 - - 25 -
JB.Serieys – Page 25 –
Il faut prendre en compte tous les cas possibles pour être sur de pouvoir convertir l’image
correctement.
Il y a parfois des complications dues au fichier SVG. On trouve dans certains cas des
transformations matricielles qui indiquent la rotation et la translation que doit subir l’objet.
Cependant le format CGM ne possède pas cette fonctionnalité, il est donc nécessaire
d’adapter le traitement.
Exemple :
// Exemple transform="matrix(6.12303e-017 -1 1 6.12303e-017 30 399)"
// la syntaxe de matrix est matrix(cos(a), sin(a), -sin(a), cos(a), -x1cos(a) +
y1sin(a) + x2, -x1sin(a) - y1cos(a) + y2)
Ce qui signifie ici une rotation de -90° et une translation de 30 sur l’axe X et 399 sur l’axe
Y. Cela nécessite un petit calcul mais les cas particuliers comme celui-ci étaient nombreux…
Au cours de mon travail j’ai pu constater un bug lié à QT lors de l’utilisation de valeurs
négatives pour la largeur ou la hauteur d’un rectangle. Nous avons envoyé un mail à QT et
ceux-ci ont corrigé ce problème assez rapidement. Le mail est consultable en annexe page 42.
Maintenant parlons du problème de l’intégration des images non vectorielles. Ceci fut un
problème très difficile à résoudre du fait des variations d’implémentation de la norme dans les
visualiseurs. En effet un fichier CGM peut être vu différemment selon les visualiseurs que
l’on utilise car la norme n’est pas toujours précisément respectée.
Sous Word par exemple, chaque image est limitée à 256 couleurs, il faut donc effectuer
une réduction colorimétrique. Canvas autorise quant à lui 16 millions de couleurs. C’est
pourquoi il y a un paramètre lors de l’exportation qui autorise l’utilisateur à choisir la
compatibilité qu’il désire.
L’intégration de la librairie dans l’environnement du projet de développement s’est faite
sans trop de problèmes. Il y avait quelques conflits avec d’autres librairies mais cela a été
résolu.
Le diagramme de classe est disponible en annexe page 43.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 26 - - 26 -
JB.Serieys – Page 26 –
e. Tests
Voici un exemple de la conversion. Extrait des balises dans le fichier source SVG :
<line transform="translate(70 70)" style="stroke:rgb(212,212,212);stroke-
width:1;fill:none;" y1="414" y2="414" x1="0" x2="255" />
<polygon points="57 239 57 239 57 240 56 240 56 240 55 240 55 240 54 240 54 239 54 239 54
238 54 237 55 237 55 237 56 237 56 237 57 237 57 238 57 239" transform="translate(70 70)"
style="stroke:rgb(200,255,0);stroke-width:0.9;fill:rgb(200,255,0);" />
<rect width="390" x="0" y="0" height="70" style="stroke:rgb(0,0,0);stroke-
width:0;fill:rgb(245,245,220);" />
<text x="-1" y="419" transform="translate(65 70)" style="fill:rgb(0,0,0);stroke-
width:0;font-size:11;font-style:normal;font-weight:200;" text-anchor="end" >20 </text>
L’image SVG : L’image CGM :
Un exemple d’image CGM contenant une image non vectorielle (le logo Techlog) est
disponible en annexe page 44.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 27 - - 27 -
JB.Serieys – Page 27 –
4) Importation et exportation de données
Comme je connaissais bien les expressions régulières, j’ai développé quelques modules
concernant l’importation et l’exportation de données dans Techlog.
Différentes missions m’ont été confiées :
Créer un outil d’importation personnalisée de données
Importer des données sous forme de tableaux à 3 dimensions
Participer à l’interfaçage avec un autre logiciel
a. Outil d’importation personnalisée de données
Besoin
L’objectif est de pouvoir importer n’importe quel format de données (sachant que les
données sont sous la forme d’un tableau à deux dimensions de nombres décimaux) dans
Techlog. Il faut donc une interface la plus paramétrable possible pour prendre en compte
toutes les possibilités.
Développement
C’est en créant ce programme d’importation que je me suis rendu compte à quel point il
était aisé de créer des interfaces avec QT. La facilité d’utilisation et le grand nombre de
fonctionnalités offertes permettent de développer rapidement et efficacement.
Pour couvrir le plus de cas possible, j’ai pris exemple sur le module d’importation que
propose Microsoft Excel qui offre bon nombre de possibilités. Lorsqu’un utilisateur souhaite
importer un fichier de données dans Techlog, la première chose est de vérifier si c’est un
format connu et de lire le fichier le cas échéant, sinon l’interface d’importation est exécutée.
Le diagramme de classe est disponible en annexe page 45.
Résultat
De nombreuses vérifications/corrections sont effectuées en cas de problèmes (valeurs
vides, chaîne de caractère à la place d’une valeur, pas assez/trop de valeurs sur une ligne, …)
pour que l’importation aie le plus de chance de réussir. L’utilisateur a de plus la possibilité de
modifier les valeurs des entêtes.
L’enregistrement et le chargement des fichiers de configuration se font à l’aide de fichiers
xml qui contiennent les informations des paramètres sélectionnés. La base de registre est
utilisée pour mémoriser les répertoires par défaut de chargement et d’enregistrement.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 28 - - 28 -
JB.Serieys – Page 28 –
Exemple :
Charger ou enregistrer des configurations
Fichier de départ
Paramètres de l’importation
Aperçu du résultat que l’on va générer
Tous les paramètres de l’application ont été testés avec différents fichiers tests.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 29 - - 29 -
JB.Serieys – Page 29 –
b. Importer des tableaux à 3 dimensions
Normalement à une ligne donnée on a une valeur par colonne. Mais il existe un cas
particulier avec les RMN (Résonance Magnétique Nucléaire) qui donne plusieurs valeurs pour
un pas donné. Il fallait donc pouvoir importer de telles données dans le logiciel. Il faut
convertir en fichier geolog ascii pour importer ce fichier ensuite dans Techlog. La conversion
consiste en une transposition de l’information.
Voici un exemple du fichier au départ :
CSVArray 2 Nombre de valeurs pour chaque pas
CDEPTHft Ppsia CUMVOLml CUMVOLCORml INCVOLCORml WETTPH%
5498,85 1 0,0013 -0,0016 100
5498,85 1 0,0029 0 100
5499,75 1 0,0005 -0,0009 100
5499,75 2 0,0014 0 100
5500,875 1 0,0008 -0,0009 100
5500,875 2 0,0017 0 100
5503,25 1 0,001 -0,0018 100
5503,25 2 0,0028 0 100
Voici le résultat après conversion :
*CONSTANTS
HOLE = WELL
SET = Test-1
*NAMES
DEPTH FEET DOUBLE
Ppsia FEET DOUBLE*2
CUMVOLml FEET DOUBLE*2
CUMVOLCORml FEET DOUBLE*2
INCVOLCORml FEET DOUBLE*2
WETTPH% FEET DOUBLE*2 Non valeur par défaut
*DATA
5498.85 1 1 0.0013 0.0029 -0.0016 0 -9999 -9999 100 100
5499.75 1 2 0.0005 0.0014 -0.0009 0 -9999 -9999 100 100
5500.875 1 2 0.0008 0.0017 -0.0009 0 -9999 -9999 100 100
5503.25 1 2 0.001 0.0028 -0.0018 0 -9999 -9999 100 100
Cet extrait montre la transposition de l’information à effectuer. Ce fichier résultat peut
ensuite être importé directement dans Techlog. Exemple d’affichage d’une planche composite
comportant l’affichage d’un log RMN en annexe page 46.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 30 - - 30 -
JB.Serieys – Page 30 –
c. Participer à l’interfaçage avec un autre logiciel
Ce travail a été fait en étroite collaboration avec d’autres membres de l’équipe. L’objectif
étant de pouvoir échanger des informations avec un autre logiciel : Geolog. Les
fonctionnalités étant l’importation, l’exportation de données, la synchronisation, la
consultation ou encore la modification de valeurs entre ces deux programmes.
Un logiciel gratuit fournit par Geolog (log_dbms) permet à l’aide de requêtes de consulter
ou de modifier la base de données de Geolog. Le travail a donc consisté à exécuter un
processus log_dbms avec la requête adéquate puis de récupérer le résultat de ce programme.
Afin de minimiser le temps pour synchroniser, il fallait diminuer le nombre de requêtes.
Nous avons donc fait des requêtes plus « larges » pour ensuite extraire toute l’information
nécessaire et la stoker en mémoire plutôt que de faire plusieurs requêtes ponctuelles pour
récupérer telle ou telle information.
De plus, pour optimiser davantage le traitement, nous avons choisi le mode binaire et non
le mode texte pour l’affichage des valeurs dans log_dbms. Cela a compliqué le traitement car
il fallait faire davantage de tests mais ceci était beaucoup plus rapide.
Exemple de requête :
log_dbms mode = query project=AHO well=3_17B-A32 set=RAW log=_all select=_log
Cette requête permet par exemple d’afficher toutes les valeurs d’un log donné. Il faut
ensuite extraire l’information utile du résultat.
Le travail en équipe était très important car tout était lié. J’ai écris les fonctions « bas
niveau » qu’ont pu exploiter au sein d’une interface les autres membres de l’équipe.
L’organisation et la communication étaient donc cruciales pour éviter de faire des choses
incohérentes, inutiles ou encore redondantes.
Différences Unix(Solaris) / Windows :
L’exécution de processus n’est pas la même sur les deux plateformes, le code a donc été
adapté à ce cas particulier.
Avec des « #if defined(Q_OS_UNIX) » ou « #if defined(Q_WS_WIN) » on peut différencier
les deux plateformes et appliquer le code correspondant. Pour exécuter le processus on utilise
la fonction popen sous unix (pipe open) et QProcess sous Windows (classe fournie par QT).
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 31 - - 31 -
JB.Serieys – Page 31 –
5) Divers
Je vais maintenant détailler d’autres travaux plus ou moins importants que j’ai réalisé:
Résoudre un problème de sélection en OpenGL
Certains affichages en OpenGL autorisent l’utilisateur à sélectionner des points à l’écran à
l’aide de la souris. Cette fonctionnalité marchait très bien sur certains postes mais pas sur tous
les postes. En effet, ceux équipés de deux écrans ne pouvaient pas s’en servir.
Au départ j’ai cherché sur Internet pour voir si des personnes avaient eu le même problème
mais en vain.
Puis, j’ai essayé de localiser précisément d’où venait le problème. J’ai donc récupéré un
programme sur Internet de sélection en OpenGL pour voir s’il fonctionnait sur les postes avec
deux écrans et c’était le cas. Ensuite j’ai intégré petit à petit dans ce code le notre qui ne
fonctionnait pas pour situer précisément la partie du code qui posait soucis.
J’ai conclu que ce qui était responsable de ce bug était l’utilisation de push_matrix et de
pop_matrix imbriqués. Cette instruction permet en OpenGL d’empiler la matrice d’affichage.
On peut ainsi dessiner un ensemble d’éléments graphiques, puis appliquer des transformations
à cet ensemble, ceci est très utilisé en OpenGL.
Voici un exemple :
glPushMatrix();
…
glPushMatrix();
glTranslatef(2, 0, 0);
glutSolidSphere(2, 10, 10);
glPopMatrix();
…
glPopMatrix();
Ce code permet de dessiner une sphère puis de lui appliquer une translation par rapport au
centre de la scène.
Si on veut éviter d’imbriquer un push/pop dans un autre, il faut déplacer le centre puis
dessiner la sphère puis revenir au point de départ :
glPushMatrix();
…
glTranslatef(-2, 0, 0);
glutSolidSphere(2, 10, 10);
glTranslatef(2, 0, 0);
…
glPopMatrix();
C’est ce principe qui a du être utilisé pour corriger ce problème. Un exemple de sélection
est disponible en annexe page 47.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 32 - - 32 -
JB.Serieys – Page 32 –
Ecrire un algorithme de tri intelligent de chaînes
L’objectif est de pouvoir trier une liste de chaînes pouvant contenir des nombres avec un
peu plus de raisonnement qu’un tri alphabétique. Par exemple si l’on souhaite trier les puits
suivants :
Puits1, Puits5, Puits10, Puits5_1, Puits5_02, Puits5_2.2
Avec un tri alphabétique normal on obtient :
Puits1
Puits10
Puits5
Puits5_02
Puits5_1
Puits5_2.2
Alors qu’avec le tri intelligent on a :
Puits1
Puits5
Puits10
Puits5_1
Puits5_02
Puits5_2.2
De plus ce tri permet aussi de trier des nombres de grandeur quelconque avec un format
quelconque (entier, flottant, notation scientifique, etc…).
Il a donc était nécessaire d’extraire les nombres des chaînes pour les comparer un à un de
gauche à droite. L’utilisation des expressions régulières fut très utile pour effectuer ce
traitement.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 33 - - 33 -
JB.Serieys – Page 33 –
Permettre d’avoir une interpolation logarithmique dans une palette
Techlog offre un module d’édition de palette, pour que l’utilisateur puisse créer sa propre
palette avec différentes couleurs, des dégradés, etc. L’interpolation linéaire était déjà
implémentée, ce qui donnait ceci :
Le résultat de l’interpolation logarithmique donne ce rendu-ci :
Quelques bases de mathématiques étaient nécessaires pour manipuler les logarithmes et les
exponentielles pour parvenir au résultat attendu.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 34 - - 34 -
JB.Serieys – Page 34 –
Ajouter diverses fonctionnalités au module de gestion des mnémoniques
Sur cette fenêtre j’ai rajouté la possibilité de trier par colonne en cliquant sur son entête.
De plus l’utilisateur à la possibilité de filtrer les données en ne sélectionnant que l’élément
qu’il souhaite conserver dans une colonne donnée.
J’ai ensuite ajouté de nouveaux champs à l’interface : les limites ainsi que la couleur. En
cliquant sur la couleur, l’utilisateur peut choisir la couleur qu’il désire. Il fallait aussi intégrer
ces modifications dans la base de données et donc modifier les fichiers XML associés.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 35 - - 35 -
JB.Serieys – Page 35 –
Améliorer la synchronisation entres les fenêtres de visualisation
Techlog comprend un grand nombre de fenêtres contenant des données, des visualisations,
etc… Il faut donc qu’elles soient toujours cohérentes entre elles. Donc si l’on modifie l’une
d’elles les autres doivent être mises à jour automatiquement. J’ai du prendre en compte les cas
qui ne l’étaient pas actuellement.
Voici un exemple du fonctionnement :
Si on modifie les valeurs dans l’éditeur de diagraphie et que l’on enregistre ; une boîte de
dialogue propose à l’utilisateur de mettre à jour les autres fenêtres.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 36 - - 36 -
JB.Serieys – Page 36 –
Conclusion
Ce stage aura été une expérience très enrichissante. J’ai eu l’opportunité de faire parti
intégrante d’une équipe aussi agréable que compétente. Je suis fier d’avoir pu réaliser un
travail concret et réellement utile.
Du point de vue de l’entreprise, Techsia et ses membres sont satisfaits de mon travail. Mes
activités de recherche et de développement ont permis entre autre de résoudre des problèmes
qui étaient en suspend depuis quelques temps. L’équipe était toujours à l’écoute des idées que
j’avais à proposer ce qui a permis de trouver les meilleures solutions.
D’un point de vue personnel, techniquement j’ai appris de nombreuses choses. QT est un
outil vraiment très utile pour développer des applications et SourceSafe est indispensable
lorsque l’on travaille à plusieurs sur un projet conséquent. Je sais maintenant davantage
prendre du recul face aux problèmes que je peux rencontrer et mieux gérer mon temps pour
respecter les délais. Au cours de ce stage j’ai appris à faire des recherches pertinentes sur
Internet pour résoudre des problèmes ou chercher différents types d’informations.
Le côté humain était important car le travail en équipe était omniprésent. J’ai apprécié les
différentes réunions auxquelles j’ai pu assister car elles étaient toujours enrichissantes.
L’organisation et la communication sont deux aspects importants pour avoir une bonne
collaboration dans l’équipe. D’autre part le fait de garder une part d’autonomie était très
appréciable.
Je connais maintenant davantage le milieu de l’entreprise. Le fait de travailler sur des
logiciels innovants liés à des domaines scientifiques est vraiment quelque chose d’intéressant.
Il est toujours beaucoup plus motivant de travailler à la pointe de la technologie.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 37 - - 37 -
JB.Serieys – Page 37 –
Bibliographie
Documentation de la librairie CGM Larson
http://www.cgmlarson.com/downloads/docs/cgmlib3.pdf
Documentation de la librairie CGM Draw
http://www.pa.msu.edu/reference/cgmdraw_ref.html
Spécifications du format CGM
http://www.posc.org/technical/cgmpip/get_cgm.shtml
Spécifications du format SVG
http://www.w3.org/TR/SVG11/
Documentation sur Geolog (disponible avec le logiciel)
http://www.paradigmgeo.com/products/geolog.php
Documentation de QT
www.trolltech.com/products/qt/
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 38 - - 38 -
JB.Serieys – Page 38 –
Glossaire
Carotte : Morceau de roche cylindrique prélevée lors d’un forage. Le diamètre est
généralement d’une dizaine de centimètres avec une longueur pouvant atteindre plusieurs
mètres.
Diagraphie : Tout enregistrement continu en fonction de la profondeur, et/ou du temps,
d’un paramètre de forage ou d’une caractéristique donnée des formations traversées par un
sondage.
Expression régulière : Permet de définir un ensemble de chaînes. Par exemple a*b
symbolise toutes les chaînes qui commencent par ‘a’ et se terminent par ‘b’.
Faciès : Ensemble des caractéristiques physiques, chimiques et faunistiques ou floristiques
d’un banc permettant de le distinguer des autres bancs.
Les boues de forage : Un forage ne peut se faire sans un fluide permettant de lubrifier et
de refroidir le trépan. Ce fluide est généralement de la boue (mélange eau + argile) mais du
gasoil ou d’autres produits peuvent être ajoutés à la boue afin de modifier ces caractéristiques.
La boue circulant dans le trou de forage, elle permet également de remonter les morceaux de
roches arrachées lors d’un forage en destructif
Les méthodes de Monte-Carlo : C’est une méthode permettant d’estimer des paramètres
en effectuant des tirages aléatoires, exemple estimation de pi par la méthode de Monte-Carlo.
Log : terme anglophone pour diagraphie.
Pendagemétrie : Outil permettant de déterminer l’angle, par rapport à l’horizontale, et
l’azimut par rapport au nord magnétique et au nord géographique, du pendage (pente) des
surfaces successives traversant les sondages. De par sa précision, cet outil permet également
d’avoir accès à l’organisation interne des formations traversées (nature hétérogène ou
homogène de la roche, failles, fractures …).
PHI : Porosité. Volume d’espace libre dans la roche qui peut être occupé par un fluide
(eau, pétrole, gaz …).
Picking : mode d’affichage en OpenGL permettant de savoir quels sont les objets de la
scène qui intercepte le pointeur de souris.
RMN : Résonance Magnétique Nucléaire. Cet outil utilise les propriétés physiques
particulières des atomes d’hydrogène qui en présence d’un champ magnétique peuvent être
polarisés. Au cours de la mesure plusieurs polarisations sont effectuées, entrecoupées de
temps de relaxation qui renseigne sur la taille des pores de la roche (et donc sa texture) ainsi
que la nature des fluides contenus.
VSH : Volume of SHale. C’est le volume d’argile que contient une roche. C’est un
paramètre important car l’argile dégrade la qualité d’un réservoir pétrolier.
Rapport de stage Ref : RS-JBS-2003
CONCEPTION ET DEVELOPPEMENT Rev : Final
Date : Juin 2003 - 39 - - 39 -
JB.Serieys – Page 39 –
Annexes
Organigramme de l’entreprise ........................................................................ 40
Techlog ............................................................................................................ 41
Mail envoyé à Trolltech ................................................................................... 42
Référence de la classe TPictureToCgm ......................................................... 43
Exemple d’image convertie en CGM .............................................................. 44
Référence de la classe TLImportCustom ....................................................... 45
Diagraphie RMN ............................................................................................... 46
Exemple de sélection en OpenGL .................................................................. 47
JB.Serieys – Page 40 –
Organigramme de l’entreprise
JB.Serieys – Page 41 –
Techlog
JB.Serieys – Page 42 –
Mail envoyé à Trolltech
Hi Velizar,
On Monday, 24. Mar 2003 16:40 Vélizar VESSELINOV wrote:
> We have problem with QPicture "SVG" save function
>
> p->drawRect(70, 0, -30, 30); // Problem when saving in SVG
>
> For more information see SVG BUG.pdf
> To test picture.cpp and pic.svg result.
This has now been fixed, please apply the patch attached.
> Are QPicture save "CGM" format will be some day possible?
We have no plans to support this I am afraid, but we will consider this for
the future.
Thanks for the report and have a nice day!
Andy
--
Technicial Support Technician
Trolltech AS, Waldemar Thranes gate 98, NO-0175 Oslo, Norway
JB.Serieys – Page 43 –
Référence de la classe TPictureToCgm
Classe permettant de convertir une QPicture en fichier cgm. Utilisation d'un fichier SVG
temporaire.
Graphe d'héritage de la classe TPictureToCgm :
Diagramme de collaboration de TPictureToCgm :
JB.Serieys – Page 44 –
Exemple d’image convertie en CGM
2180
2190
2200
2210
2220
2230
2240
2250
2260
2270
2280
2290
2300
2310
2320
2330
2340
2350
2360
2370
2380
2390
2400
2410
Depth()
CAL4.00 8.00IN
CAL baseline
4.00 8.005.75
Unknown
GR15.35 218.43GAPI
GR baseline
15.35 218.43128.13
Unknown
DT58.40 99.90US/F
CNC0.45 -0.15V/V
ZDEN1.95 2.95G/C3
Unknown
core_facies_final
10.00 0.00
core_facies_final baseline
10.00 0.00-1.00
Facies-9
IPSOM_9-Facies
0.00 10.00
IPSOM_9-Facies baseline
0.00 10.000.05
Facies-9
K_AIR
0.01 10000.00MD
K_Mod1_4-9-1
0.01 10000.00MDPHI_mod_4-7-1
0.00 0.50V/V
POR
0.00 0.50V/VVSH
0.00 1.00V/V
VSH baseline
0.00 1.000.00
Vcl
PG_FCM5
0.00 1.00
PG_FCM5 baseline
0.00 1.000.00
PG-5
Puits : Coastal-TestProjet : TEST
Set : Coastal-Test.WIRE Date : 09/04/2003
PLANCHE COMPOSITE
Auteur : mars
Echelle : 1:200
JB.Serieys – Page 45 –
Référence de la classe TLImportCustom
Classe permettant une importation personnalisée de fichier. Le fichier est importé selon les
critères choisis, le résultat est ensuite convertit en csv et enregistré dans un nouveau fichier
Graphe d'héritage de la classe TLImportCustom :
Diagramme de collaboration de TLImportCustom
JB.Serieys – Page 46 –
Diagraphie RMN
Pour chaque pas on a un ensemble de valeurs
JB.Serieys – Page 47 –
Exemple de sélection en OpenGL
Zone sélectionnée à l’aide de la souris