Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
1 Introduction 1
1.1 Contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Organisation du mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
i
TABLE DES MATIÈRES ii
4 Produits ESRI 14
4.1 Préambule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.2 Bureautique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.3 Nomade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.4 Serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
6 Préparation de l'implémentation 23
6.1 Préambule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.2 Environnement de développement et de tests . . . . . . . . . . . . . . . . . . . 23
6.2.1 Conguration réseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.2.2 Conguration logicielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.3 Structures de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.3.1 Schéma de base de données . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.3.2 Schéma pour implémentation sur le PDA . . . . . . . . . . . . . . . . . 26
6.3.3 Pictogrammes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.3.4 Carte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
7 FauneTracker - Conguration 28
7.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.2 Fichier de mission . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
7.2.1 Rôles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
7.2.2 Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
7.2.3 Génération . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.3 Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.4 Accès base de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.5 Organisation des composants graphiques . . . . . . . . . . . . . . . . . . . . . . 32
7.5.1 Organisation hiérarchique . . . . . . . . . . . . . . . . . . . . . . . . . . 32
7.5.2 Motif de conception template method . . . . . . . . . . . . . . . . . . . 33
8 FauneTracker - PDA 36
8.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
8.2 Achage et navigation sur une carte . . . . . . . . . . . . . . . . . . . . . . . . 37
8.3 Lecture du chier de mission . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
8.4 Navigation GPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
8.5 Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
8.6 Synchronisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
8.7 Saisie d'une observation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
8.7.1 Ajout de données sur la carte . . . . . . . . . . . . . . . . . . . . . . . . 44
TABLE DES MATIÈRES iii
9 FauneTracker - Desktop 52
9.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
9.2 Gestion des droits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
9.3 Informations sur une observation . . . . . . . . . . . . . . . . . . . . . . . . . . 53
9.4 Édition d'une observation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
9.4.1 Géographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
9.4.2 Attributs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
10 Déploiement 59
10.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
10.2 Déploiement de FauneTracker pour PC . . . . . . . . . . . . . . . . . . . . . . . 59
10.3 Déploiement de FauneTracker - PDA . . . . . . . . . . . . . . . . . . . . . . . . 59
10.3.1 Génération d'un cache de cartes . . . . . . . . . . . . . . . . . . . . . . . 59
10.3.2 Génération d'un chier cab . . . . . . . . . . . . . . . . . . . . . . . . . 60
10.3.3 Installateur Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
11 Conclusion 63
Bibliographie 65
A Liens utiles 66
B Codes sources 67
B.1 Organisation des paquetages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
B.2 Code source de FauneTracker - Conguration . . . . . . . . . . . . . . . . . . . 68
B.2.1 FauneTracker - Conguration - Activites . . . . . . . . . . . . . . . . . . 84
B.2.2 FauneTracker - Conguration - Classes . . . . . . . . . . . . . . . . . . . 96
B.2.3 FauneTracker - Conguration - Especes . . . . . . . . . . . . . . . . . . 108
B.2.4 FauneTracker - Conguration - XML . . . . . . . . . . . . . . . . . . . . 123
B.3 Code source de FauneTracker - PDA . . . . . . . . . . . . . . . . . . . . . . . . 130
B.3.1 FauneTracker - PDA - Authentication . . . . . . . . . . . . . . . . . . . 152
B.3.2 FauneTracker - PDA - MachinesEtats . . . . . . . . . . . . . . . . . . . 155
B.3.3 FauneTracker - PDA - MachinesEtats - Etats . . . . . . . . . . . . . . . 171
B.4 Code source de FauneTracker - Desktop . . . . . . . . . . . . . . . . . . . . . . 191
B.5 Code source de FauneTracker - Commun . . . . . . . . . . . . . . . . . . . . . . 212
B.6 Code source de FauneTracker - Communs - Windows . . . . . . . . . . . . . . . 213
Table des gures
iv
Listings
3.1 Exemple de code source SVG. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.1 Exemple de chier de conguration. . . . . . . . . . . . . . . . . . . . . . . . . 19
5.2 Création et exécution du ltre sur les animaux. . . . . . . . . . . . . . . . . . . 21
7.1 Exemple de chier de mission. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
7.2 Exemple d'accès à la base de données. . . . . . . . . . . . . . . . . . . . . . . . 30
7.3 Création d'un objet connexion. . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
8.1 Méthode d'ouverture du service mobile. . . . . . . . . . . . . . . . . . . . . . . 37
8.2 Création de l'outil de zoom en avant. . . . . . . . . . . . . . . . . . . . . . . . . 38
8.3 Exemple d'aectation d'un outils à la carte. . . . . . . . . . . . . . . . . . . . . 38
8.4 Lecture du chier de mission (implémentation du motif de conception singleton ). 39
8.5 Conguration et connexion du GPS. . . . . . . . . . . . . . . . . . . . . . . . . 40
8.6 Génération d'un condensé md5. . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
8.7 Synchronisation des données. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
8.8 Vérication du bon déroulement de la synchronisation. . . . . . . . . . . . . . . 43
8.9 Préparation de l'édition de la couche. . . . . . . . . . . . . . . . . . . . . . . . . 44
8.10 Validation du dessin et lancement du processus de saisie. . . . . . . . . . . . . . 45
8.11 Interface IEtats. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
8.12 Méthode suivant(), dénie par l'interface IEtats. . . . . . . . . . . . . . . . . . 47
8.13 Illustration du design pattern template method. . . . . . . . . . . . . . . . . . . 50
9.1 Méthode selectionAction_StatusChanged de FrmMain. . . . . . . . . . . . . . . . 54
9.2 Méthode choisirOutil() de FrmMain. . . . . . . . . . . . . . . . . . . . . . . . . . 55
9.3 Méthode pour enregistrer les modications (enregistrerModication_click ). . . . 56
10.1 Code du chier de conguration ini. . . . . . . . . . . . . . . . . . . . . . . . . 61
10.2 Lancement du gestionnaire d'applications Windows Mobile. . . . . . . . . . . . 61
v
Avant-propos
Conventions typographiques
Dans un souci de clarté ainsi que pour simplier la tâche du lecteur, plusieurs conventions
typographiques et de style ont été adoptées pour la rédaction de ce mémoire :
l'essentiel des textes sont typographiés à l'aide de la police Computer Modern dans une
taille de caractère de 11 points ;
les identicateurs de classes, des tables de données, des balises XML ainsi que les ins-
tructions et les noms de dossiers sont tracés en caractères de types machine à écrire ;
les noms de méthodes et d'identicateurs ainsi que les mots anglais sont écrits en italique ;
enn, les notions importantes ou les mots clés d'un paragraphe sont mis en évidences à
l'aide d'une graisse de caractère supérieure.
Les extraits de codes sont colorés selon des conventions proches de celles utilisées par Visual
Studio. Les légendes des images gurent au-dessus de celles-ci alors que les captions des pièces
de codes sont situées en-dessous des extraits de codes. Les référence internes, sont indiquées
en rouge et les adresses internet sont mises en évidence à l'aide de la couleur bleu-clair.
Remerciements
Avant tout, je tiens à remercier les professeurs qui m'ont instruits durant ces trois années
de scolarité à l'École d'ingénieurs de Genève et qui m'ont permis d'arriver jusqu'ici. Parmi
ceux-ci, je remercie particulièrement M. Lazeyras, mon professeur de diplôme, pour ses conseils
avisés, pour la relecture de mon mémoire et pour son humour au quotidien.
Je remercie Mrs. Meyer, Travaglini et Dubois pour m'avoir fourni les diérents logiciels,
périphériques et données géographiques nécessaires à la réalisation de ce projet de diplôme.
J'adresse aussi mes remerciements à Mrs. Yannic et Francey de l'École d'ingénieurs de
Lullier, pour avoir pris le temps de m'aider à dénir et cibler les besoins des services de gardes-
faune, ainsi que d'avoir suivi l'évolution du projet, tout en émettant des critiques constructives
et de nouvelles idées pour celui-ci.
Merci à ma famille d'avoir relu avec attention ce mémoire, de m'avoir encouragé tout au
long de mes études et sans qui, bien entendu, rien de tout cela n'aurait été possible.
Je remercie mes collègues de promotion Mrs Bell, Domenicucci , Gomez et Thévenoz, pour
la bonne humeur qu'ils ont gardée tout au long de ce travail de diplôme, même durant les
moments les plus stressants. Je les remercie également pour les conseils qu'ils m'ont donnés
pour la rédaction de ce mémoire. Finalement, merci Red BullTM de m'avoir tenu éveillé durant
ces longues mais néanmoins passionnantes journées et nuits de travail.
vi
Chapitre 1
Introduction
1.1 Contexte
Les gardes-faune des diérents cantons suisses n'utilisent actuellement aucun moyen unié
de recensement de la faune. De plus, à l'intérieur d'un même service de gestion de la faune,
plusieurs gardes peuvent utiliser leur propre méthode de saisie, parfois très rudimentaire. Cela
conduit inévitablement à une grande diculté de compilation de ces informations et les études
sur celles-ci deviennent très compliquées. L'archivage des données n'étant pas forcément assuré,
avec le temps et les rotations de personnel, beaucoup de précieuses informations peuvent être
perdues. C'est pourquoi l'École d'ingénieurs de Lullier (EIL) recherche aujourd'hui un moyen
technique permettant d'unier et simplier au maximum les saisies d'observations faunistiques.
Dans ce but, elle souhaite que les gardes-faune puissent disposer d'un terminal mobile
leur permettant de recenser très précisément la position géographique de chacun des animaux
observés et ceci directement sur le terrain. Les gardes doivent avoir la possibilité de saisir une
position xe, ou le trajet eectué par le groupe d'animaux. Ils doivent de plus pouvoir indiquer
pour chacun des sexes ainsi que pour diérentes tranches d'âges, le nombre d'animaux observés
lors de la saisie. D'autres informations, telles que l'espèce, l'activité ou un commentaire sur
l'observation doivent aussi pouvoir être entrés dans le système. L'école de Lullier désire, de
plus, que les gardes-faune aient la possibilité d'eectuer un ltrage des données et consulter
celles-ci sur le terrain. Ils pourraient, par exemple, vouloir acher sur la carte uniquement les
renards observés du premier janvier 2007 au 15 septembre 2008.
Dans un premier temps, ce travail de diplôme est consacré à l'étude de diérentes tech-
nologies permettant de représenter des données géographiques sur un terminal mobile. Une
fois la technologie la plus appropriée sélectionnée, le développement d'un prototype non-nal,
mais permettant de répondre à toutes les interrogations techniques du cahier des charges doit
être développé. Une base de données uniée, sera créée pour permettre aux gardes-faune de
l'ensemble de la Suisse de publier leurs observations an d'en faire proter l'ensemble de leurs
collègues, les chercheurs et éventuellement le grand publique. Ces derniers doivent avoir la
possibilité de visualiser les observations sur une application pour ordinateur de bureau. Des
développements futurs pourront être réalisés, an de traiter les données et d'eectuer des
études sur celles-ci.
1
CHAPITRE 1. INTRODUCTION 2
2.1 Préambule
Il a été décidé d'intituler FauneTracker l'application qui permet de répondre à la pro-
blématique énoncée dans l'introduction de ce mémoire. Celle-ci est constituée de trois entités.
FauneTracker - PDA pour commencer, qui est l'application la plus importante du projet et
doit permettre aux gardes-faune d'eectuer des saisies d'observations faunistiques directement
sur le terrain. FauneTracker - Desktop donne quant à elle la possibilité de visualiser les obser-
vations eectuées et d'éditer celles-ci, sur un ordinateur de bureau. Finalement, FauneTracker
- Conguration sert à dénir les éléments qui peuvent être choisis par les gardes-faune lors des
saisies ainsi qu'à préparer les missions qu'ils devront eectuer.
Ce chapitre énonce les outils qui seront proposés par les diérents logiciels de l'application
de même que le rôle des diérents acteurs. Le diagramme des cas d'utilisations présenté sur la
gure 2.1, introduit de façon graphique les comportements de ces acteurs et les fonctionnalités
oertes par les diérents modules de l'application.
3
CHAPITRE 2. CAPTURE DES BESOINS 4
Charger/Générer
<<include>> Consulter les
fichier de mission <<include>>
observations
<<include>> Accès BDD <<include>>
Interrogateur
Éditer les espèces,
Consulter
classes, etc.
carte/Naviguer
Responsable
Faune Tracker - PDA
Chargement <<include>>
Lire fichier de
Mission/Synchronisation configuration
<<include>>
«extends»
Saisir observation GPS
«extends»
Consulter
Observateur carte/Naviguer
2.2.2 Observateur
L'observateur dispose d'un PDA équipé de Faune Tracker - Saisie et de la carte liée à sa zone
d'activités. Il doit recenser les animaux dénit par la mission que lui fournit son responsable.
Il peut aussi, s'il le désire, récupérer et ltrer directement sur le terrain des informations sur
des observations précédemment eectuées.
À l'aide de FauneTracker - Desktop, l'observateur a la possibilité de visualiser les observa-
tions de tous ses collègues, ainsi que d'éditer ses propres saisies.
2.2.3 Interrogateur
L'interrogateur est une personne eectuant des recherches ou souhaitant seulement consul-
ter les données. Il a à sa disposition le logiciel FauneTracker - Desktop qui lui permet de
visualiser les observations et obtenir des informations sur celles-ci.
3.1 Préambule
La première étape de ce travail de diplôme consiste à étudier SVG (Scalable Vector Gra-
phics ) ainsi que ses variantes SVG Tiny et SVG Basic, dans le but de déterminer la faisabilité
du projet en perspective d'une implémentation sur un PDA fonctionnant sous Windows Mo-
bile. Le SVG est très utilisé sur les téléphones portables ainsi que pour la cartographie. Il
permet de représenter des objets graphiques et accéder à ceux-ci programmatiquement, de
créer des animations, des ltres, des dégradés.
3.2 Normes
Figure 3.1 Diérences entre un format matriciel et vectoriel.
Format matriciel Format vectoriel
Agrandissement
10 X
SVG est un format de dessin vectoriel. Un tel format dénit des images par des objets
géométriques distincts caractérisés par leur forme, leur emplacement ainsi que divers attributs.
Par opposition, un format matriciel tel que le JPEG par exemple, dénit une image par une
matrice de pixel.
7
CHAPITRE 3. SVG ET JAVA POUR UNE PLATE-FORME MOBILE 8
L'avantage d'un format vectoriel réside dans le fait qu'il permet de changer la taille d'une
image, pour une dimension quelconque sans pour autant obtenir un eet de pixellisation ou
escalier, contrairement à un format matriciel (voir la gure 3.1). En contrepartie, lors de
chaque visualisation du dessin, une nouvelle image doit être créée par l'ordinateur, ce qui est
coûteux en ressources.
Les spécications de ce format sont ouvertes et ont été édictées par le World Wide Web
Consortium (W3C). SVG décrit les objets vectoriels à travers un chier XML au sein duquel
1
<c i r c l e i d=" c e r c l e _ r o u g e " c x=" 6 . 5 cm" c y=" 2cm" r=" 1 0 0 " s t y l e =" f i l l : r e d ;
<c i r c l e i d=" c e r c l e _ j a u n e " c x=" 6 . 5 cm" c y=" 2cm" r=" 1 0 0 " s t y l e =" f i l l : y e l l o w ;
</g>
</ s v g >
Librairies
supplémentaires
Librairies
Autres
Machine
JVM KVM
Virtuelle
3.3 Dénitions
3.3.1 Motivations
Avant d'aller plus loin dans ce chapitre, il existe plusieurs notions et concepts spéciques
aux applications Java mobiles qu'il est indispensable de comprendre. Celles-ci sont détaillées
dans la suite de cette section. Le schéma 3.3 présente une synthèse de l'ensemble de ces notions.
3.4.2 Java
Pour commencer, le langage de programmation Java a été étudié en vue de l'utiliser comme
langage hôte. Nous savons que sur un ordinateur fonctionnant avec un système d'exploitation
conventionnel comme Linux, Windows ou Mac OS, le Java permet de développer des applica-
tions achant des dessins en SVG et interagissant avec ceux-ci. Cela est réalisé à l'aide d'une
bibliothèque graphique telle que Batik. Le langage Java nécessite une machine virtuelle pour
exécuter du code, or aucune machine virtuelle Java n'est installée de base sur les Pocket PC.
La première démarche a donc été de chercher, installer et tester diérentes machines virtuelles
Java gratuites et bibliothèques SVG pour Java disponibles pour PDA.
Les paragraphes qui suivent décrivent les possibilités théoriques et les résultats obtenus
avec diérentes machines virtuelles Java. An de tester celles-ci, deux librairie permettant
d'acher et modier du SVG à partir d'une application Java ont été sélectionnées.
Batik SVG Toolkit , librairie gratuite développée par Apache et supportant la spéci-
2
cation complète du SVG, conçue originalement pour être utilisée sur une plate-forme
J2SE.
TinyLine alternative payante supportant la norme Tiny SVG et nécessitant une plate-
3
Mysaifu est une machine virtuelle permettant d'exécuter du code J2SE, sur Windows
4
Mobile 2003. Après installation de celle-ci, il s'avère que des programmes Java relativement
peu complexes s'exécutent correctement sur le PDA, avec toutefois une latence importante.
Cependant, il n'est pas possible d'acher du SVG avec cette machine virtuelle, aussi bien avec
la bibliothèque Batik que TinyLine.
CrEme est une autre machine virtuelle pour Windows Mobile, développée par NSIcom.
5
Celle-ci implémente la spécication J2ME. Le test de celle-ci a permis de montrer que l'exé-
cution de programmes Java simples se déroule correctement mais, ici aussi, avec une latence
élevée. L'achage de SVG avec la bibliothèque Batik ne fonctionne pas. En revanche il est
possible d'acher des dessins au format SVG dans un programme Java, à l'aide de la bi-
bliothèque TinyLine. Cependant l'achage n'est pas totalement exact (position des éléments
erronée) et il est impossible d'acher du texte en SVG.
SuperWaba s'est installé correctement sur le terminal de test, cependant il n'a pas
6
été possible avec cette machine virtuelle qui fonctionne sous Windows Mobile, d'exécuter un
programme Java quelconque correctement.
Si Mysaifu et CrEme ont permis d'exécuter des applications Java simples, il n'a malheureu-
sement pas été possible d'acher du SVG avec un rendu satisfaisant. De plus, les programmes
exécutés sur ces machines virtuelles, sourent de latences élevées dicilement acceptables pour
l'utilisateur nal.
3.4.3 C#
Le C# est un langage objet conçu par Microsoft et faisant partie de l'architecture .NET.
Les programmes créés à l'aide de ce langage s'exécutent sur une machine virtuelle, dont une
version gratuite existe pour Windows Mobile. la possibilité d'utiliser le C# comme langage
hôte a donc été étudiée.
Le développement d'application pour PDA depuis Microsoft Visual Studio est très convi-
vial, il a été possible de créer et tester très facilement de petites applications C# sur le PDA
à l'aide de la machine virtuelle fournie avec le .NET Compact Framework 2.0. Ces applica-
tions fonctionnent parfaitement et avec une latence tout à fait acceptable pour l'utilisateur.
Le .NET Compact Framework est en fait un sous-ensemble des classes disponibles sur le .NET
Framework qui est utilisé pour développer des applications à destination d'un environnement
Windows standard.
Aucune librairie SVG n'est fournie avec le framework .NET. Des bibliothèques de classes
ont toutefois été développées dans le but d'implémenter cette norme dans ce framework. Mal-
heureusement, il n'en existe aucune en version nale ou dont le développement est relativement
avancé. Il s'agit de versions bêta voir alpha pour lesquelles la conception a souvent été aban-
donnée (pas de mise-à-jour depuis des années). Ces versions n'implémentent pas correctement
et complètement les diérentes normes de SVG et ne sont pas utilisables dans le cadre de
notre projet.
4. http://www.nsicom.com
5. http://www2s.biglobe.ne.jp/~dat/java/project/jvm/index_en.html
6. http://www.superwaba.com.br
CHAPITRE 3. SVG ET JAVA POUR UNE PLATE-FORME MOBILE 13
3.6 Bilan
La première étape de ce travail de diplôme consistait en l'étude des possibilités d'implé-
mentations de SVG pour un PDA sous Windows Mobile. Ceci dans le but d'examiner la
faisabilité du projet, à l'aide de SVG.
Après l'examen des diérentes normes SVG, il est clair que c'est la norme SVG Basic qui
serait la mieux adaptée pour un PDA. Cependant, si plusieurs implémentations de SVG ou
SVG Tiny telles que lecteurs, bibliothèques et applications existent, les implémentations de
SVG Basic sont très rares que ce soit pour un ordinateur de bureau, un PDA ou un téléphone
mobile. Nous ne nous sommes donc pas limités à l'étude des solutions pour SVG Basic, mais
nous avons testé des solutions pour les diérentes normes.
L'analyse a malheureusement montré que pour un PDA et avec le langage Java ainsi que
les diérentes machines virtuelles gratuites pour Pocket PC, il n'est pas possible d'acher du
SVG conformément à la norme. Ces machines virtuelles ne sont de surcroit pas certiées par
SUN, l'éditeur de Java. Le support du Java n'est donc pas exact et plusieurs bugs et plantages
sont apparus lors de l'exécution de programmes Java. Il faut aussi souligner que les problèmes
de lenteurs des applications sont rédhibitoires. Finalement, le déploiement et l'exécution d'un
programme sur ces machines demande de nombreuses opérations et n'est pas forcément à la
portée d'un utilisateur lambda. Avec le langage C#, les bibliothèques ne sont pas au point et
ne permettent pas un achage correct de diérents éléments en SVG.
En ce qui concerne les téléphones mobiles, le support de la norme SVG s'est, à nouveau,
avéré incomplet. Il faut aussi noter que, bien que les téléphones portables aient l'avantage
d'être très répandus, ils ne sont pas l'équipement le plus approprié en termes d'interface
homme-machine pour une application comme la notre. En eet, les téléphones mobiles ne sont
en principe pas tactiles et possèdent un petit écran, par rapport à un PDA.
Pour les diérentes raisons évoquées dans cette conclusion, il n'est pas réaliste d'envisager
une implémentation de FauneTracker avec des cartes au format SVG, que l'application soit
développée avec le langage hôte C# ou Java et qu'elle soit à destination des PDA ou des
téléphones mobile.
Chapitre 4
Produits ESRI
4.1 Préambule
Environmental Systems Research Institute, Inc. (ESRI) est une société informatique ac-
1
tive dans le domaine des systèmes d'information géographique (SIG). Elle détient d'ailleurs la
plus grande part de marché en terme de vente de logiciels de SIG. C'est elle qui, en 1969, a
été la première à introduire ce concept dans le monde de l'informatique.
ESRI propose une gamme complète de produits permettant de gérer un SIG, du serveur de
cartographie à l'application mobile, en passant par le poste utilisateur et la création des cartes.
Puisque l'État de Genève, ainsi que la plupart des cantons suisses possèdent une licence pour
ces produits, la décision d'étudier la faisabilité du projet FauneTracker, en utilisant ceux-ci a
été prise.
Le schéma 4.1 représente la gamme de produits développés par ESRI. Celle-ci est très
large. An que le lecteur comprenne mieux le rôle des diérents produits d'ESRI dans les
chapitres ultérieurs, une brève description des applications présentant un intérêt pour notre
travail, reprenant les catégories du schéma est donnée dans les sections qui suivent.
4.2 Bureautique
Cette catégorie est principalement constituée d'ArcGIS Desktop, qui est le produit central
de la gamme. Celui-ci est notamment constitué des deux logiciels suivants :
1. ArcCatalog, dont l'interface ressemble beaucoup à l'explorateur de Windows et permet
de réaliser les opérations suivantes :
naviguer et trouver sur l'ordinateur ou sur des serveurs distants, des informations
géographiques ;
dénir, créer, exporter et importer des modèles de bases de données géographiques ;
créer, modier et visualiser les métadonnées des informations géographiques ;
administrer un serveur ArcGis.
2. ArcMap, qui implémente les fonctionnalités qui suivent :
créer, éditer, visualiser et imprimer les diérentes cartes et leurs couches respectives ;
dénir tout ce qui concerne l'apparence des cartes (symbologie, labels, couleurs, etc.) ;
interrogation et analyse des données, création de graphiques et de textes.
1. http://www.esri.com
14
CHAPITRE 4. PRODUITS ESRI 15
4.3 Nomade
ArcPad permet de saisir, visualiser ou éditer des informations géographiques directement
sur le terrain, à l'aide de périphériques mobiles comme les PDA ou les tablettes PC. Ce
logiciel gère aussi les appareils photo numériques, certains récepteurs GPS ainsi que divers
autres équipements. Il est conçu pour les périphériques non-connectés. Il est donc nécessaire
de passer par un ordinateur xe disposant d'ArcGIS Desktop, an de synchroniser les données
du périphérique et du serveur. Une analyse plus détaillées de ce produit est réalisée au sein
du chapitre 5.
ArcPad Application Builder est une application qui permet de personnaliser ArcPad à
travers un outil de conguration ainsi que de scripts qui peuvent être écrits à l'aide des langages
VBScript ou JavaScript. Il permet aussi de d'éditer des formulaires ainsi que la manière dont
l'utilisateur pourra saisir des informations.
ArcGIS Mobile permet quant à lui de développer une application SIG légère pour des
périphériques nomades à l'aide d'un kit de développement logiciel (SDK) pour Microsoft .NET.
Ce SDK fournit des composants permettant notamment
d'acher une carte et de naviguer sur celle-ci ;
de mettre à jour le SIG ;
d'orir un support du GPS.
CHAPITRE 4. PRODUITS ESRI 16
4.4 Serveur
ArcGIS Server permet de rendre facilement disponible à de multiples clients, des données
géographiques mises en forme avec ArcGIS Desktop. Avec ArcGIS Server, il est possible de
créer des applications web pour l'accès aux données et de faire de la modélisation avancée
pour l'analyse spatiale. Il permet aussi de gérer la réplication et la distribution des données
sur de multiples serveurs. ArcGIS Server possède une console d'administration web mais peut
aussi être administré par l'intermédiaire d'ArcCatalog.
ArcSDE, qui aujourd'hui est un composant à part entière du serveur, permet de stocker,
au sein de divers moteurs de bases de données, les informations géographiques du serveur
(Microsoft SQL Server, Oracle, IBM DB2, etc.).
Chapitre 5
5.1 Description
ArcPad est un logiciel conçu pour fonctionner sur des dispositifs nomades à disposition
des agents de terrains, an de leur permettre de saisir et consulter des données sur des cartes
(cf. 4.3).
Ce logiciel fonctionne en mode non-connecté, cela signie que toutes les cartes que l'agent
de terrain consulte ainsi que toutes les données qu'il saisit sont stockées directement sur le
périphérique. La synchronisation s'eectue quand l'agent établit une connexion entre ArcPad
et ArcMap qui se trouvent respectivement sur le PDA et l'ordinateur de bureau de celui-ci.
C'est cet ordinateur qui se synchronisera ensuite avec le serveur via ArcCatalog pour mettre à
jour leurs données respectives, ceci est résumé sur le schéma 5.1. ArcPad Application Builder
permet quant à lui de créer une interface personnalisée pour le logiciel ArcPad.
Étant donné que la conjugaison de ces deux logiciels semble répondre aux exigences de
l'application FauneTracker, une analyse détaillée de ceux-ci est eectuée au sein de ce chapitre.
La version du programme utilisée, est la 7.1.1.
Agent de terrain
17
CHAPITRE 5. ARCPAD ET ARCPAD APPLICATION BUILDER 18
Les chiers de conguration pour ArcPad, sont en fait de simples chiers XML qui portent
l'extension APX. Le chier de conguration qui est chargé lorsque ArcPad est lancé, doit être
placé dans le sous-répertoire System de ArcPad sur le terminal mobile. Le listing de la page
suivante (5.1), présente un exemple de chier de conguration.
CHAPITRE 5. ARCPAD ET ARCPAD APPLICATION BUILDER 19
<CONFIG>
</TOOLBUTTON>
30 </TOOLBAR>
40 o n c l i c k =" O p e n F i l t e r F o r m ( ) "
o n c l i c k =" R e m o v e F i l t e r s ( ) "
</TOOLBAR>
</TOOLBARS>
50 <SYSTEMOBJECTS>
</SYSTEMOBJECTS>
</CONFIG>
</ ArcPad>
Figure 5.3 Exemple de formulaire d'ajout, avec aide à la saisie et guidage étape par étape.
5.3.2 Formulaires
Les diérents formulaires sont directement contenus dans le chier AXF. Ceux-ci sont créés
à l'aide d'ArcPad Application Builder qui permet de créer des formulaires personnalisés pour
la saisie, l'interrogation et la recherche de données.
5.3.3 Scripts
Toutes les actions personnalisées sont dénies par des scripts. Ceux-ci sont appelés lors
d'évènements précis tels que le chargement d'un formulaire, la pression sur un bouton, un
clique sur la carte, etc. Ils peuvent être écrits en JavaScript ou VB Script et utilisent le modèle
objet d'ArcPAD , qui est une bibliothèque de classes donnant accès à certaines fonctions et
1
outils du logiciel. Dans le cadre de ce travail, le choix de rédiger les scripts à l'aide du langage
JavaScript a été fait.
Voici un exemple simple : il faut créer un ltre an de pouvoir acher seulement les
animaux d'une certaine espèce et recensés par un observateur donné. Pour cela il faut créer
un formulaire ainsi que quelques fonctions, dans le but de remplir les listes déroulantes, réagir
aux évènements, rafraichir la carte, etc. Le code de la fonction permettant de récupérer les
données sélectionnées dans les listes déroulantes et qui créé le ltre correspondant est aché
ci-dessous.
/* * Permet de creer le filtre à appliquer sur la couche de recenssement .
*/
function CreateFilter () {
// Initialisation du filtre .
var filter = "" ;
if ( c t r l O b s . Enabled ) {
if ( filter != "" )
25
// Mise à jour du cache et reaffichage de la couche .
layer . visible = false ;
1. http://www.esri.com/library/fliers/pdfs/arcpad-objectmodel.pdf
CHAPITRE 5. ARCPAD ET ARCPAD APPLICATION BUILDER 22
5.4 Bilan
ArcPad est un logiciel performant et, pour autant que l'utilisateur prenne le temps de
se plonger dans son modèle objet et ses divers aspects techniques, relativement aisément
personnalisable. Grâce à la réalisation d'un prototype, il a été démontré que du point de vue
technique, il est possible de réaliser l'application FauneTracker avec celui-ci.
Il faut toutefois noter certains aspects peu concluants. Comme précédemment évoqué,
une application créée avec ArcPad, n'est pas une application à part entière, mais plutôt une
personnalisation d'ArcPad pour l'implémentation souhaitée. Si cela permet de créer des ap-
plications avec une certaine rapidité, cela entraine malheureusement en contrepartie de fortes
limitations dans la possibilité de création d'une interface répondant de façon optimale à des
besoins spéciques.
En ce qui concerne le projet FauneTracker, il n'est pas possible de créer une interface
homme-machine possédant la simplicité requise par le cahier des charges. De plus, il faut noter
que la synchronisation des données entre le PDA et le serveur est relativement complexe. Il
faut en eet eectuer une succession d'opérations qui ne laisse pas de place à une erreur
de l'utilisateur. En outre, cette synchronisation nécessite un ordinateur de bureau possédant
une certaine conguration (voir schéma 5.1). La synchronisation des données n'est donc pas
ouverte à un utilisateur lambda.
Chapitre 6
Préparation de l'implémentation
6.1 Préambule
Après une phase conséquente d'étude, il a été décidé d'implémenter le projet FauneTracker
à l'aide des diérents produits de la société ESRI et plus particulièrement à l'aide du SDK
d'ArcGIS Mobile, fourni avec la version 9.3 du serveur. Après divers tests, celui-ci semble en
eet être capable de répondre de la façon la plus optimale, au cahier des charges. Dans ce
chapitre, tout ce qui concerne la préparation du développement sera analysé. La description
de l'environnement de développement et de tests mis en place sera nalement donnée, avant
d'étudier la structure de données choisie ainsi que les diérentes couches sélectionnées pour
créer la carte.
23
CHAPITRE 6. PRÉPARATION DE L'IMPLÉMENTATION 24
Internet
Station de développement
6.3.3 Pictogrammes
Pour faciliter l'interface du programme et le rendre plus ludique, des pictogrammes per-
mettant à l'utilisateur d'identier les diérentes classes, espèces et activités lui sont présentés.
Pour gérer et stocker ces images, deux possibilités ont été envisagées : créer un champ dans
chacune des tables correspondantes, contenant l'adresse sur un serveur de chier de l'image
ou alors stocker directement l'image dans la base de données.
CHAPITRE 6. PRÉPARATION DE L'IMPLÉMENTATION 27
Chacune des méthodes possède des avantages. Il a cependant été choisi de stocker l'image
directement dans la base de données car cela permet de s'aranchir des risques liés à l'uti-
lisation d'un serveur de chier annexe. En eet, les images ne risquent pas d'être déplacées,
renommées ou supprimées. De plus, la gestion des droits s'eectue ainsi, via les droits d'accès
à la base de données et ne demande pas une nouvelle étape de conguration de gestion. Il faut
nalement noter que les images à stocker sont de faible taille (de l'ordre quelques kilo-octets),
de ce fait celles-ci ne risquent pas de surcharger la base de données. En contrepartie le procédé
pour extraire et enregistrer des images dans la base de données est un peu plus compliqué,
car celles-ci doivent être stockées sous forme d'un tableau d'octets.
6.3.4 Carte
La carte utilisée par notre application a été créée à l'aide du logiciel ArcMap qui fait partie
d'ArcGIS Desktop. Celle-ci est composée de trois couches de données géographiques :
1. la couche de fond, qui est une couche au format matricielle extraite des cartes topogra-
phiques à l'échelle 1/25000 de la Suisse ;
2. une couche vectorielle contenant des points, pour saisir les observations statiques ;
3. une couche vectorielle permettant de dessiner des lignes-brisées, pour les observations
de déplacements.
Les deux couches vectorielles contiennent en plus des données géographiques, les attributs
dénit par le schéma vu au point 6.3.2. Toutes ces couches sont stockées dans une base de
données géographiques administrée à l'aide d'ArcCatalog et se trouvant physiquement sur le
serveur SQL Express. Une partie de la carte créée est représentée sur la gure 6.4. Un service
sur le serveur ArcGIS a nalement été créé, an de rendre accessible les données de cette carte,
via internet.
Figure 6.4 Carte créée pour l'application.
Observation du trajet
d’un animal (couche n°3)
Observation statique
d’un animal (couche n°2)
Carte de la Suisse au
1/25000 (couche n°1)
Chapitre 7
FauneTracker - Conguration
7.1 Description
Cette application est destinée aux responsables des groupes de gardes-faune. Elle met à la
disposition de ces responsables, principalement deux fonctionnalités :
1. éditer les données présentes sur le serveur de base de données ;
2. dénir une mission pour les gardes-faune et générer automatiquement le chier de mission
correspondant.
L'interface de cette application doit impérativement être très simple, an qu'elle soit ou-
verte à un utilisateur lambda. Cela permettra d'éviter tout risque d'erreur de sa part. Diverses
fonctions supplémentaires, telles que le chargement d'un chier de mission précédemment créé
seront fournies à l'utilisateur.
28
CHAPITRE 7. FAUNETRACKER - CONFIGURATION 29
7.2.2 Format
<?xml v e r s i o n=" 1 . 0 " e n c o d i n g=" u t f −8" s t a n d a l o n e=" y e s "?>
<A p p l i c a t i o n >
<s e r v i c e _ u r l >
<u s e r s >
10 </ u s e r s >
<menus>
</menu>
</menu>
</menu>
/>
</menus>
</ A p p l i c a t i o n >
Un élément menu est ensuite créé dans le chier de mission, pour chacun des formulaires de
saisie qui seront présentés à l'utilisateur dans l'application pour PDA. Cet élément est constitué
d'attributs dénissant le type du menu, le texte devant s'acher sur l'écran de l'utilisateur
et nalement un nom constituant un identiant unique pour le menu. Ces diérents menus
contiennent éventuellement des menuitems qui sont les éléments tels que les classes, espèces
et activités choisis par le responsable dans FauneTracker - Conguration et qui seront achés
au sein du formulaire. Pour chacun de ces éléments de formulaires plusieurs attributs en plus
du texte les dénissant sont fournis :
le dossier ainsi que le nom de chier de l'icône permettant de le représenter ;
un identiant unique au sein du menu courant ;
pour chacune des espèces, une référence permettant d'identier la classe dont elle fait
partie.
7.2.3 Génération
Les diérentes données contenues dans le chier de mission sont extraites à partir de la
base de données, selon les choix du responsable dans le programme de conguration. Lorsque
le responsable a ni de dénir sa mission, il clique sur le menu permettant de générer le chier
de mission et FauneTracker - Conguration s'occupe d'accéder aux éléments de la base de
données et de générer le chier XML à partir de ceux-ci. En parallèle, le programme crée un
répertoire, dans lequel tous les pictogrammes des éléments choisis sont ajoutés.
7.3 Authentication
Comme l'utilisation de ce logiciel est réservée aux responsables de gardes-faune, ceux-ci
doivent s'identier pour pouvoir l'utiliser. L'authentication utilise le même principe que celui
qui sera vu en détails pour FauneTracker - PDA au point 8.5, aux diérences près que l'on
doit en plus s'assurer que l'utilisateur est un responsable et que les données sont consultées
directement sur le serveur de base de données et non-plus à partir d'un chier de mission.
try
10 {
// Ouvre la connexion
20 s q l C o n . Open ( ) ;
25 Dialogs . showErrorDialog (
// Validation de la transaction
30 s c o p e . Complete ( ) ;
40 }
ADetailsItem
Détails
showDetailsDialog ( detailsDialog ) ;
5 }
showDetailsDialog ( detailsDialog ) ;
5 }
CHAPITRE 7. FAUNETRACKER - CONFIGURATION 34
On peut constater que le comportement des deux méthodes est quasiment identique, la
seule diérence réside dans le choix du type concret du dialogue à créer. Pour simplier ce
comportement une classe abstraite possédant les instructions suivantes peut être introduite :
// Méthode abstraite dont l ' implémentation est laissée aux sous - classes
protected abstract DetailsDialog getDetailsDialogNewItem () ;
5 {
showDetailsDialog ( detailsDialog ) ;
dataAccess Champs
btImage
Champs Champs
editMode dataXML
btAdd aDetailsItem btAnnuler
lblID Méthodes
btModify btRecord
pbImage getTable
btRemove components
readOnly XMLReader
checkedList Méthodes
aDetails Propriétés
menuName configureDetailsIt…
DataAccessComponent
Propriétés DetailsDialog
FrmMain EditMode
Class
CheckedItems DetailsDialog_For…
Form Méthodes
APanel Méthodes
Champs btAdd_Click
ADetailsItem
exitProgram btModify_Click
panels btImage_Click
LoadConfiguration btRemove_Click
loginResponsable checkedList_SelectedIndexChanged
mainMenu checkItems
SaveConfiguration configureDetailsItem ActivitesDetailsDialog EspecesDetailsDialog
tpActivites Class Class
tpClasses DetailsDialog DetailsDialog
tpEspeces refreshListBoxItems
Méthodes
createPanels
exitProgram_Click
FrmMain
ClasseDetails EspDetails XmlGenerator
LoadConfiguration_Click
Class Class Class
SaveConfiguration_Click CPanelClasses CPanelEspeces ADetailsItem ADetailsItem
FAUNETRACKER - CONFIGURATION
Class Class
APanel APanel
Champs
Champs Champs
idx
ImageParsing txtDetails cbClasses
Static Class Méthodes Méthodes images_directory
txtNom classesDico service_url
CPanelClasses CPanelEspeces
Propriétés txtNomFr
Méthodes getDetailsDialogModifyItem getDetailsDialogModifyItem Méthodes
ReadOnly txtNomLatin
getBitmapBytes getDetailsDialogNewItem getDetailsDialogNewItem createImagesFolder
TextID Propriétés
getImageBytes getItemDetails
Méthodes ReadOnly writeImageInFile
ClasseDetails TextID writeMenuActivites
isDataValids Méthodes writeMenuClasses
loadInformation EspDetails writeMenuCommentaires
recordModifications isDataValids writeMenuDateObservation
Figure 7.5 Diagramme de classes simplié de FauneTracker - Conguration.
loadCbClassesIte… writeMenuEffectifs
loadInformation writeMenuEspeces
recordModifications writeUsersFromGroupOfAResponsable
XmlGenerator
35
Chapitre 8
FauneTracker - PDA
8.1 Description
Le logiciel pour les PDA est destiné aux gardes-faune. Il doit principalement leur permettre
d'eectuer très simplement la saisie d'une observation d'animaux, fournir un positionnement
GPS et permettre de synchroniser facilement les données saisies, avec le serveur de donnée.
Il doit aussi permettre aux gardes-faune de consulter des informations sur d'anciennes ob-
servations et leurs permettre de ltrer celles-ci. Il faut que ce logiciel soit personnalisable
dynamiquement, par l'intermédiaire d'un chier de mission. Ce chier de mission sera régu-
lièrement fourni par le responsable du groupe de gardes-faune et dénira une mission pour
ceux-ci. Le diagramme de cas d'utilisations de la gure 2.1 synthétise ces fonctionnalités.
Figure 8.1 FauneTracker PDA, achage de la carte (gauche) et saisie de l'espèce (droite).
36
CHAPITRE 8. FAUNETRACKER - PDA 37
else
20 {
try
25 }
CommonTools . s h o w E r r o r D i a l o g (
30 + exc . Message ) ;
Il faut maintenant fournir à l'utilisateur les outils suivants an qu'il puisse naviguer à
travers la carte :
zoom avant ;
zoom arrière ;
déplacement de la carte.
Pour réaliser ceci, les outils désirés fournis par le SDK d'ArcGIS Mobile sont ajoutés à
la collection d'actions MapActions de la carte. Les diérents outils vu ci-dessus ont donc été
ajoutés à la carte. Pour ajouter le zoom en avant, par exemple, il faut exécuter les instructions
suivantes :
// Création d 'un outil de zoom en avant
ZoomInMapAction zoomInAction
5 {
En ce qui concerne le zoom arrière et le déplacement de la carte, le code est presque identique,
il sut de choisir l'outil correspondant.
// /
// / Permet de lire le fichier de configuration .
// / Utilise le motif de conception SINGLETON .
// /
5 class ConfigReader
// Change le répertoire
xmlCfgFilePath = path ;
30 }
35 {
return configReader ;
try
50 {
// Création du dataset
55 dsConfig = new DataSet ( ) ;
xmlDoc . Load ( x m l C f g F i l e P a t h ) ;
65 return dsConfig ;
}
CHAPITRE 8. FAUNETRACKER - PDA 40
return null ;
80
}
. . .
. . .
// Affectation de la carte
t h i s . g p s D i s p l a y . Map = this . carte ;
15 }
25 DialogResult dr = showQuestionDialog (
"GPS" ) ;
if ( dr == D i a l o g R e s u l t . Yes )
30 serialPortGpsConnection . Close () ;
}
CHAPITRE 8. FAUNETRACKER - PDA 41
DialogResult dr = showQuestionDialog (
"GPS" ) ;
if ( dr == D i a l o g R e s u l t . Yes )
40 try
catch ( Exception e)
55 }
8.5 Authentication
An de s'assurer que les données sont saisies par un garde-faune et que celui-ci utilise bien
le nom d'utilisateur qui lui est attribué, un mécanisme d'authentication par mot de passe a
été mis en place. Les diérents noms d'utilisateurs du groupe de gardes-faune pour lequel est
destinée la mission ainsi que le condensé (hash ) des mots de passe correspondants généré à
l'aide de l'algorithme MD5, sont stockés dans le chier de mission XML.
Mot de passe
entré par Condensé A
l’utilisateur
Condensé A = Utilisateur X
Vrai
Condensé B ? authentifié!
Condensé B
Au moment de l'ouverture du programme et an d'éviter le plus possible les saisies avec
le clavier virtuelle, l'utilisateur pourra choisir son nom d'utilisateur parmi une liste achant
tous les noms d'utilisateurs du groupe. Il saisira ensuite son mot de passe qui sera haché et
comparé au hash stocké dans le chier XML. S'il s'avère que les deux condensés correspondent,
l'utilisateur sera authentié et pourra utiliser l'application. Cette technique évite de stocker
en un quelconque endroit les mots de passe en clair, ce qui serait désastreux au niveau de la
sécurité. Toutes ces étapes sont résumées sur la gure 8.2 et la portion de code qui suit, montre
la manière dont est généré le condensé d'une chaine de caractère dans notre application.
// /
// / Permet d ' obtenir le condensé MD5 d ' une
// / chaine de caractères .
// / < param name =" text " = Chaine de caractère
5 // / < returns > Condensé </ returns >
// /
public static string getMd5Hash ( S t r i n g text )
15
// Recréation d ' une string a partir des octets
StringBuilder sBuilder = new StringBuilder () ;
return s B u i l d e r . ToString ( ) ;
25 }
8.6 Synchronisation
Le garde-faune doit avoir la possibilité, lorsqu'il le désire et qu'une connexion à internet
est établie sur le PDA, de synchroniser celui-ci an de publier sur le serveur les observa-
tions qu'il a eectuées et de récupérer les modications faites sur les diérentes couches de
fonctionnalités. Étant donné que sur le PDA, l'observateur peut uniquement saisir de nou-
velles données et ne peut pas éditer ou supprimer les anciennes, lors de la synchronisation il
sut de poster ses nouvelles observations et de récupérer celles eectuées par ses collègues
ainsi que les mises-à-jour de celles qu'il possède déjà. Pour eectuer ces deux opérations, la
classe MobileService du SDK d'ArcGIS Mobile fournit deux méthode très pratiques. La pre-
mière, PostFeaturesAsync(), prend comme unique paramètre un objet permettant d'identier
la transaction et envoie au serveur toutes les nouvelles informations saisies sur les couches de
fonctionnalités de la carte, ceci de manière asynchrone. La deuxième, GetFeatureDataAsync(),
sert à récupérer les changements ainsi que les nouveaux enregistrements saisis dans les couches
de fonctionnalités, à partir du serveur. Elle agit aussi de façon asynchrone et prend comme
paramètre l'étendue sur laquelle les données doivent être récupérées, un booléen indiquant si
le cache doit être rafraichi et un identiant de transaction.
CHAPITRE 8. FAUNETRACKER - PDA 43
// /
// / Synchronisation des données entre le serveur et le périphérique .
// /
private void synchronizeData ()
5 {
valide . ") ;
15 // Si oui
if ( dr == D i a l o g R e s u l t . Yes )
errorMessageDisplayed = false ;
userID ) ;
object sender ,
sRequestCompletedEventArgs e)
20 }
10 {
case GeometryType . P o l y l i n e :
30 s k e t c h G r a p h i c L a y e r 1 . Geometry =
new Polyline () ;
break ;
case GeometryType . P o i n t :
s k e t c h G r a p h i c L a y e r 1 . Geometry =
CHAPITRE 8. FAUNETRACKER - PDA 45
40 }
new SaisieProcess (
configData ,
observations ,
e d i t L a y e r . GeometryColumnIndex ,
25 s e r i a l P o r t G p s C o n n e c t i o n . IsOpen ,
userID ,
nouvelleForme ) ;
// Démarrage du processus
saisieProcess . s a i s i e () ;
30
// efface les données ajoutées sur la couche de dessin
c o u c h e D e D e s s i n . Geometry = null ;
saisieEnCours = false ;
Saisie Classe
Précédent Suivant
Saisie espèce
Précédent Suivant
Saisie activité
Précédent Suivant
Saisie effectifs
Précédent Suivant
Précédent Suivant
Saisie commentaire
Précédent Suivant
Affichage récapitulatif
de la saisie
Suivant
CHAPITRE 8. FAUNETRACKER - PDA 47
. . .
20 = i n t . Parse ( getSelectedItemTag ( ) ) ;
// ... sinon affichage d 'un message d ' erreur contraignant l ' utilisateur
25 // à sélectionner un élément .
else
30 }
Saisie Classe
Précédent Suivant
Saisie espèce
Précédent Suivant
Ajouter filtre
Saisie date
d’observation
minimum
Précédent Suivant
Saisie date
d’observation
Précédent maximum Suivant
Affichage du résultat
sur la carte
Terminer
CHAPITRE 8. FAUNETRACKER - PDA 49
IEtatSaisieObservation
Abstract Class Interface Abstract Class
Form historiquesEtats
Méthodes Propriétés
Champs
RequeteType
dataSet
Abstract Class Méthodes
menuId etatCourant
AFormSaisieObservation
Méthodes
Champs activer
listView desactiver etatPrecedent
libererRessources machineEtats etatSuivant
Méthodes
precedent libererRessources
suivant
ConstructRequestFilter SaisieProcess
Class Class
SaisieClasse SaisieEspece AStateMachine AStateMachine
Class Class
AFormSaisieObservation… AFormSaisieObservation…
De plus, cette classe dénit les méthodes pour remplir le champ titre du formulaire ainsi
que le label achant l'étape en cours. Lors d'un clique sur le bouton suivant, celle-ci capture
l'évènement, calcule l'identicateur du formulaire suivant et appelle une méthode pour passer
à l'état suivant. Toutefois cette méthode étant abstraite, le choix de son implémentation est
laissé aux classes descendantes. Ceci correspond à la dénition du motif de conception template
method (voir point 7.5.2).
// / Classe abstraîte spécifiant les comportements de base .
public abstract class AFormSaisieObservation : Form , IEtatSaisieObservation
. . .
. . .
// Est appelé lorsque l ' utilisateur clique sur le bouton " suivant "
// Dans le design pattern , cette méthode est appelée " méthode patron "
10 private void btSuivant_Click ( o b j e c t sender , EventArgs e)
// Traitement factorisé
int nextMenuId = menuId++;
IEtats
IEtats
Interface Abstract Class
Form
etatCourant
machineEtats
ctrlFemellesJuveniles
CommonTools ConfigReader
Static Class Class
Authentification
Class
Figure 8.6 Diagramme de classes simplié de FauneTracker - PDA.
Form
Program
Static Class
51
Chapitre 9
FauneTracker - Desktop
9.1 Description
Dans le cadre du projet, il peut être très utile d'avoir la possibilité de consulter les données
directement sur un ordinateur de bureau, plutôt que sur un PDA. L'ordinateur est en eet, bien
plus adapté pour visualiser des cartes et avoir une vision globale des résultats. De plus, en cas
d'erreur dans les saisies ou pour apporter un complément d'informations aux observations, il
faut prévoir un moyen d'éditer celles-ci. Or, cela compliquerait considérablement et inutilement
l'interface de FauneTracker - PDA si des fonctions d'édition lui étaient directement ajoutées.
Il faut en outre relever, qu'il ne serait pas commode pour l'utilisateur d'éditer les observations
directement sur le PDA.
C'est pourquoi, il a été décidé de développer FauneTracker - Desktop. Cette application
fonctionnera sur un ordinateur de bureau standard, utilisant Windows. Elle devra permettre
de résoudre les problématiques soulevées ci-dessus. Les développements spéciques à cette
application seront vus dans ce chapitre. Le fonctionnement de l'achage et de la navigation
sur une carte, les mécanismes d'accès aux données, ainsi que tous les points qui ont déjà été
abordés et détaillés dans les chapitres précédents, ne seront pas évoqués ici.
52
CHAPITRE 9. FAUNETRACKER - DESKTOP 53
5 // Choix de la légende
l b l S t a t u s A c t i o n . Text = " Sélection " ;
Cet outil est lié à une sur-couche de la carte appelée coucheSelection. Quand un élément
est sélectionné sur une des couches d'observation, la couche de sélection permet de le mettre en
évidence en dessinant un symbole au-dessus de celle-ci, sans aecter l'observation elle-même.
CHAPITRE 9. FAUNETRACKER - DESKTOP 54
Il faut à présent écouter les évènements intervenants sur l'outil de sélection, an de savoir
si une observation a été sélectionnée. Si c'est le cas, les opérations suivantes sont eectuées :
1. récupération de la table contenant les données de la couche de sélection ;
2. récupération de l'enregistrement correspondant à l'observation sélectionnée ;
3. récupération de la clé de l'observation ;
4. chargement dans l'instance de la classe OservationDetailsComposant, des informations
sur l'observation ;
5. selon les droits de l'utilisateur du programme, achage des boutons permettant de
modier l'enregistrement.
Ces opérations sont eectuées dans la méthode appelée lorsque le statut de l'outil de
sélection change. Voici le code correspondant :
private void selectionAction_StatusChanged (
object sender ,
MapActionStatusChangedEventArgs e)
5 // Vérifie que l ' action est terminée et qu ' une observation a été sélectionnée
if (( e . StatusId == MapAction . C o m p l e t e d )
idx_observation , o u t i l S e l e c t i o n . S e l e c t e d F e a t u r e s [ 0 ] . F e a t u r e L a y e r . Name ) ;
activeOrDeactiveSaisieButtons ( true ) ;
25 }
Il faut donc prévoir un moyen de corriger la géométrie des formes saisies. Le SDK d'ArcGIS
Mobile propose diérents outils permettant d'eectuer ces opérations.
Après avoir sélectionné une observation, si celui-ci possède les droits pour l'éditer, l'utili-
sateur peut choisir un outil pour l'édition des formes dans le menu du programme :
déplacement d'un vertex ;
insertion d'un vertex ;
suppression d'un vertex.
Lors d'un clique sur l'un de ces éléments de menus, l'outil correspondant sera chargé. Ces
outils sont liés à une couche supplémentaire de la carte permettant de dessiner sur celle-ci.
La forme choisie est ensuite copiée de la couche de sélection vers la couche de dessin ; ainsi,
toutes les modications sont achées et enregistrées au sein de cette couche tampon. À la n
de son édition l'utilisateur possède le choix d'enregistrer ou de rejeter les modications qu'il
a apporté à la géométrie de la forme.
Le code suivant est appelé lorsque l'utilisateur a choisi un outil parmi le menu et permet
de préparer l'édition :
// outil est l ' outil choisit par l ' utilisateur
// legende est le texte à afficher dans la barre de statut
private void c h o i s i r O u t i l ( MapAction outil , String legende )
15 || c o u c h e D e s s i n . Geometry . I s E m p t y
20 }
5
// Récupération de la couche à modifier
FeatureLayer coucheEditee = o u t i l S e l e c t i o n . S e l e c t e d F e a t u r e s [ 0 ] . FeatureLayer ;
9.4.2 Attributs
L'utilisateur peut aussi avoir à renseigner une information supplémentaire sur une observa-
tion ou alors modier une erreur. Il faut donc mettre à sa disposition une interface utilisateur
permettant de le faire facilement.
Lorsque l'utilisateur sélectionne une observation pour laquelle il possède les droits d'édition,
le bouton Éditer s'active. Si l'utilisateur presse sur celui-ci, un formulaire d'édition apparait à
l'écran. Pour éviter la redondance de code, ce formulaire sera constitué du même composant
qui permet de visualiser les informations sur l'observation, OservationDetailsComposant, à
la diérence près que celui-ci deviendra éditable. L'édition de certains champs, tels que le nom
de l'observateur et la date de saisie, restera proscrite car ces informations ne sont pas saisies
par l'utilisateur, mais directement par le programme et ne sont donc pas sujettes à des erreurs
de saisies.
FrmMain FrmAuthentification OservationDetailsComposant
CHAPITRE 9.
Méthodes txtCommentaires
annulerModificationsToolStripMenuItem_Click txtObservateur
Dialogs
btEditer_Click Static Class Propriétés
btSupprimer_Click FrmEdit ReadOnly
Class
carte_ExtentChanged Méthodes Méthodes
Form
choisirOutil showErrorDialog chargerCbActivites
choixSelection_Clique Champs showStandardQuestionDialog chargerCbClasses
deplacerVertexToolStripMenuItem_Click showWarningDialog chargerCbEspeces
btAnnuler
enregistrerModification_Click chargerInformations (+ 1 surcharge)
btEnregistrer
FrmMain enregistrerModifications
FrmMain_Load Méthodes observationDetailsComposant
getImage
insererVertexToolStripMenuItem_Click btEnregistrer_Click
OservationDetailsComposant
FrmEdit (+ 1 surcharge)
Figure 9.3 Diagramme de classes simplié de FauneTracker - Desktop.
mobileService_RequestCompleted rafraichir
selectionAction_StatusChanged observationDetailsComposant supprimer
verifierDroitObservateur
58
Chapitre 10
Déploiement
10.1 Introduction
Le cahier des charges établi lors de la capture des besoins, stipule qu'il est indispensable
que le programme soit aussi simple que possible d'utilisation. Cette facilité doit cependant
être étendue au-delà du programme lui-même. An que l'utilisateur nal puisse installer le
programme sur son ordinateur et son PDA sans recourir à l'aide d'un administrateur système
ou autre, deux programmes d'installations (installateurs) dont l'utilisation est très aisée ont
été réalisés. Le premier permet d'installer la partie de l'application résidant sur des ordinateurs
de bureau FauneTracker - Desktop et FauneTracker - Conguration, et le second pour la partie
mobile FauneTracker - PDA.
59
CHAPITRE 10. DÉPLOIEMENT 60
Synchronisation quotidienne
Service web
Application
Développement de
FauneTracker-PDA
Exécutable
(.EXE)
ArcGIS Server
Génération du cache de carte Cache de cartes Deploiement
Exécutable
(.EXE) Fichier de
Géneration déploiement
du fichier .CAB
Cache de cartes
DLL
ArcGIS
Instruction FauneTracker.cab
d’installations,
raccourcis, etc.
CHAPITRE 10. DÉPLOIEMENT 61
Cependant il doit tout de même eectuer certaines manipulations qui ne lui sont pas
forcément familières : transférer le chier CAB sur le PDA, naviguer sur le PDA pour retrouver
celui-ci et enn l'exécuter. De plus, l'utilisateur doit eectuer les mêmes opérations pour un
autre CAB fournis par ArcGIS et contenant les librairies du SDK d'ArcGIS Mobile permettant
d'exécuter un programme réalisé à l'aide de celui-ci.
C'est pourquoi il a été décidé d'aller encore plus loin, en proposant à l'utilisateur un
installateur Windows. Ce dernier s'occupe de notier le gestionnaire d'applications mobiles,
des chiers CAB à transférer sur le PDA. Dès la connexion de celui-ci (il n'est pas nécessaire
de le connecter pendant l'exécution de l'installateur Windows), le gestionnaire d'applications
lancera automatiquement le transfert des diérents chiers CAB à destination du PDA, puis
les exécutera sur celui-ci. La seule action nécessaire de l'utilisateur nal sera donc d'exécuter
l'installateur Windows, ce qui ne devrait pas lui poser de problème.
La première étape consiste à créer un chier de conguration INI, dont le chemin sera
envoyé en paramètre au gestionnaire d'applications mobiles. Ce chier indique au gestionnaire
d'application les noms des chiers CAB à installer sur le périphérique. Voici son code :
[ CEAppManager ]
Version = 1.0
5
// Composant
[ FauneTracker ]
10 if ( appManager != null )
// Lance le gestionnaire
Process . Start (
else
Finalement, un installateur Windows est créé. Celui-ci contient les références des diérents
chiers CAB, le chier de conguration INI ainsi qu'un appel vers le composant d'installation
personnalisé. L'utilisateur nal dispose donc, à présent, d'un installateur au format MSI qu'il
lui sura d'exécuter sur son PC de bureau, pour installer l'application sur le PDA. Le schéma
10.3 illustre le fonctionnement de l'installateur.
Installateur MSI
Utilise
Appelle
Gestionnaire
d’applications Fichiers CAB
Installe
Utilisateur final Windows CE
Chapitre 11
Conclusion
Ce travail de diplôme a premièrement consisté en l'étude des diérents moyens de mettre
en ÷uvre une application de recensement de la faune sur un terminal mobile. Il a ensuite fallu
choisir parmi ceux-ci le moyen le plus adapté, par rapport au cahier des charges et au temps
de développement qu'il nécessitait. Finalement, un prototype de l'application FauneTracker,
permettant de répondre à toutes les questions que soulevait le cahier des charges a du être
réalisé.
Dans un premier temps, nous avons choisi d'étudier s'il existe un moyen de résoudre cette
problématique, à l'aide de technologies libres. L'examen des normes SVG, SVG Tiny et SVG
Mobile qui permettent d'orir un rendu graphique a dont été eectué. Ces normes doivent
être utilisées au sein d'un langage hôte, avec lequel l'application est elle-même développée.
C'est pourquoi nous avons envisagé de programmer le logiciel pour le PDA en Java, qui
est à présent aussi une technologie libre. Malheureusement, nous avons vite été confronté à
plusieurs problèmes. Les diérentes machines virtuelles Java testées, sourent de latences très
élevées et inacceptables pour l'utilisateur, dès que le programme devient un tant sois peu
conséquent. Ces machines virtuelles ne sont de surcroit, pas certiées par l'éditeur de Java
(SUN) et comportent de multiples bogues . Finalement, les bibliothèques SVG pour Java
qui ont été testées n'implémentent pas correctement le support de cette norme. L'utilisation
du C# comme langage hôte a ensuite été envisagée, mais nous nous sommes aussi heurtés au
problème de l'inexistence de bibliothèques SVG appropriées.
Nous avons ensuite étudié les technologies proposées par le concepteur de logiciels ESRI.
Ces produits ne sont pas libres, toutefois la grande majorité des cantons suisses dont Genève,
possèdent une licence pour ceux-ci, ce qui nous a permis d'envisager une implémentation
de FauneTracker avec leur aide. Après une étude détaillée des produits ArcPad et ArcPad
Application Builder, nous avons constaté que si ceux-ci permettent de répondre d'un point de
vue technique au cahier des charges, ils ne permettent pas d'orir à l'utilisateur une interface
homme-machine possédant la simplicité requise. C'est pourquoi nous nous sommes penchés
sur le SDK ArcGIS Mobile pour la technologie .NET. Ce produit fait partie d'ArcGIS Server
et fournit de nombreux outils permettant de développer une application interagissant avec
des données géographiques. Après une phase de tests, il s'est avéré que ce SDK répondait
parfaitement à nos besoins.
63
CHAPITRE 11. CONCLUSION 64
Puisque l'implémentation en SVG n'était pas faisable et que ArcPad ne permettait pas
d'obtenir une interface répondant de manière optimale au cahier des charges, nous avons choisi
d'implémenter le projet à l'aide du SDK ArcGIS Mobile, même si celui-ci demande un temps
de développement plus conséquent qu'ArcPad. La première étape de cette implémentation a
commencé par l'installation logicielle et réseau de diérents serveurs et clients, dans le but
de posséder un environnement semblable à celui qui serait utilisé en production. Nous avons
ensuite créé la base de données nécessaire à l'application. Le développement de la suite de
logiciels FauneTracker a nalement pu commencer. Cette suite est constituée de trois appli-
cations :
1. FauneTracker - PDA, dont la vocation est de fournir aux gardes-faune un moyen de
saisir leurs observations faunistiques sur un PDA. Pour cela, cette application permet
de naviguer et de se positionner sur une carte via un module GPS, d'eectuer des
requêtes pour consulter d'anciennes observations et d'eectuer une synchronisation avec
un serveur, à travers une connexion internet. Tout ceci en mettant un accent particulier
sur la réalisation d'une interface homme-machine très simple, an que l'application puisse
être utilisée sur le terrain et qu'elle laisse le moins de place possible à des erreurs de
saisies.
2. FauneTracker - Conguration ore la possibilité à un responsable de service de dé-
nir la mission de ses gardes-faune et de personnaliser les éléments des menus qui seront
achés dans FauneTracker - PDA. Ce logiciel permet, de plus, d'éditer les éléments
contenus dans la base de données.
3. FauneTracker - Desktop permet à tout utilisateur de consulter depuis un poste de
bureaux les observations saisies par les gardes-faune. Ce programme permet aussi aux
gardes-faune et responsables de service disposant de privilèges, d'éditer les saisies eec-
tuées selon une certaine politique de gestion des droits.
Ce travail de diplôme a permis de remplir tous les points du cahier des charges. Il est
même allé plus loin, dans la mesure où l'application développée, qui devait rester au stade de
prototype, est complète et comporte des fonctions qui n'étaient initialement pas demandées.
Dès lors, nous pouvons considérer que le travail a été achevé avec succès.
Il faut de plus noter que le projet a été suivi par les collaborateurs de l'École d'ingénieurs
de Lullier qui souhaitent dans le futur mettre ce logiciel à la disposition des gardes-faune.
Après avoir permis de cibler les besoins des gardes, ces personnes ont pu intervenir plusieurs
fois lors du développement et émettre des critiques constructives an d'orienter celui-ci ou de
remettre en cause le fonctionnement de certains outils. Elles ont aussi proposé, au fur et à
mesure, diverses nouvelles fonctionnalités. C'est pourquoi le projet répond de façon optimale
à leurs besoins. Bien entendu, comme les mandants du projets ne sont pas eux-mêmes gardes-
faune et qu'il n'a pas été possible de rencontrer ceux-ci, certaines fonctions peuvent ne pas être
tout à fait adaptées à leurs besoins pratiques. Cependant, dans le souci d'orir la possibilité
de développer une application nale, les classes des applications ont été organisées de façons à
ce que l'adjonction de nouvelles fonctionnalités ou la rectication de certains comportements
du programme puissent être réalisés facilement. Ceci a pu être réalisé grâce à l'utilisation de
plusieurs motifs de conceptions (design patterns ). De plus, de multiples exemples de codes
représentants les fonctionnalités clés du projet ont été expliqués, détaillés et commentés au
sein de ce mémoire.
Bibliographie
[DEB07] Laurent DEBRAUWER. Design Patterns, les 23 modèles de conception. 2007.
[NEG+ 08] Nagel, Evjen, Glynn, Watson, and Skinner. Professional C# 2008. Wiley, 2008.
[WIK] Encyclopédie internet libre wikipedia. http://www.wikipedia.com.
65