Rapport de Stage de Jean-Baptiste Serieys

47
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

Transcript of Rapport de Stage de Jean-Baptiste Serieys

Page 1: Rapport de Stage de Jean-Baptiste Serieys

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

Page 2: Rapport de Stage de Jean-Baptiste Serieys
Page 3: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 4: Rapport de Stage de Jean-Baptiste Serieys

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

Page 5: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 6: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 7: Rapport de Stage de Jean-Baptiste Serieys

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

Page 8: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 9: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 10: Rapport de Stage de Jean-Baptiste Serieys

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

Page 11: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 12: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 13: Rapport de Stage de Jean-Baptiste Serieys

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

Page 14: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 15: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 16: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 17: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 18: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 19: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 20: Rapport de Stage de Jean-Baptiste Serieys

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

Page 21: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 22: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 23: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 24: Rapport de Stage de Jean-Baptiste Serieys

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());

Page 25: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 26: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 27: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 28: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 29: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 30: Rapport de Stage de Jean-Baptiste Serieys

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

Page 31: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 32: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 33: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 34: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 35: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 36: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 37: Rapport de Stage de Jean-Baptiste Serieys

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/

Page 38: Rapport de Stage de Jean-Baptiste Serieys

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.

Page 39: Rapport de Stage de Jean-Baptiste Serieys

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

Page 40: Rapport de Stage de Jean-Baptiste Serieys

JB.Serieys – Page 40 –

Organigramme de l’entreprise

Page 41: Rapport de Stage de Jean-Baptiste Serieys

JB.Serieys – Page 41 –

Techlog

Page 42: Rapport de Stage de Jean-Baptiste Serieys

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

Page 43: Rapport de Stage de Jean-Baptiste Serieys

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 :

Page 44: Rapport de Stage de Jean-Baptiste Serieys

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

Page 45: Rapport de Stage de Jean-Baptiste Serieys

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

Page 46: Rapport de Stage de Jean-Baptiste Serieys

JB.Serieys – Page 46 –

Diagraphie RMN

Pour chaque pas on a un ensemble de valeurs

Page 47: Rapport de Stage de Jean-Baptiste Serieys

JB.Serieys – Page 47 –

Exemple de sélection en OpenGL

Zone sélectionnée à l’aide de la souris