73

Recensement de La Faune Avec PDA ( .AXF d'Arcpad

Embed Size (px)

Citation preview

Page 1: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

Recensement de la faune àl'aide d'un PDA

Mémoire de diplôme en informatique Aurélien Poscia

Laboratoire de didactique informatique

Page 2: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

c© Laboratoire de didactique informatique 27 novembre 2008

Page 3: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

Table des matières

1 Introduction 1

1.1 Contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Organisation du mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2 Capture des besoins 3

2.1 Préambule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2 Identi�cation des acteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.2.1 Responsable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2.2 Observateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.2.3 Interrogateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.2.4 Combinaisons des rôles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.3 Entités de l'application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.3.1 FauneTracker - PDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.3.2 FauneTracker - Con�guration . . . . . . . . . . . . . . . . . . . . . . . . 52.3.3 FauneTracker - Desktop . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.4 Données à saisir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3 SVG et Java pour une plate-forme mobile 7

3.1 Préambule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.2 Normes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.3 Dé�nitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.3.1 Motivations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.3.2 Java 2 Micro Edition (J2ME) . . . . . . . . . . . . . . . . . . . . . . . . 93.3.3 Con�guration J2ME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.3.4 Pro�l J2ME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.3.5 Connected Device Con�guration(CDC) . . . . . . . . . . . . . . . . . . . 103.3.6 Connected Limited Device Con�guration (CLDC) . . . . . . . . . . . . . 103.3.7 Mobile Information Device Pro�le (MIDP) . . . . . . . . . . . . . . . . . 10

3.4 SVG sur PDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.4.1 Langage hôte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.4.2 Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.4.3 C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.5 SVG sur téléphone mobile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.6 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

i

Page 4: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

TABLE DES MATIÈRES ii

4 Produits ESRI 14

4.1 Préambule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144.2 Bureautique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144.3 Nomade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154.4 Serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

5 ArcPad et ArcPad Application Builder 17

5.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175.2 Fichier de con�guration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175.3 Fichier de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

5.3.1 Contenu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205.3.2 Formulaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215.3.3 Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

5.4 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

6 Préparation de l'implémentation 23

6.1 Préambule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236.2 Environnement de développement et de tests . . . . . . . . . . . . . . . . . . . 23

6.2.1 Con�guration réseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236.2.2 Con�guration logicielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

6.3 Structures de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256.3.1 Schéma de base de données . . . . . . . . . . . . . . . . . . . . . . . . . 256.3.2 Schéma pour implémentation sur le PDA . . . . . . . . . . . . . . . . . 266.3.3 Pictogrammes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266.3.4 Carte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

7 FauneTracker - Con�guration 28

7.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287.2 Fichier de mission . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

7.2.1 Rôles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297.2.2 Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297.2.3 Génération . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

7.3 Authenti�cation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307.4 Accès base de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307.5 Organisation des composants graphiques . . . . . . . . . . . . . . . . . . . . . . 32

7.5.1 Organisation hiérarchique . . . . . . . . . . . . . . . . . . . . . . . . . . 327.5.2 Motif de conception template method . . . . . . . . . . . . . . . . . . . 33

8 FauneTracker - PDA 36

8.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368.2 A�chage et navigation sur une carte . . . . . . . . . . . . . . . . . . . . . . . . 378.3 Lecture du �chier de mission . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388.4 Navigation GPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408.5 Authenti�cation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418.6 Synchronisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428.7 Saisie d'une observation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

8.7.1 Ajout de données sur la carte . . . . . . . . . . . . . . . . . . . . . . . . 44

Page 5: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

TABLE DES MATIÈRES iii

8.7.2 Collecte des informations . . . . . . . . . . . . . . . . . . . . . . . . . . 468.8 Filtrage des informations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488.9 Hiérarchie des composants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

9 FauneTracker - Desktop 52

9.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529.2 Gestion des droits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529.3 Informations sur une observation . . . . . . . . . . . . . . . . . . . . . . . . . . 539.4 Édition d'une observation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

9.4.1 Géographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549.4.2 Attributs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

10 Déploiement 59

10.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5910.2 Déploiement de FauneTracker pour PC . . . . . . . . . . . . . . . . . . . . . . . 5910.3 Déploiement de FauneTracker - PDA . . . . . . . . . . . . . . . . . . . . . . . . 59

10.3.1 Génération d'un cache de cartes . . . . . . . . . . . . . . . . . . . . . . . 5910.3.2 Génération d'un �chier cab . . . . . . . . . . . . . . . . . . . . . . . . . 6010.3.3 Installateur Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

11 Conclusion 63

Bibliographie 65

A Liens utiles 66

B Codes sources 67

B.1 Organisation des paquetages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67B.2 Code source de FauneTracker - Con�guration . . . . . . . . . . . . . . . . . . . 68

B.2.1 FauneTracker - Con�guration - Activites . . . . . . . . . . . . . . . . . . 84B.2.2 FauneTracker - Con�guration - Classes . . . . . . . . . . . . . . . . . . . 96B.2.3 FauneTracker - Con�guration - Especes . . . . . . . . . . . . . . . . . . 108B.2.4 FauneTracker - Con�guration - XML . . . . . . . . . . . . . . . . . . . . 123

B.3 Code source de FauneTracker - PDA . . . . . . . . . . . . . . . . . . . . . . . . 130B.3.1 FauneTracker - PDA - Authenti�cation . . . . . . . . . . . . . . . . . . . 152B.3.2 FauneTracker - PDA - MachinesEtats . . . . . . . . . . . . . . . . . . . 155B.3.3 FauneTracker - PDA - MachinesEtats - Etats . . . . . . . . . . . . . . . 171

B.4 Code source de FauneTracker - Desktop . . . . . . . . . . . . . . . . . . . . . . 191B.5 Code source de FauneTracker - Commun . . . . . . . . . . . . . . . . . . . . . . 212B.6 Code source de FauneTracker - Communs - Windows . . . . . . . . . . . . . . . 213

Page 6: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

Table des �gures

2.1 Diagramme des cas d'utilisations de l'application. . . . . . . . . . . . . . . . . . 4

3.1 Di�érences entre un format matriciel et vectoriel. . . . . . . . . . . . . . . . . . 73.2 Dessin SVG, correspondant au code du listing 3.1. . . . . . . . . . . . . . . . . 83.3 Empilement J2ME/J2SE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.4 Exemple de �ux pour un Midlet. . . . . . . . . . . . . . . . . . . . . . . . . . . 11

4.1 Gamme ArcGIS (source : ESRI). . . . . . . . . . . . . . . . . . . . . . . . . . . 15

5.1 Synchronisation des données depuis ArcPad jusqu'au serveur. . . . . . . . . . . 175.2 Con�guration par défaut d'ArcPad (gauche) et personnalisée (droite). . . . . . 185.3 Exemple de formulaire d'ajout, avec aide à la saisie et guidage étape par étape. 20

6.1 Réseau mis en place. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246.2 Schéma UML théorique de la base de données. . . . . . . . . . . . . . . . . . . 256.3 Schéma UML de la base de données créée. . . . . . . . . . . . . . . . . . . . . . 266.4 Carte créée pour l'application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

7.1 Interface graphique de FauneTracker - Con�guration. . . . . . . . . . . . . . . . 287.2 Décomposition graphique des composants du GUI. . . . . . . . . . . . . . . . . 327.3 Composants du GUI, structure de classes. . . . . . . . . . . . . . . . . . . . . . 337.4 Implémentation du design pattern Template Method. . . . . . . . . . . . . . . . 347.5 Diagramme de classes simpli�é de FauneTracker - Con�guration. . . . . . . . . 35

8.1 FauneTracker PDA, a�chage de la carte (gauche) et saisie de l'espèce (droite). 368.2 Principe de fonctionnement de l'authenti�cation. . . . . . . . . . . . . . . . . . 418.3 Machine à états de la saisie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468.4 Machine à états de la création d'un �ltre. . . . . . . . . . . . . . . . . . . . . . 488.5 Diagramme de classes du motif de conception état. . . . . . . . . . . . . . . . . 498.6 Diagramme de classes simpli�é de FauneTracker - PDA. . . . . . . . . . . . . . 51

9.1 Interface graphique de FauneTracker Desktop. . . . . . . . . . . . . . . . . . . . 539.2 Formulaire d'édition des attributs d'une observation. . . . . . . . . . . . . . . . 569.3 Diagramme de classes simpli�é de FauneTracker - Desktop. . . . . . . . . . . . 58

10.1 Génération du cache de carte et synchronisation. . . . . . . . . . . . . . . . . . 6010.2 Création du �chier d'installation CAB. . . . . . . . . . . . . . . . . . . . . . . . 6010.3 Fonctionnement de l'installateur Windows. . . . . . . . . . . . . . . . . . . . . . 62

iv

Page 7: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

Listings

3.1 Exemple de code source SVG. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85.1 Exemple de �chier de con�guration. . . . . . . . . . . . . . . . . . . . . . . . . 195.2 Création et exécution du �ltre sur les animaux. . . . . . . . . . . . . . . . . . . 217.1 Exemple de �chier de mission. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297.2 Exemple d'accès à la base de données. . . . . . . . . . . . . . . . . . . . . . . . 307.3 Création d'un objet connexion. . . . . . . . . . . . . . . . . . . . . . . . . . . . 328.1 Méthode d'ouverture du service mobile. . . . . . . . . . . . . . . . . . . . . . . 378.2 Création de l'outil de zoom en avant. . . . . . . . . . . . . . . . . . . . . . . . . 388.3 Exemple d'a�ectation d'un outils à la carte. . . . . . . . . . . . . . . . . . . . . 388.4 Lecture du �chier de mission (implémentation du motif de conception singleton). 398.5 Con�guration et connexion du GPS. . . . . . . . . . . . . . . . . . . . . . . . . 408.6 Génération d'un condensé md5. . . . . . . . . . . . . . . . . . . . . . . . . . . . 428.7 Synchronisation des données. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438.8 Véri�cation du bon déroulement de la synchronisation. . . . . . . . . . . . . . . 438.9 Préparation de l'édition de la couche. . . . . . . . . . . . . . . . . . . . . . . . . 448.10 Validation du dessin et lancement du processus de saisie. . . . . . . . . . . . . . 458.11 Interface IEtats. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478.12 Méthode suivant(), dé�nie par l'interface IEtats. . . . . . . . . . . . . . . . . . 478.13 Illustration du design pattern template method. . . . . . . . . . . . . . . . . . . 509.1 Méthode selectionAction_StatusChanged de FrmMain. . . . . . . . . . . . . . . . 549.2 Méthode choisirOutil() de FrmMain. . . . . . . . . . . . . . . . . . . . . . . . . . 559.3 Méthode pour enregistrer les modi�cations (enregistrerModi�cation_click). . . . 5610.1 Code du �chier de con�guration ini. . . . . . . . . . . . . . . . . . . . . . . . . 6110.2 Lancement du gestionnaire d'applications Windows Mobile. . . . . . . . . . . . 61

v

Page 8: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

Avant-propos

Conventions typographiques

Dans un souci de clarté ainsi que pour simpli�er la tâche du lecteur, plusieurs conventionstypographiques 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 unetaille de caractère de 11 points ;

� les identi�cateurs 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'identi�cateurs ainsi que les mots anglais sont écrits en italique ;� en�n, 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 VisualStudio. Les légendes des images �gurent au-dessus de celles-ci alors que les captions des piècesde codes sont situées en-dessous des extraits de codes. Les référence internes, sont indiquéesen 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éesde scolarité à l'École d'ingénieurs de Genève et qui m'ont permis d'arriver jusqu'ici. Parmiceux-ci, je remercie particulièrement M. Lazeyras, mon professeur de diplôme, pour ses conseilsavisé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 deLullier, 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 constructiveset de nouvelles idées pour celui-ci.

Merci à ma famille d'avoir relu avec attention ce mémoire, de m'avoir encouragé tout aulong 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, pourla bonne humeur qu'ils ont gardée tout au long de ce travail de diplôme, même durant lesmoments les plus stressants. Je les remercie également pour les conseils qu'ils m'ont donnéspour la rédaction de ce mémoire. Finalement, merci Red BullTM de m'avoir tenu éveillé durantces longues mais néanmoins passionnantes journées et nuits de travail.

vi

Page 9: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

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. Celaconduit inévitablement à une grande di�culté de compilation de ces informations et les étudessur 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 êtreperdues. C'est pourquoi l'École d'ingénieurs de Lullier (EIL) recherche aujourd'hui un moyentechnique permettant d'uni�er et simpli�er au maximum les saisies d'observations faunistiques.

Dans ce but, elle souhaite que les gardes-faune puissent disposer d'un terminal mobileleur permettant de recenser très précisément la position géographique de chacun des animauxobservés et ceci directement sur le terrain. Les gardes doivent avoir la possibilité de saisir uneposition �xe, ou le trajet e�ectué par le groupe d'animaux. Ils doivent de plus pouvoir indiquerpour chacun des sexes ainsi que pour di�érentes tranches d'âges, le nombre d'animaux observéslors de la saisie. D'autres informations, telles que l'espèce, l'activité ou un commentaire surl'observation doivent aussi pouvoir être entrés dans le système. L'école de Lullier désire, deplus, que les gardes-faune aient la possibilité d'e�ectuer un �ltrage des données et consultercelles-ci sur le terrain. Ils pourraient, par exemple, vouloir a�cher sur la carte uniquement lesrenards 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. Unefois 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 del'ensemble de la Suisse de publier leurs observations a�n d'en faire pro�ter l'ensemble de leurscollègues, les chercheurs et éventuellement le grand publique. Ces derniers doivent avoir lapossibilité de visualiser les observations sur une application pour ordinateur de bureau. Desdéveloppements futurs pourront être réalisés, a�n de traiter les données et d'e�ectuer desétudes sur celles-ci.

1

Page 10: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 1. INTRODUCTION 2

1.2 Organisation du mémoire

� Le chapitre 2 est dédié à la capture des besoins de l'application. Il permet de détaillerle cahier des charges en identi�ant les divers acteurs du programme ainsi que le rôle quileur est attribué. Il présente les di�érentes entités du logiciel, et �nalement les donnéesque celui-ci doit permettre de recenser.

� Le chapitre 3 introduit rapidement la norme SVG ainsi que ses diverses variantes. Ildécrit ensuite la faisabilité d'une implémentation de FauneTracker, avec des données enSVG, sur un PDA. Ceci à l'aide des langages Java et C#. Il considère la possibilité d'uneimplémentation sur téléphone portable et fait �nalement une synthèse des di�érentsrésultats obtenus.

� Le chapitre 4 est consacré à la description succincte des di�érents produits de la gammed'ESRI, a�n que le lecteur puisse mieux comprendre l'intérêt de chacun de ceux-ci dansles chapitres ultérieurs.

� Le chapitre 5 présente ArcPad et ArcPad Application Builder ainsi que leur fonc-tionnement. Il contient notamment des exemples de �chiers de con�guration ainsi quede scripts pour ces logiciels. Il explique �nalement pourquoi ces logiciels n'ont pas étéretenus dans le cadre du projet.

� Le chapitre 6 est dédié à la phase de préparation du développement pour travaillerà l'aide du SDK d'ArcGIS Mobile. Il détaille la con�guration réseau et logicielle desdi�érents clients et serveurs. Il présente également le schéma de base de données enlien avec le cahier des charges, la structure de données retenue ainsi que les couchessélectionnées pour la création d'une carte.

� Les chapitres 7, 8 et 9 couvrent respectivement le développement de FauneTracker -Con�guration, FauneTracker - PDA et FauneTracker - Desktop. Après avoir introduitsle fonctionnement des logiciels, ces chapitres présentent les problématiques spéci�quesrencontrées lors du développement de ceux-ci et comment elles ont été résolues. A�nd'aider le lecteur à comprendre la manière dont l'implémentation a été réalisée, plusieursportions de codes ainsi que quelques-uns des motifs de conceptions (design patterns)utilisés sont présentés.

� Le chapitre 10 explique de quelle manière les �chiers de déploiement ont été créés etcomment ceux-ci fonctionnent.

� En�n, le chapitre 11 conclut ce mémoire en faisant une synthèse du travail réalisé.

Page 11: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

Chapitre 2

Capture des besoins

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 etdoit permettre aux gardes-faune d'e�ectuer des saisies d'observations faunistiques directementsur le terrain. FauneTracker - Desktop donne quant à elle la possibilité de visualiser les obser-vations e�ectuées et d'éditer celles-ci, sur un ordinateur de bureau. Finalement, FauneTracker- Con�guration sert à dé�nir les éléments qui peuvent être choisis par les gardes-faune lors dessaisies ainsi qu'à préparer les missions qu'ils devront e�ectuer.

Ce chapitre énonce les outils qui seront proposés par les di�érents logiciels de l'applicationde 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éso�ertes par les di�érents modules de l'application.

2.2 Identi�cation des acteurs

2.2.1 Responsable

Cet acteur est chargé de dé�nir les missions des observateurs. Pour cela il a à sa dispositionle logiciel FauneTracker - Con�guration qui permet de consulter, ajouter, supprimer et modi�ersimplement et e�cacement des données sur les tables du serveur de base de données. Unresponsable peut, par exemple, ajouter une espèce, l'icône correspondante et saisir les diversattributs liés à celle-ci.

À l'aide de ce logiciel, le responsable dé�nit la mission qu'il souhaite con�er à ses gardes-faune et sélectionne en fonction de celle-ci un sous-ensemble des classes, espèces et autresinformations de la base de données . Les observateurs n'auront donc à leur disposition queles données qui leur seront strictement utiles pour leur mission, ce qui simpli�era grandementleur tâche de saisie. Le responsable déclenche �nalement la génération d'un �chier de mission,à destination du logiciel de saisie embarqué sur les terminaux mobiles et constitué des donnéeschoisies.

Lorsqu'il utilise FauneTracker - Desktop, le responsable a aussi la possibilité d'éditer lesdonnées des saisies e�ectuées par les observateurs de son groupe.

3

Page 12: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 2. CAPTURE DES BESOINS 4

Figure 2.1 Diagramme des cas d'utilisations de l'application.

Faune Tracker

Responsable

FauneTracker – Configuration

Éditer les espèces,classes, etc.

Choisir les donnéespour la mission

Charger/Générerfichier de mission

Faune Tracker - PDA

ObservateurConsulter

carte/Naviguer

Saisir observation

Lire fichier deconfiguration

ChargementMission/Synchronisation

GPS

FauneTracker – Desktop

Consulter lesobservations

Consultercarte/Naviguer

Modification desobservations

Interrogateur

«extends»

«extends»

<<include>>

<<include>>

Accès BDD

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

2.2.2 Observateur

L'observateur dispose d'un PDA équipé de Faune Tracker - Saisie et de la carte liée à sa zoned'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 surdes observations précédemment e�ectué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 e�ectuant des recherches ou souhaitant seulement consul-ter les données. Il a à sa disposition le logiciel FauneTracker - Desktop qui lui permet devisualiser les observations et obtenir des informations sur celles-ci.

2.2.4 Combinaisons des rôles

Plusieurs rôles peuvent être conjugués par les acteurs. Un reponsable peut aussi être :� observateur ;� interrogateur.

Un observateur peut être :� interrogateur.

Page 13: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 2. CAPTURE DES BESOINS 5

2.3 Entités de l'application

2.3.1 FauneTracker - PDA

Ce logiciel est le module central de l'application. Il permet aux gardes-faune d'e�ectuer dessaisies d'observations faunistiques et de synchroniser celles-ci avec une base de donnée centrale,directement à partir d'un PDA. Cette synchronisation nécessite une connexion internet et este�ectuée à la demande des observateurs, puisque ceux-ci se trouvent principalement sur leterrain, dans des milieux où ils ne disposent pas de connexions. Toutes les données ajoutéesentre deux synchronisations par l'observateur sont donc stockées dans un cache sur le terminalmobile.

FauneTracker - PDA doit a�cher une carte à l'échelle 1/25000 sur laquelle le garde-faunepeut naviguer. Si celui-ci dispose d'un module GPS il a la possibilité de positionner la carteen permanence, sur son emplacement GPS. Le logiciel, en plus de permettre d'e�ectuer dessaisies, autorise la consultation d'informations sur des observations e�ectuées antérieurement.Il permet aussi d'e�ectuer des requêtes de �ltrage, a�n de n'a�cher que les observationsrépondant à certains critères sur la carte. En outre, a�n d'éviter tout con�it quant à l'auteurdes saisies, l'application ne peut fonctionner qu'une fois que l'observateur s'est authenti�é avecsuccès.

Un soin particulier doit être apporté lors de la conception de l'interface homme-machine(IHM) de ce logiciel. Celle-ci doit, en e�et, être la plus simple possible d'utilisation pourminimiser les erreurs de saisie possibles et être fonctionnelle sur le terrain. Ses di�érents menusseront personnalisables dynamiquement via le �chier de con�guration fourni par FauneTracker- Con�guration, en fonction de la mission dé�nie par le responsable. Pour chaque saisie ourequête, le garde-faune est guidé à travers des fenêtres se succédant et sur chacune desquellesil peut entrer diverses informations.

2.3.2 FauneTracker - Con�guration

Ce programme de con�guration est destiné aux responsables de groupes. À l'aide de celui-ciet après s'être authenti�és, ils peuvent sélectionner les classes, espèces et autres informationsprésentes dans la base de données, en fonction de la mission qu'ils souhaitent con�er à leursgardes respectifs. Le programme se charge ensuite de générer un �chier de mission au formatXML, comportant les données choisies. Il donne �nalement la possibilité à l'utilisateur, derecharger un ancien �chier de mission.

En plus de permettre la création d'un �chier de mission, ce programme sert à ajouter,supprimer ou modi�er très simplement les éléments contenus dans la base de données, tels queles classes, les activités, etc.

2.3.3 FauneTracker - Desktop

Cette application peut-être utilisée par tout un chacun dans le but de consulter la carteainsi que les diverses observations faunistiques e�ectuées. Si un observateur authenti�é commetel l'utilise, il a en plus la possibilité d'apporter des modi�cations à ses propres saisies (déplacerle point, changer l'espèce, etc.) dans le cas où il a commis une erreur ou s'il lui manquait unparamètre. Le responsable peut quant à lui, éditer les données de n'importe lequel des membresde son groupe d'observateurs.

Page 14: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 2. CAPTURE DES BESOINS 6

2.4 Données à saisir

Selon le cahier des charges fourni par les mandants du projet, les données indispensablessuivantes doivent pouvoir être saisies lors d'une observation e�ectuée par un garde-faune :

� coordonnées géographiques d'une observation d'un animal statique ;� coordonnées géographiques permettant d'illustrer le trajet du déplacement d'un animal,sous la forme de lignes-brisées ;

� nom de l'observateur ;� classe de l'espèce ;� espèce ;� e�ectif(s) par sexe(s) ;� e�ectif(s) par tranches d'age(s) (pontes-oeufs, juvénile, adulte) ;� saisie e�ectuée à l'aide d'un GPS ou non ;� activité (alimentation,repos,etc.) ;

Les informations suivantes pourront, éventuellement, être ajoutées par la suite :� type d'observation (capture,trace,etc.) ;� structure (talus,plaine,etc.) ;� environnement (site marécageux, zone forestières, etc.).

Page 15: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

Chapitre 3

SVG et Java pour une plate-forme

mobile

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. Ilpermet de représenter des objets graphiques et accéder à ceux-ci programmatiquement, decré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

Description de formesMatrice de pixels

Agrandissement10 X

SVG est un format de dessin vectoriel. Un tel format dé�nit des images par des objetsgé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 unematrice de pixel.

7

Page 16: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 3. SVG ET JAVA POUR UNE PLATE-FORME MOBILE 8

Figure 3.2 Dessin SVG, correspondant au code du listing 3.1.

L'avantage d'un format vectoriel réside dans le fait qu'il permet de changer la taille d'uneimage, pour une dimension quelconque sans pour autant obtenir un e�et de pixellisation ouescalier, contrairement à un format matriciel (voir la �gure 3.1). En contrepartie, lors dechaque visualisation du dessin, une nouvelle image doit être créée par l'ordinateur, ce qui estcoûteux en ressources.

Les spéci�cations de ce format sont ouvertes et ont été édictées par le World Wide WebConsortium 1 (W3C). SVG décrit les objets vectoriels à travers un �chier XML au sein duquelils sont organisés de façon hiérarchique.

<?xml ve r s i on=" 1 .0 "?><!DOCTYPE svg PUBLIC "−//W3C//DTD SVG 1.0//EN"

"http ://www.w3 . org /TR/2001/REC−SVG−20010904/DTD/svg10 . dtd"><svg xmlns="http ://www.w3 . org /2000/ svg">

5 <g id=" groupe_cerc l e s " s t y l e=" f i l l −opac i ty : 0 . 7 ; "><c i r c l e id=" cerc l e_rouge " cx=" 6 .5cm" cy="2cm" r="100" s t y l e=" f i l l : red ;

s t r oke : b lack ; s t roke−width : 0 . 1 cm" trans form=" t r a n s l a t e (0 , 50 ) " /><c i r c l e id=" cerc l e_jaune " cx=" 6 .5cm" cy="2cm" r="100" s t y l e=" f i l l : ye l low ;

s t r oke : b lack ; s t roke−width : 0 . 1 cm" trans form=" t r a n s l a t e (−70 ,150)"/>10 <c i r c l e id=" cerc l e_b leu " cx=" 6 .5cm" cy="2cm" r="100" s t y l e=" f i l l : b lue ;

s t r oke : b lack ; s t roke−width : 0 . 1 cm" trans form=" t r a n s l a t e (70 ,150) " /></g>

</svg>

Listing 3.1 � Exemple de code source SVG.

Dans le cadre d'une utilisation nomade, deux pro�ls mobiles ont été dé�nis par le W3C ;SVG Basic et SVG Tiny. Ces deux pro�ls consistent en un sous-ensemble de la norme SVG,pour les périphériques béné�ciant d'une puissance et mémoire limitée. SVG Tiny a été élaborépour les équipements disposant de très peu de ressources, comme les téléphones mobiles, alorsque SVG Basic a été créé pour les périphériques un peu plus puissants, par exemple les PDA.

1. http://www.w3.org

Page 17: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 3. SVG ET JAVA POUR UNE PLATE-FORME MOBILE 9

Figure 3.3 Empilement J2ME/J2SE.

JVM

CDC

Foundation

KVM

CLDC

MIDP

J2ME

Autres

J2SE

Librairies

supplémentaires

Machine

Virtuelle

Configuration

Profil

Librairies

EmpilementJ2SE

3.3 Dé�nitions

3.3.1 Motivations

Avant d'aller plus loin dans ce chapitre, il existe plusieurs notions et concepts spéci�quesaux applications Java mobiles qu'il est indispensable de comprendre. Celles-ci sont détailléesdans la suite de cette section. Le schéma 3.3 présente une synthèse de l'ensemble de ces notions.

3.3.2 Java 2 Micro Edition (J2ME)

J2ME est une spéci�cation contenant un sous-ensemble des éléments de Java StandardEdition (JSE). Cette spéci�cation a été conçue pour les applications devant s'exécuter sur desterminaux mobiles, avec des ressources limitées. Elle est constituée d'un framework compre-nant les éléments suivants :

� une Kilobyte Virtual Machine (KVM) ou alors une Java Virtual Machine (JVM), per-mettant l'exécution d'une application Java sur le périphérique ;

� une con�guration J2ME ;� un pro�l J2ME.

3.3.3 Con�guration J2ME

Une con�guration J2ME est une spéci�cation qui dé�nit un ensemble de classes de bas-niveau devant être implémentée sur les machines virtuelles l'utilisant. Elle spéci�e en outreles performances et la mémoire minimale du périphérique qui l'utilise. La con�guration per-met d'avoir une base commune sur l'ensemble des périphériques qui l'implémente. Ainsi undéveloppement qui utilise uniquement les classes spéci�ées par une con�guration donnée, doitfonctionner sur n'importe quel terminal utilisant celle-ci.

Page 18: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 3. SVG ET JAVA POUR UNE PLATE-FORME MOBILE 10

3.3.4 Pro�l J2ME

Un pro�l J2ME est un ensemble de classes spéci�ques qui étendent la con�guration d'unappareil. Il peut par exemple s'agir d'un mécanisme d'entrées/sorties, d'une interface utili-sateur, de la gestion des connexions, etc. Plusieurs pro�ls peuvent être implémentés par unmême terminal.

Un pro�l permet de dé�nir deux API distinctes.

1. L'API de bas niveau, qui contient toutes les classes de bases, donne l'accès aux évène-ments liés au clavier, à l'écran ou autre fonction de bas-niveau et favorise la portabilitéde l'application.

2. L'API de haut niveau, qui dé�nit l'interface utilisateur, la façon de saisir les données,etc. Cette API sera réalisée en fonction des possibilités de saisie et a�chage du terminalet n'est donc pas prévue pour être générique.

Le développeur devra, au �nal, faire un compromis entre portabilité de son code et ergo-nomie de son application a�n d'exploiter au maximum les capacités du périphérique cible.

3.3.5 Connected Device Con�guration(CDC)

CDC est une con�guration pour J2ME qui est conçue pour les terminaux possédant desressources limitées par rapport à un pc standard, tel que les PDA et s'exécute sur une JVM.

3.3.6 Connected Limited Device Con�guration (CLDC)

CLDC est une con�guration pour J2ME, à destination des ressources très limitées, commeles téléphones mobiles ou les pagers.

3.3.7 Mobile Information Device Pro�le (MIDP)

MIDP est un pro�l pour CLDC implémenté par la plupart des téléphones mobiles récents.Celui-ci dé�nit l'interface graphique, le cycle de vie de l'application, les di�érentes connexionsainsi que le stockage persistant.

Les applications créées avec MIDP sont appelées Midlets, elles héritent de la classe abstraitejavax.microedition.midlet.Midlet qui permet de communiquer avec le téléphone depuisl'application. En outre, cette classe abstraite dé�nit des méthodes à implémenter pour gérerle cycle de vie de l'application (création, pause, reprise, �n). Elle permet aussi de dé�nir lesenchainements entre les di�érents écrans (le �ux du programme).

Page 19: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 3. SVG ET JAVA POUR UNE PLATE-FORME MOBILE 11

Figure 3.4 Exemple de �ux pour un Midlet.

3.4 SVG sur PDA

3.4.1 Langage hôte

Le SVG permet un rendu graphique. Dans le cadre de notre projet, il est envisagé del'utiliser pour a�cher des cartes ainsi que diverses informations. Mais il faut impérativement unlangage hôte pour créer l'application elle-même. Ce langage doit comporter des bibliothèquespermettant d'a�cher et de modi�er du SVG correctement et doit fonctionner sur un PDA.

3.4.2 Java

Pour commencer, le langage de programmation Java a été étudié en vue de l'utiliser commelangage hôte. Nous savons que sur un ordinateur fonctionnant avec un système d'exploitationconventionnel comme Linux, Windows ou Mac OS, le Java permet de développer des applica-tions a�chant des dessins en SVG et interagissant avec ceux-ci. Cela est réalisé à l'aide d'unebibliothèque graphique telle que Batik. Le langage Java nécessite une machine virtuelle pourexé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 virtuellesJava 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 obtenusavec di�érentes machines virtuelles Java. A�n de tester celles-ci, deux librairie permettantd'a�cher et modi�er du SVG à partir d'une application Java ont été sélectionnées.

� Batik SVG Toolkit 2, librairie gratuite développée par Apache et supportant la spéci-�cation complète du SVG, conçue originalement pour être utilisée sur une plate-formeJ2SE.

� TinyLine 3 alternative payante supportant la norme Tiny SVG et nécessitant une plate-forme J2SE ou J2ME pour s'exécuter.

2. http://xmlgraphics.apache.org/batik/

3. http://www.tinyline.com

Page 20: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 3. SVG ET JAVA POUR UNE PLATE-FORME MOBILE 12

Mysaifu 4 est une machine virtuelle permettant d'exécuter du code J2SE, sur WindowsMobile 2003. Après installation de celle-ci, il s'avère que des programmes Java relativementpeu complexes s'exécutent correctement sur le PDA, avec toutefois une latence importante.Cependant, il n'est pas possible d'a�cher du SVG avec cette machine virtuelle, aussi bien avecla bibliothèque Batik que TinyLine.

CrEme 5 est une autre machine virtuelle pour Windows Mobile, développée par NSIcom.Celle-ci implémente la spéci�cation 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'a�chage de SVG avec la bibliothèque Batik ne fonctionne pas. En revanche il estpossible d'a�cher des dessins au format SVG dans un programme Java, à l'aide de la bi-bliothèque TinyLine. Cependant l'a�chage n'est pas totalement exact (position des élémentserronée) et il est impossible d'a�cher du texte en SVG.

SuperWaba 6 s'est installé correctement sur le terminal de test, cependant il n'a pasété possible avec cette machine virtuelle qui fonctionne sous Windows Mobile, d'exécuter unprogramme 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'a�cher du SVG avec un rendu satisfaisant. De plus, les programmesexécutés sur ces machines virtuelles, sou�rent de latences élevées di�cilement acceptables pourl'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 uneversion gratuite existe pour Windows Mobile. la possibilité d'utiliser le C# comme langagehô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 .NETFramework qui est utilisé pour développer des applications à destination d'un environnementWindows standard.

Aucune librairie SVG n'est fournie avec le framework .NET. Des bibliothèques de classesont 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 relativementavancé. 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 correctementet complètement les di�érentes normes de SVG et ne sont pas utilisables dans le cadre denotre 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

Page 21: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 3. SVG ET JAVA POUR UNE PLATE-FORME MOBILE 13

3.5 SVG sur téléphone mobile

La plupart des téléphones mobiles récents supportent une implémentation de la normeTiny SVG et disposent d'une machine virtuelle Java très simpli�ée. Les essais ont été e�ectuéssur un Sony Ericsson W910i, équipé de la Sony Ericson Java Platform dans sa version 8.Le développement a, quant à lui, été réalisé à l'aide du Sony Ericsson SDK 2.5.0.2 for theJava(TM) ME Platform.

La prise en main de la plate-forme Java pour le téléphone s'est montrée relativementcomplexe. Après diverses expérimentations, il s'est avéré que le support de Tiny SVG estprévu pour dessiner les menus ainsi que les "splash screens" ou autres, plutôt que pour uneimplémentation comme moteur de rendu d'une application. De plus, le support de la normes'avère à nouveau hasardeux. Il existe par exemple des problèmes pour l'a�chage de texte.

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 lafaisabilité 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 quiserait la mieux adaptée pour un PDA. Cependant, si plusieurs implémentations de SVG ouSVG Tiny telles que lecteurs, bibliothèques et applications existent, les implémentations deSVG Basic sont très rares que ce soit pour un ordinateur de bureau, un PDA ou un téléphonemobile. Nous ne nous sommes donc pas limités à l'étude des solutions pour SVG Basic, maisnous avons testé des solutions pour les di�érentes normes.

L'analyse a malheureusement montré que pour un PDA et avec le langage Java ainsi queles di�érentes machines virtuelles gratuites pour Pocket PC, il n'est pas possible d'a�cher duSVG conformément à la norme. Ces machines virtuelles ne sont de surcroit pas certi�ées parSUN, l'éditeur de Java. Le support du Java n'est donc pas exact et plusieurs bugs et plantagessont apparus lors de l'exécution de programmes Java. Il faut aussi souligner que les problèmesde lenteurs des applications sont rédhibitoires. Finalement, le déploiement et l'exécution d'unprogramme sur ces machines demande de nombreuses opérations et n'est pas forcément à laportée d'un utilisateur lambda. Avec le langage C#, les bibliothèques ne sont pas au point etne permettent pas un a�chage 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'avantaged'être très répandus, ils ne sont pas l'équipement le plus approprié en termes d'interfacehomme-machine pour une application comme la notre. En e�et, les téléphones mobiles ne sonten 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'envisagerune implémentation de FauneTracker avec des cartes au format SVG, que l'application soitdéveloppée avec le langage hôte C# ou Java et qu'elle soit à destination des PDA ou destéléphones mobile.

Page 22: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

Chapitre 4

Produits ESRI

4.1 Préambule

Environmental Systems Research Institute, Inc. 1 (ESRI) est une société informatique ac-tive dans le domaine des systèmes d'information géographique (SIG). Elle détient d'ailleurs laplus 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 decartographie à 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 pources 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èslarge. A�n que le lecteur comprenne mieux le rôle des di�érents produits d'ESRI dans leschapitres ultérieurs, une brève description des applications présentant un intérêt pour notretravail, 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 centralde la gamme. Celui-ci est notamment constitué des deux logiciels suivants :

1. ArcCatalog, dont l'interface ressemble beaucoup à l'explorateur de Windows et permetde réaliser les opérations suivantes :� naviguer et trouver sur l'ordinateur ou sur des serveurs distants, des informationsgéographiques ;

� dé�nir, créer, exporter et importer des modèles de bases de données géographiques ;� créer, modi�er 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

Page 23: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 4. PRODUITS ESRI 15

Figure 4.1 Gamme ArcGIS (source : ESRI).

4.3 Nomade

ArcPad permet de saisir, visualiser ou éditer des informations géographiques directementsur le terrain, à l'aide de périphériques mobiles comme les PDA ou les tablettes PC. Celogiciel gère aussi les appareils photo numériques, certains récepteurs GPS ainsi que diversautres équipements. Il est conçu pour les périphériques non-connectés. Il est donc nécessairede passer par un ordinateur �xe disposant d'ArcGIS Desktop, a�n de synchroniser les donnéesdu périphérique et du serveur. Une analyse plus détaillées de ce produit est réalisée au seindu chapitre 5.

ArcPad Application Builder est une application qui permet de personnaliser ArcPad àtravers un outil de con�guration ainsi que de scripts qui peuvent être écrits à l'aide des langagesVBScript ou JavaScript. Il permet aussi de d'éditer des formulaires ainsi que la manière dontl'utilisateur pourra saisir des informations.

ArcGIS Mobile permet quant à lui de développer une application SIG légère pour despériphériques nomades à l'aide d'un kit de développement logiciel (SDK) pour Microsoft .NET.Ce SDK fournit des composants permettant notamment

� d'a�cher une carte et de naviguer sur celle-ci ;� de mettre à jour le SIG ;� d'o�rir un support du GPS.

Page 24: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 4. PRODUITS ESRI 16

ArcGIS Mobile possède de plus le grand avantage de pouvoir se synchroniser directementavec un serveur, sans passer par un poste de travail intermédiaire. Il fonctionne en mode semi-connecté, cela signi�e que lorsqu'une connexion entre le serveur et le périphérique est établie,les données peuvent être mises à jour en temps-réél. Dans le cas contraire les données modi�éesou créées sont stockées dans le cache de l'application cliente, jusqu'à ce qu'une connexionsoit à nouveau établie avec le serveur pour synchroniser les données. ArcGIS Mobile est uncomposant d'ArcGIS Server.

4.4 Serveur

ArcGIS Server permet de rendre facilement disponible à de multiples clients, des donnéesgéographiques mises en forme avec ArcGIS Desktop. Avec ArcGIS Server, il est possible decréer des applications web pour l'accès aux données et de faire de la modélisation avancéepour l'analyse spatiale. Il permet aussi de gérer la réplication et la distribution des donnéessur de multiples serveurs. ArcGIS Server possède une console d'administration web mais peutaussi ê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.).

Page 25: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

Chapitre 5

ArcPad et ArcPad Application Builder

5.1 Description

ArcPad est un logiciel conçu pour fonctionner sur des dispositifs nomades à dispositiondes agents de terrains, a�n de leur permettre de saisir et consulter des données sur des cartes(cf. 4.3).

Ce logiciel fonctionne en mode non-connecté, cela signi�e que toutes les cartes que l'agentde terrain consulte ainsi que toutes les données qu'il saisit sont stockées directement sur lepériphérique. La synchronisation s'e�ectue quand l'agent établit une connexion entre ArcPadet 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 Builderpermet 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 del'application FauneTracker, une analyse détaillée de ceux-ci est e�ectuée au sein de ce chapitre.La version du programme utilisée, est la 7.1.1.

5.2 Fichier de con�guration

ArcPad présente par défaut à l'utilisateur, un certain jeux d'outils et de composants. Depart sa nature générique, cette con�guration n'est pas du tout adaptée à une applicationspéci�que.

Figure 5.1 Synchronisation des données depuis ArcPad jusqu'au serveur.

ArcPad ArcGIS Server

Agent de terrain

ArcMap ArcCatalog

17

Page 26: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 5. ARCPAD ET ARCPAD APPLICATION BUILDER 18

Figure 5.2 Con�guration par défaut d'ArcPad (gauche) et personnalisée (droite).

À l'aide d'ArcPad Application Builder, la possibilité de con�gurer en détails les di�érentsoutils qui seront proposés à l'utilisateur est fournie. L'utilisateur peut, en outre, créer denouveaux outils ainsi que des nouvelles fonctionnalités en développant des scripts.

L'image 5.2 montre sur le PDA de droite, un exemple de con�guration personnalisée etplus adaptée aux besoins de l'application. Les barres d'outils ont totalement été personnalisées.Celles-ci contiennent notamment des boutons pour ajouter ou �ltrer les animaux, pour centrerla carte à partir des informations GPS et activer celui-ci ainsi que des commandes de zoom etde déplacement. Certains de ces boutons, comme ceux qui permettent de se déplacer dans lacarte ou redimensionner celle-ci, sont des composants préprogrammés d'ArcPad ApplicationBuilder qui peuvent être a�chés dans ArcPad si ceux-ci présentent une utilité. En revanche,les composants tels que ceux qui permettent d'ajouter ou �ltrer des données (observations),sont des outils personnalisés dont le comportement est dé�ni par des scripts rédigés par nossoins.

Les �chiers de con�guration pour ArcPad, sont en fait de simples �chiers XML qui portentl'extension APX. Le �chier de con�guration qui est chargé lorsque ArcPad est lancé, doit êtreplacé dans le sous-répertoire System de ArcPad sur le terminal mobile. Le listing de la pagesuivante (5.1), présente un exemple de �chier de con�guration.

Page 27: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 5. ARCPAD ET ARCPAD APPLICATION BUILDER 19

<?xml ve r s i on=" 1 .0 " encoding="UTF−8"?><ArcPad debug=" true "><CONFIG><! -- Configuration de la barre d etat -->

5 <STATUSBAR v i s i b l e=" true " s c a l e=" true " rockermode=" f a l s e "un i t s=" true "/>

<! -- Configuration des formulaires --><FORMS/><! -- Configuration des barres d outils -->

10 <TOOLBARS><! -- Barre d outils personnalisee 1 --><TOOLBAR name="tlbFauneCustTB" capt ion="Out i l s "

v i s i b l e=" true " ><TOOLBUTTON command="openmap"/>

15 <TOOLBUTTON command="modezoomin"/><TOOLBUTTON command="modezoomout"/><TOOLBUTTON command="modepan"/><TOOLBUTTON command=" ex i t "/><TOOLBUTTON command=" gpsenable "/>

20 <! -- Dossier de bouttons --><TOOLBUTTON name=" tlCustomFolder " image="Globe1 . i c o "><MENUITEM name="query" image="$bex" on c l i c k=" F i l t e r ( ) "

capt ion="query"/><MENUITEM onc l i c k="RemoveFi lters ( ) ; "

25 name=" removeF i l t e r s " image="$pin1_green"capt ion="Enlever F i l t r e s "/>

<MENUITEM onc l i c k="OpenAndConfigureFilterForm ( ) "name=" F i l t r e " image="$sad" capt ion=" F i l t r e "/>

</TOOLBUTTON>30 </TOOLBAR>

<! -- Barre d outils personnalisee 2 --><TOOLBAR name=" t lbFauneOut i l s2 " capt ion="" v i s i b l e=" true " image=""><TOOLBUTTON command=" gpsenable "/><TOOLBUTTON command=" centerongps "/>

35 <TOOLBUTTON onpointerup="AddAnimal ( ) " name="AddAnimal"shor t cut="" image="Animal1 . i c o "t o o l t i p="Ajouter un animal "prompt="Ajouter un animal "/>

<TOOLBUTTON name="AddFi lter " shor t cut="" image="$ ques t i on "40 on c l i c k="OpenFilterForm ( ) "

t o o l t i p="Conf igurer f i l t r e "prompt="Conf igurer f i l t r e "/>

<TOOLBUTTON name="RmvFiltre " shor t cut="" image="$ c o f f e e "on c l i c k="RemoveFi lters ( ) "

45 t o o l t i p="Enlever l e s f i l t r e s "prompt="Enlever l e s f i l t r e s "/>

<TOOLBUTTON command="modelabel "/></TOOLBAR>

</TOOLBARS>50 <SYSTEMOBJECTS>

<! -- Appel la fonction "LoadMap ( ) " au chargement de l application --><APPLICATION onstartup="LoadMap ( ) "/>

</SYSTEMOBJECTS></CONFIG>

55 <! -- Fichier contenant les scripts lies à la configuration --><SCRIPT s r c="ArcPad . j s " language=" JSc r ip t "/>

</ArcPad>

Listing 5.1 � Exemple de �chier de con�guration.

Page 28: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 5. ARCPAD ET ARCPAD APPLICATION BUILDER 20

Figure 5.3 Exemple de formulaire d'ajout, avec aide à la saisie et guidage étape par étape.

5.3 Fichier de données

5.3.1 Contenu

Un �chier de données pour ArcPad porte l'extension AXF. Il s'agit en fait d'une basede données relationnelle au format Microsoft SQL Server Compact Edition. Cette base dedonnées est constituées de plusieurs éléments :

� Les tables de fonctions, qui rassemblent toutes les données sur la géométrie et les attri-buts ainsi que les métadata. Cela correspond en fait aux informations contenues dans le�chier de formes (shape�le) SHP ainsi que les �chiers liés à celui-ci (SHX, DBF et PRJ).

� Les �chiers de couches, qui permettent la représentation des tables du point précédent.Ils contiennent la symbologie, les formulaires ainsi que le nom des couches.

� Les tables ne possédant pas d'informations géographiques.� Les �chiers externes, comme les �chiers de script.� Les systèmes de coordonnées.

La plupart des données de ce �chier sont crées depuis ArcMap, lors de l'export des donnéespour ArcPad. Il existe cependant divers composants personnalisables sous ArcPad ApplicationBuilder. Dans la suite de cette section, les principaux sont présentés.

Page 29: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 5. ARCPAD ET ARCPAD APPLICATION BUILDER 21

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 pourla 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 lorsd'évènements précis tels que le chargement d'un formulaire, la pression sur un bouton, unclique sur la carte, etc. Ils peuvent être écrits en JavaScript ou VB Script et utilisent le modèleobjet d'ArcPAD 1, qui est une bibliothèque de classes donnant accès à certaines fonctions etoutils du logiciel. Dans le cadre de ce travail, le choix de rédiger les scripts à l'aide du langageJavaScript a été fait.

Voici un exemple simple : il faut créer un �ltre a�n de pouvoir a�cher seulement lesanimaux d'une certaine espèce et recensés par un observateur donné. Pour cela il faut créerun formulaire ainsi que quelques fonctions, dans le but de remplir les listes déroulantes, réagiraux évènements, rafraichir la carte, etc. Le code de la fonction permettant de récupérer lesdonnées sélectionnées dans les listes déroulantes et qui créé le �ltre correspondant est a�chéci-dessous.

/** Permet de creer le filtre à appliquer sur la couche de recenssement.*/f unc t i on Cr ea t eF i l t e r ( ) {

// Recuperation de la page du formulaire d ou vient l evènement.5 var page = ThisEvent . Object . Pages (1 ) ;

// Recuperation des controles de listes deroulantes.var c t r lEsp = page . Contro l s ( cbFiltreEspeceName ) ;var ct r lObs = page . Contro l s ( cbFiltreObservateurName ) ;// Recuperation de la couche sur laquelle les animaux sont recensses.

10 var l ay e r = Layers . Item ( recenssementLayerName ) ;

// Initialisation du filtre.var f i l t e r = "" ;// Creation du filtre selon les donnees du formulaire.

15 i f ( c t r lEsp . Enabled ) {f i l t e r += " [ Espece ]= "+ct r lEsp . Value+" " ;

}i f ( c t r lObs . Enabled ) {

i f ( f i l t e r != "" )20 f i l t e r += " AND " ;

f i l t e r += " [ Observateur ]= "+ctr lObs . Value+" " ;}// Affectation du filtre , au filtre de la couche.l a y e r . F i l t e r = f i l t e r ;

25

// Mise à jour du cache et reaffichage de la couche.l a y e r . v i s i b l e = f a l s e ;l a y e r . v i s i b l e = true ;

}

Listing 5.2 � Création et exécution du �ltre sur les animaux.

1. http://www.esri.com/library/fliers/pdfs/arcpad-objectmodel.pdf

Page 30: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

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 dese plonger dans son modèle objet et ses divers aspects techniques, relativement aisémentpersonnalisable. Grâce à la réalisation d'un prototype, il a été démontré que du point de vuetechnique, 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 unepersonnalisation 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 forteslimitations dans la possibilité de création d'une interface répondant de façon optimale à desbesoins spéci�ques.

En ce qui concerne le projet FauneTracker, il n'est pas possible de créer une interfacehomme-machine possédant la simplicité requise par le cahier des charges. De plus, il faut noterque la synchronisation des données entre le PDA et le serveur est relativement complexe. Ilfaut en e�et e�ectuer une succession d'opérations qui ne laisse pas de place à une erreurde l'utilisateur. En outre, cette synchronisation nécessite un ordinateur de bureau possédantune certaine con�guration (voir schéma 5.1). La synchronisation des données n'est donc pasouverte à un utilisateur lambda.

Page 31: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

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 SDKd'ArcGIS Mobile, fourni avec la version 9.3 du serveur. Après divers tests, celui-ci semble ene�et être capable de répondre de la façon la plus optimale, au cahier des charges. Dans cechapitre, tout ce qui concerne la préparation du développement sera analysé. La descriptionde l'environnement de développement et de tests mis en place sera �nalement donnée, avantd'étudier la structure de données choisie ainsi que les di�érentes couches sélectionnées pourcréer la carte.

6.2 Environnement de développement et de tests

6.2.1 Con�guration réseau

La première étape pour la préparation du développement est une phase d'installation etcon�guration d'un réseau, de di�érents serveurs ainsi que des produits ESRI. Ceci a�n deposséder un environnement de développement et de tests permettant de simuler un environ-nement réel. Cette phase d'installation et de con�guration a pris un temps non négligeable.Toutefois, comme cette phase n'est pas le sujet de ce travail, il a volontairement été choisi depas parler de celle-ci au sein de ce mémoire.

Les éléments réseau suivants sont nécessaires pour implémenter le système de GIS :� serveur ArcGIS Server ;� serveur web pour l'administration d'ArcGIS Server ;� serveur de base de données ;� poste de développement ;� station de test ;� périphérique Windows Mobile de test.

En raison des ressources disponibles, l'implémentation physique d'ArcGIS Server, du ser-veur web et du serveur de base de données a été e�ectuée sur la même machine physique. Uneinstallation distribuée n'aurait toutefois pas demandé d'étapes de con�guration supplémen-taires. Le réseau mis en place est représenté sur la �gure 6.1.

23

Page 32: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 6. PRÉPARATION DE L'IMPLÉMENTATION 24

Figure 6.1 Réseau mis en place.

Serveur SQL Express Serveur WEB

Station de tests

Station de développement

PDA de tests

Serveur ArcGIS

Internet

6.2.2 Con�guration logicielle

ArcSDE permet d'utiliser plusieurs types de serveurs de base de données pour stockerles informations utilisées par le serveur de GIS. En raison de sa gratuité, de sa simplicitéd'utilisation sur Windows et de son intégration à Visual Studio le choix d'utiliser SQL ServerExpress a été fait. Pour les mêmes raisons de gratuité et de compatibilité avec Windows, leserveur web Microsoft IIS a été installé.

Les logiciels indispensables suivants ont été installés et con�gurés sur le serveur :� Windows XP professionel, service pack 2 ;� Microsoft IIS version 5.1 (serveur web) ;� SQL Server Express 9.0.3042 ;� ArcGIS Server 9.3 ;� ArcSDE 9.3.

La con�guration du poste de développement est la suivante :� Windows XP professionel, service pack 2 ;� Microsoft Visual Studio 2008 ;� .NET Framework v3.5 ;� .NET Compact Framework v2.0 et v3.5 ;� Windows Mobile 6 Professional SDK ;� Windows Mobile 5 Pocket PC SDK ;� ArcGIS Mobile SDK 9.3.

Finalement, l'essentiel des tests sur terminal mobile, ont été e�ectués sur un PDA HPiPAQ 210E Handheld possédant la con�guration suivante :

� Windows Mobile 6 ;� ArcGIS Runtime 9.3 ;� module GPS bluetooth Kirrio BT-308.

Page 33: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 6. PRÉPARATION DE L'IMPLÉMENTATION 25

Figure 6.2 Schéma UML théorique de la base de données.

Observations OBJECTID+Saisie_Gps+Date_Observation+Date_Saisie+Commentaires+SHAPE

Groupes OBJECTID+Nom

Utilisateurs OBJECTID+Nom+Prénom+MD5_Pwd+User_Name+Responsable

Classes OBJECTID+Nom+Description+Image

1 n

1

n

Espèces OBJECTID+Nom_Fr+Nom_Latin+Image

n 1 n 1

Tranches_Ages OBJECTID+Nom

n

n

Effectifs+Sexe+Nombre

Activites OBJECTID+Nom

1

n

6.3 Structures de données

6.3.1 Schéma de base de données

La �gure 6.2, décrit le schéma de la base de données originalement conçu. Pour commencer,la table Observations, qui est la table � centrale �de ce schéma a été créée. Cette table doitêtre conçue à l'aide d'ArcCatalog, a�n que le serveur de GIS la reconnaisse comme une tablecontenant des données géographiques et possédant un certain système de coordonnées. Cettetable pourra ainsi être a�chée comme une couche d'une carte et chacun des enregistrementsde celle-ci contiendra une forme pour cette couche.

La table Observations contient non seulement la référence vers la forme correspondant àl'observation, mais aussi plusieurs informations. Celle-ci dé�nit principalement des attributs deréférence vers le nom de l'espèce, de l'observateur, des e�ectifs et de l'activité de l'animal. Ellecontient en outre, la date de saisie de l'observation, qui correspond au moment ou l'utilisateurentre l'information dans le système, la date d'observation qui indique le jour ou l'utilisateura fait l'observation (la saisie peut être e�ectuée à postériori) et �nalement une valeur poursavoir si la saisie a été e�ectuée à partie d'une coordonnée fournie par un module GPS ou non.

La table Utilisateurs contiendra le nom et le prénom de ceux-ci, le condensé de leursmots de passes (voir 8.5), une valeur indiquant si ceux-ci font partie des responsables deleur groupe d'observateurs respectifs ainsi que la référence vers ce groupe. Groupes contientsimplement le nom des di�érents groupes d'observateurs.

Dans la table Especes, les noms français et latins des di�érentes espèces, ainsi que laréférence vers la classe d'espèces qui les représente sont stockés. Les di�érentes classes sontenregistrées dans la table éponyme. La table croisée Effectifs permet quant à elle, pourune observation donnée, de déterminer combien de mâles, femelles et indéterminés de chacunedes tranches d'âges stockées dans la table Tranches_Ages ont été aperçus. Comme la liste desdi�érents genres est close, celle-ci est stockée dans un domaine. Finalement, la table Activitésdé�nit les diverses valeurs qui peuvent être choisies pour le champ correspondant.

Page 34: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 6. PRÉPARATION DE L'IMPLÉMENTATION 26

Figure 6.3 Schéma UML de la base de données créée.

Observations OBJECTID+Saisie_Gps+Date_Observation+Date_Saisie+Commentaires+NbIndetAdultes+NbIndetJuveniles+NbIndetPontes+NbFemellesAdultes+NbFemellesJuveniles+NbMalesAdultes+NbMalesJuveniles+SHAPE

Groupes OBJECTID+Nom

Utilisateurs OBJECTID+Nom+Prénom+MD5_Pwd+User_Name+Responsable

Classes OBJECTID+Nom+Description+Image

1 n

1n

Espèces OBJECTID+Nom_Fr+Nom_Latin+Image

n 1 n 1

Activites OBJECTID+Nom

n 1

6.3.2 Schéma pour implémentation sur le PDA

Après une étude détaillée du SDK d'ArcGIS Mobile, il a été découvert qu'il n'était paspossible d'e�ectuer des requêtes de jointures sur les bases de données utilisées par celui-ci.Une solution a donc dû être trouvée pour pallier à ce manque.

Il a été décidé pour notre projet, de stocker au sein d'une unique table toutes les informa-tions sur les observations. Dès lors, il fallait trouver une solution pour minimiser la redondancedes données ainsi que d'éviter de copier l'ensemble des champs de toutes les tables du schémade base de données originalement conçu, dans cette unique table.

En conséquence, le choix de garder la structure initiale de la table et de simplement luiadjoindre les champs provenant de la � mise-à-plat �de la table croisée Effectifs a été fait.Toutes les combinaisons de tranches d'âges et de sexes possibles ont ainsi été ajoutées à latable Observations, sous la forme de nouveaux champs. Il en résulte, par exemple, un champNb_Males_Juveniles qui contient, comme son nom l'indique, l'e�ectif des mâles juvéniles.Ces modi�cations sont visibles sur le schéma 6.3.

Pour tous les champs possédant une référence à destination d'une autre table, la jointuresur le PDA sera implémentée manuellement et extraira ses informations d'un �chier XMLgénéré à l'aide du programme FauneTracker - Con�guration, qui possède un accès direct auserveur de base de données.

6.3.3 Pictogrammes

Pour faciliter l'interface du programme et le rendre plus ludique, des pictogrammes per-mettant à l'utilisateur d'identi�er 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 danschacune des tables correspondantes, contenant l'adresse sur un serveur de �chier de l'imageou alors stocker directement l'image dans la base de données.

Page 35: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

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'imagedirectement dans la base de données car cela permet de s'a�ranchir des risques liés à l'uti-lisation d'un serveur de �chier annexe. En e�et, les images ne risquent pas d'être déplacées,renommées ou supprimées. De plus, la gestion des droits s'e�ectue ainsi, via les droits d'accèsà la base de données et ne demande pas une nouvelle étape de con�guration 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 partied'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 observationsde déplacements.

Les deux couches vectorielles contiennent en plus des données géographiques, les attributsdé�nit par le schéma vu au point 6.3.2. Toutes ces couches sont stockées dans une base dedonnées géographiques administrée à l'aide d'ArcCatalog et se trouvant physiquement sur leserveur SQL Express. Une partie de la carte créée est représentée sur la �gure 6.4. Un servicesur le serveur ArcGIS a �nalement été créé, a�n 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)

Page 36: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

Chapitre 7

FauneTracker - Con�guration

7.1 Description

Cette application est destinée aux responsables des groupes de gardes-faune. Elle met à ladisposition 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 missioncorrespondant.

L'interface de cette application doit impérativement être très simple, a�n qu'elle soit ou-verte à un utilisateur lambda. Cela permettra d'éviter tout risque d'erreur de sa part. Diversesfonctions supplémentaires, telles que le chargement d'un �chier de mission précédemment crééseront fournies à l'utilisateur.

Figure 7.1 Interface graphique de FauneTracker - Con�guration.

28

Page 37: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 7. FAUNETRACKER - CONFIGURATION 29

7.2 Fichier de mission

7.2.1 Rôles

Le �chier de mission joue un rôle primordial dans le projet global. Il permet aux respon-sables de dé�nir les critères à observer par leurs gardes-faune. Les responsables pourront ainsichoisir les di�érentes classes, espèces et activités qui seront présentées aux gardes-faune surle PDA lorsque ceux-ci seront sur le terrain. De plus, lorsqu'il est chargé sur le périphériquemobile, ce �chier permet de se substituer à une base de données pour l'application FauneTra-cker - PDA, celle-ci ne pouvant avoir un accès direct et constant au serveur de données. Ilva aussi permettre de résoudre le fait que la jointure de tables n'est pas implémentée avec leSDK d'ArcGIS Mobile. En e�et, celle-ci sera implémentée par nos soins et les données serontrécupérées à partir du �chier de mission. Finalement ce �chier fournira divers paramètres decon�guration à l'application.

7.2.2 Format

<?xml ve r s i on=" 1 .0 " encoding="utf−8" standa lone="yes "?><Appl icat ion>

<serv i c e_ur l>http : // 129.194.185.232/ arcgis10/services/MapObs/MapServer/MobileServer

5 </serv i c e_ur l><users>

<user id="1" l o g i n=" posc iaa " md5="ddbd20cbac3371921ec1cdfe2ba51214 " /><user id="4" l o g i n=" c l aude f " md5="d41d8cd98f00b204e9800998ecf8427e " /><user id="5" l o g i n=" cha r l e t " md5=" aa12a8298f10b204e5800668ecf8427e " />

10 </users><menus>

<menu name=" c l a s s e s " form_name="Classe d ' e spèce s " type=" l i ste_image_txt "><menuitem id="4" img="Images \0 . jpg ">Autres</menuitem><menuitem id="1" img="Images \1 . jpg ">Mammifères</menuitem>

15 <menuitem id="2" img="Images \2 . jpg ">Oiseaux</menuitem></menu><menu name=" espece s " form_name="Espèces " type=" l i ste_image_txt ">

<menuitem id="5" img="Images \4 . jpg " c l a s s e="2">Aigle </menuitem><menuitem id="19" img="Images \7 . jpg " c l a s s e="1">Chamois</menuitem>

20 <menuitem id="1" img="Images \8 . jpg " c l a s s e="1">Chevreui l </menuitem><menuitem id="7" img="Images \9 . jpg " c l a s s e="2">Faucon</menuitem><menuitem id="8" img="Images \10 . jpg " c l a s s e="4">Mouche</menuitem>s

</menu><menu name=" a c t i v i t e s " form_name=" Ac t i v i t é s " type=" l i ste_image_txt ">

25 <menuitem id="7" img="Images \12 . jpg ">Combat</menuitem><menuitem id="6" img="Images \13 . jpg ">Se déplace </menuitem><menuitem id="5" img="Images \14 . jpg ">Dort</menuitem>

</menu><menu name=" e f f e c t i f s " form_name=" E f f e c t i f s " type=" S a i s i e E f f e c t i f s " />

30 <menu name="date_observat ion " form_name="Date de l ' obse rvat i on " type=" Sa i s i eDate "/>

<menu name="commentaires " form_name="Commentaire" type="Commentaire" /></menus>

</Appl icat ion>

Listing 7.1 � Exemple de �chier de mission.

Le �chier est organisé selon le standard XML. Un premier élément service_url permetde dé�nir l'adresse du service de carte et du serveur ArcGIS le contenant. Vient ensuite unesection contenant les identi�ants, les logins ainsi que les condensés des mots de passes desdi�érents utilisateurs faisant partie du groupe du responsable générant le �chier.

Page 38: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 7. FAUNETRACKER - CONFIGURATION 30

Un élément menu est ensuite créé dans le �chier de mission, pour chacun des formulaires desaisie 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'a�cher sur l'écran de l'utilisateuret �nalement un nom constituant un identi�ant unique pour le menu. Ces di�érents menuscontiennent éventuellement des menuitems qui sont les éléments tels que les classes, espèceset activités choisis par le responsable dans FauneTracker - Con�guration et qui seront a�chésau sein du formulaire. Pour chacun de ces éléments de formulaires plusieurs attributs en plusdu texte les dé�nissant sont fournis :

� le dossier ainsi que le nom de �chier de l'icône permettant de le représenter ;� un identi�ant unique au sein du menu courant ;� pour chacune des espèces, une référence permettant d'identi�er la classe dont elle faitpartie.

7.2.3 Génération

Les di�érentes données contenues dans le �chier de mission sont extraites à partir de labase de données, selon les choix du responsable dans le programme de con�guration. Lorsquele responsable a �ni de dé�nir sa mission, il clique sur le menu permettant de générer le �chierde mission et FauneTracker - Con�guration s'occupe d'accéder aux éléments de la base dedonnées et de générer le �chier XML à partir de ceux-ci. En parallèle, le programme crée unrépertoire, dans lequel tous les pictogrammes des éléments choisis sont ajoutés.

7.3 Authenti�cation

Comme l'utilisation de ce logiciel est réservée aux responsables de gardes-faune, ceux-cidoivent s'identi�er pour pouvoir l'utiliser. L'authenti�cation utilise le même principe que celuiqui sera vu en détails pour FauneTracker - PDA au point 8.5, aux di�érences près que l'ondoit en plus s'assurer que l'utilisateur est un responsable et que les données sont consultéesdirectement sur le serveur de base de données et non-plus à partir d'un �chier de mission.

7.4 Accès base de données

Pour comprendre la manière dont les multiples accès à la base de données sont e�ectués,un exemple simple mais présentant le mécanisme adopté pour chacune des requêtes dans ceprogramme a été choisi pour être détaillé dans les paragraphes qui suivent. Celui-ci permetde supprimer un enregistrement de la table Activites. Voici son code.

pub l i c void d e l e t e ( i n t id ){

// Requête SQL paramètrées t r i n g d e l e t e = "DELETE FROM Act i v i t e s WHERE Object id=@paramid ; " ;

5 // Création d'une transactionus ing ( Transact ionScope scope

= new Transact ionScope ( TransactionScopeOption . Required ) ){

t ry10 {

// Récupération de la connexion à la BDDus ing ( SqlConnect ion sqlCon = BDDUtils . getConnect ion ( ) ){

// Création d'une commande pour la requête

Page 39: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 7. FAUNETRACKER - CONFIGURATION 31

15 // "delete", sur la connexion "sqlCon"SqlCommand cmd = new SqlCommand( de l e t e , sqlCon ) ;// Ajout du paramètre à la commandecmd . Parameters .Add(new SqlParameter ( "paramid" , id ) ) ;// Ouvre la connexion

20 sqlCon .Open ( ) ;// Exécute la commande et vérifie// qu'un enregistrement a été suppriméi f (cmd . ExecuteNonQuery ( ) == 0){

25 Dia logs . showErrorDialog ("Erreur l o r s de l a suppress ion , "+ "aucun enreg i s t r ement a f f e c t é . " ) ;

}// Validation de la transaction

30 scope . Complete ( ) ;// Fermeture "standard" de la connexionsqlCon . Close ( ) ;

}}

35 // En cas d'exception SQLcatch ( SqlExcept ion s q l e ){

throw new Appl i cat ionExcept ion ( "Problème SQL. " + sq l e . Message ) ;}

40 }

Listing 7.2 � Exemple d'accès à la base de données.

Tout d'abord le texte de la requête est créé. Pour ne pas avoir à se préoccuper de lasyntaxe des valeurs de la requête, une requête paramétrée est utilisée. Plutôt que d'insérerdirectement la valeur du paramètre avec la syntaxe appropriée dans la requête, un identi�ca-teur de paramètre précédé d'un @ est donné. Ce paramètre est ensuite dé�ni via l'instructioncmd.Parameters.Add(new SqlParameter("paramid", id)), qui insère automatiquement lavaleur de la variable id avec la syntaxe SQL adéquate, à la place du paramètre @paramid dansla commande.

A�n de s'assurer que la commande ne corrompe pas l'état de la base de données en cas deproblème, une transaction est créée. Si une exception se produit lors de l'exécution du codeou de la requête, l'instruction scope.Complete() qui valide les modi�cations apportées à labase de données ne sera pas atteinte, et aucun changement ne sera apporté à celle-ci. La basede données restera donc dans son état initial.

Il est ensuite nécessaire de récupérer une connexion à la base de données. Pour cela nousavons créé la méthode getConnection() qui est stockée dans la classe statique BDDUtils.Comme son nom l'indique, cette classe o�re divers outils en rapport avec la base de don-nées à l'utilisateur. La connexion est récupérée au sein de la clause using qui dé�nit un espacede visibilité dans lequel l'objet connexion sera utilisable. Cette clause s'assure que dès la sor-tie de la zone qu'elle délimite, que la sortie soit normale ou provoqué par une exception, laméthode dispose() de l'objet dé�nit par la clause soit appelée. Dans le cas d'une instance dela classe SqlConnection, la méthode dispose() contient entre autres l'instruction permettantde clore la connexion. La connexion est ouverte à l'aide de l'instruction sqlCon.Open() etcmd.ExecuteNonQuery() permet d'exécuter la commande SQL, puis de retourner le nombred'enregistrements a�ectés par celle-ci.

Page 40: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 7. FAUNETRACKER - CONFIGURATION 32

Grâce à la transaction et l'utilisation de la clause using, nous avons la garantie que laconnexion est fermée proprement et que la base de données reste dans un état stable et ce,quel que soit le comportement du programme. C'est pourquoi la même structure a été adoptéepour toutes les requêtes vers la base de données créées dans cette application.

pub l i c s t a t i c SqlConnect ion getConnect ion ( ){

// Retourne la connexion. La phrase de connexion est lue à partir d'un// fichier de configuration compilé avec le programme.

5 r e turn new SqlConnect ion ( Prope r t i e s . S e t t i n g s . Defau l t . sde10Connect ionStr ing ) ;}

Listing 7.3 � Création d'un objet connexion.

7.5 Organisation des composants graphiques

Figure 7.2 Décomposition graphique des composants du GUI.

FauneTracker - ConfigurationFauneTracker - Configuration

Espèces ActivitésClasses

Détails

FrmMain

APanel

ADetailsItem

7.5.1 Organisation hiérarchique

Le formulaire principal, contient un gestionnaire d'onglet. Chacun de ces onglets contientun membre dérivant la classe abstraite APanel. Celle-ci est elle même constituée d'une listed'éléments, de divers boutons et d'un composant abstrait - ADetailItem - permettant devisionner les di�érents attributs de l'élément sélectionné dans la liste. Chacun des panneauxdérivant la classe APanel est chargé d'instancier une classe concrète dérivant ADetailItem. Leschéma 7.2 représente graphiquement la séparation des composants du GUI. Le diagrammereprésenté sur la �gure 7.3, présente quant à lui, la manière dont ont été organisées les classes.

Page 41: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 7. FAUNETRACKER - CONFIGURATION 33

Figure 7.3 Composants du GUI, structure de classes.

7.5.2 Motif de conception template method

Les di�érents panels permettant d'a�cher des données provenant du serveur SQL, commeles classes, les espèces et les activités, sont tous très similaires. Ils possèdent en e�et pra-tiquement les mêmes composants graphiques, ainsi que plusieurs comportements communs.Toutefois, selon le panel, lorsque l'on clique sur le bouton modi�er par exemple, le compor-tement n'est pas le même. Pour une édition de classes, celui-ci ouvre en e�et un dialoguepermettant de modi�er et accéder aux données de la classe (ID, Nom, Image, Détails) alorsque pour une espèce il faut prévoir une fenêtre autorisant l'édition des champs (ID, Nom_Fr,Nom_Latin, ID_Classe et Image) de l'espèce.

Une première solution consiste à implémenter deux classes concrètes distinctes, sans uneclasse parente commune. Cela présente cependant l'inconvénient majeur de créer du code enforte partie identique, et non-factorisé pour les comportements communs.

C'est pourquoi il a été décidé d'utiliser le design pattern template method. Tout d'abordune classe abstraite APanel a été introduite a�n de factoriser les méthodes communes. À l'aidede ce pattern, nous allons cependant plus loin. Celui-ci permet, en e�et, de factoriser du codecommun, au sein des méthodes elles-mêmes.

Voyons un exemple très simple. Pour la méthode permettant d'ajouter un enregistrementet d'ouvrir la boite de dialogue permettant de saisir les informations de celui-ci il aurait puêtre écrit pour la classe dé�nissant le panel de gestion des classes d'animaux :

pr i va t e void btAdd_Click ( ob j e c t sender , EventArgs e ){

Deta i l sD i a l og d e t a i l sD i a l o g = new C la s s e sDe t a i l sD i a l o g ( dataAccess ) ;showDeta i l sDia log ( d e t a i l sD i a l o g ) ;

5 }

Et dans la classe gérant le pannel des espèces :

pr i va t e void btAdd_Click ( ob j e c t sender , EventArgs e ){

Deta i l sD i a l og d e t a i l sD i a l o g = new Espece sDeta i l sD ia l og ( dataAccess ) ;showDeta i l sDia log ( d e t a i l sD i a l o g ) ;

5 }

Page 42: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 7. FAUNETRACKER - CONFIGURATION 34

Figure 7.4 Implémentation du design pattern Template Method.

On peut constater que le comportement des deux méthodes est quasiment identique, laseule di�érence réside dans le choix du type concret du dialogue à créer. Pour simpli�er cecomportement une classe abstraite possédant les instructions suivantes peut être introduite :

// Méthode abstraite dont l'implémentation est laissée aux sous -classesprotec ted abs t r a c t De ta i l sD ia l og getDetai l sDia logNewItem ( ) ;

p r i va t e void btAdd_Click ( ob j e c t sender , EventArgs e )5 {

Deta i l sD i a l og d e t a i l sD i a l o g = getDetai l sDia logNewItem ( ) ;showDeta i l sDia log ( d e t a i l sD i a l o g ) ;

}

La méthode abstraite getDetailsDialogNewItem(), dont l'implémentation est sous la res-ponsabilité des sous-classes de APanel, a aussi été introduite.

Selon le design pattern template method, la méthode btAdd_Click est une méthode patron.Une méthode patron dé�nit une partie commune d'un algorithme et une partie spéci�que. Ilfaut relever que, a�n de ne pas compliquer la tâche du lecteur, le cas démontré ici est trèssimple. Le motif de conception a cependant été utilisé pour des méthodes plus complexes. Cepattern a aussi été utilisé pour le composant graphique permettant d'a�cher les détails d'uneclasse ou espèce (ADetailsItem). Le diagramme 7.4 montre l'organisation des classes, dans lecadre de ce travail, pour implémenter ce motif de conception.

Page 43: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 7. FAUNETRACKER - CONFIGURATION 35

Figure 7.5 Diagramme de classes simpli�é de FauneTracker - Con�guration.

Use

rCon

trol

Abst

ract

Cla

ss

Cham

ps btAd

dbt

Mod

ifybt

Rem

ove

chec

kedL

ist

men

uNam

e

Prop

riété

s

Chec

kedI

tem

s

Mét

hode

s

APan

elbt

Add_

Clic

kbt

Mod

ify_C

lick

btRem

ove_

Clic

kch

ecke

dLis

t_Se

lect

edIn

dexC

hang

edch

eckI

tem

sco

nfig

ureD

etai

lsIt

em

refr

eshL

istB

oxIt

ems

Use

rCon

trol

Abst

ract

Cla

ss

Cham

ps btIm

age

editM

ode

lblID

pbIm

age

read

Onl

y

Prop

riété

s

Dat

aAcc

essC

ompo

nent

EditM

ode

Mét

hode

s

ADet

ails

Item

btIm

age_

Clic

k

ActivitesDetailsDialog

Det

ails

Dia

log

Clas

s

Form

Abst

ract

Cla

ss

Cham

ps btAn

nule

rbt

Rec

ord

com

pone

nts

Mét

hode

s

conf

igur

eDet

ails

It…

Det

ails

Dia

log

Det

ails

Dia

log_

For…

FrmMain

Form

Clas

s Cham

ps exitP

rogr

amLo

adCo

nfig

urat

ion

logi

nRes

pons

able

mai

nMen

uSa

veCo

nfig

urat

ion

tpAc

tivite

stp

Clas

ses

tpEs

pece

s

Mét

hode

s

crea

tePa

nels

exitP

rogr

am_C

lick

Frm

Mai

nLo

adCo

nfig

urat

ion_

Clic

kSa

veCo

nfig

urat

ion_

Clic

kCPanelEspeces

APan

elCl

ass Mét

hode

s

CPan

elEs

pece

sge

tDet

ails

Dia

logM

odify

Item

getD

etai

lsD

ialo

gNew

Item

EspDetails

ADet

ails

Item

Clas

s Cham

ps cbCl

asse

scl

asse

sDic

otx

tNom

Frtx

tNom

Latin

Prop

riété

s

Rea

dOnl

yTe

xtID

Mét

hode

s

EspD

etai

lsis

Dat

aVal

ids

load

CbCl

asse

sIte

…lo

adIn

form

atio

nre

cord

Mod

ifica

tions

EspecesDetailsDialog

Det

ails

Dia

log

Clas

s

CPanelClasses

APan

elCl

ass Mét

hode

s

CPan

elCl

asse

sge

tDet

ails

Dia

logM

odify

Item

getD

etai

lsD

ialo

gNew

Item

ClasseDetails

ADet

ails

Item

Clas

s Cham

ps txtD

etai

lstx

tNom

Prop

riété

s

Rea

dOnl

yTe

xtID

Mét

hode

s

Clas

seD

etai

lsis

Dat

aVal

ids

load

Info

rmat

ion

reco

rdM

odifi

catio

ns

IDataAccess

Inte

rfac

e

Mét

hode

s

XmlGenerator

Clas

s Cham

ps idx

imag

es_d

irect

ory

serv

ice_

url

Mét

hode

s

crea

teIm

ages

Fold

erge

tIte

mD

etai

lsw

riteI

mag

eInF

ilew

riteM

enuA

ctiv

ites

writ

eMen

uCla

sses

writ

eMen

uCom

men

taire

sw

riteM

enuD

ateO

bser

vatio

nw

riteM

enuE

ffec

tifs

writ

eMen

uEsp

eces

writ

eUse

rsFr

omG

roup

OfA

Res

pons

able

XmlG

ener

ator

XMLReader

Clas

s Cham

ps data

XML

Mét

hode

s

getT

able

XMLR

eade

r

ImageParsing

Stat

ic C

lass

Mét

hode

s

getB

itmap

Byte

sge

tIm

ageB

ytes

aDet

ails

data

Acce

ss

data

Acce

ss

aDet

ails

Item

pane

ls

Page 44: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

Chapitre 8

FauneTracker - PDA

8.1 Description

Le logiciel pour les PDA est destiné aux gardes-faune. Il doit principalement leur permettred'e�ectuer très simplement la saisie d'une observation d'animaux, fournir un positionnementGPS 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 personnalisabledynamiquement, 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 pourceux-ci. Le diagramme de cas d'utilisations de la �gure 2.1 synthétise ces fonctionnalités.

Figure 8.1 FauneTracker PDA, a�chage de la carte (gauche) et saisie de l'espèce (droite).

36

Page 45: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 8. FAUNETRACKER - PDA 37

8.2 A�chage et navigation sur une carte

Comme le bon sens l'impose, le développement a commencé par les points qui semblaientles plus critiques. La première étape a donc été de réaliser les fonctions d'a�chage de la carteainsi que les outils de navigation sur celle-ci. Pour e�ectuer cette opération, les classes Map etMobileService de la bibliothèque du SDK d'ArcGIS Mobile, sont à notre disposition.

La classe Map permet d'a�cher une collection de données géographiques fournie par unMobileService. Le service mobile sert à gérer la connexion au serveur ArcGIS et à stockerles données envoyées par ce serveur sur l'espace disque local, a�n de réduire le nombre derequêtes et de pouvoir travailler en mode déconnecté. Dans le même but, il permet aussi delire les données à partir du cache, plutôt qu'à partir d'une connexion permanente au serveur.

A�n de démarrer le service mobile et de pouvoir a�cher des données sur le composantMap, il faut réaliser les opérations suivantes :

1. dé�nir l'url du service mobile sur le serveur, au service mobile local à l'application ;

2. choisir l'emplacement du cache de cartes au sein du PDA ;

3. a�ecter le service mobile, comme source de données du composant carte sur le PDA ;

4. ouvrir le service mobile, en choisissant le mode d'ouverture du cache (Open correspondà une simple lecture du cache sur le terminal, tandis que Create permet d'entièrementrenouveler le cache à partir du serveur).

/// Cette méthode permet d'affecter au service mobile , l'url du serveur/// ainsi que l'emplacement local du cache. Elle ouvre ensuite le service/// mobile , à partir du cache et lève une exception en cas de problème/// avec l'ouverture de ce cache.

5 pr i va t e void openMapService ( ){

// affectation de l'url du service de gist h i s . mob i l eSe rv i c e . Url = u r l S e r v i c e ;// choix de l'emplacement du cache sur le PDA

10 t h i s . mob i l eSe rv i c e . CacheStoragePath = cacheFolder ;// affectation de mobileService comme source de données de la cartet h i s . mapComponent . DataSources .Add( t h i s . mob i l eSe rv i c e ) ;

// vérifie que le service a été correctement défini15 i f ( ! t h i s . mob i l eSe rv i c e . I sVa l i d )

{CommonTools . showErrorDialog ( "Le cache de ca r t e n ' e s t pas va l i d e ! " ) ;

}e l s e

20 {try{

// on ouvre le service de gis à partir du cache.t h i s . mob i l eSe rv i c e . Open(CacheOpenMode .Open) ;

25 }catch ( Exception exc ){

CommonTools . showErrorDialog ("Le cache de ca r t e n ' a pas pu ê t r e ouvert . "

30 + exc . Message ) ;}

}}

Listing 8.1 � Méthode d'ouverture du service mobile.

Page 46: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 8. FAUNETRACKER - PDA 38

Il faut maintenant fournir à l'utilisateur les outils suivants a�n 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 instructionssuivantes :

// Création d'un outil de zoom en avantZoomInMapAction zoomInAction

= new ESRI . ArcGIS . Mobile . MapActions . ZoomInMapAction ( t h i s . components ) ;// Ajout de cet outil à la carte

5 t h i s . c a r t e s . MapActions .Add( zoomInAction )

Listing 8.2 � Création de l'outil de zoom en avant.

Il su�t ensuite, d'a�ecter l'outil correspondant au choix de l'utilisateur, lorsque celui-cien sélectionne un sur l'IHM. Un évènement de type click est donc ajouté sur les boutons liésaux outils et appelle la méthode suivante (exemple pour le zoom en avant) :

////// Déclenche le zoom en avant lorsque on appuie sur le menu correspondant.///pr i va t e void btZoomIn_Click ( ob j e c t sender , EventArgs e )

5 {// Affectation de l'outils zoom en avant , comme action// courrante sur la carte.c a r t e s . CurrentMapAction = zoomInAction ;

}

Listing 8.3 � Exemple d'a�ectation d'un outils à la carte.

En ce qui concerne le zoom arrière et le déplacement de la carte, le code est presque identique,il su�t de choisir l'outil correspondant.

8.3 Lecture du �chier de mission

L'application doit avoir accès à un �chier de mission pour obtenir les données dont elle abesoin. Le contenu ainsi que l'organisation de ce �chier sont détaillés à la section 7.2. Il fautdonc lire ce �chier et le rendre accessible facilement par les diverses classes de l'application.Pour cela il a été décidé de le charger dans un objet contenant une collection de données,appelé dataset.

Étant donné que les données contenues dans le dataset sont les mêmes tant que l'utilisateurne décide pas de changer de mission, il ne serait pas e�cace de créer et remplir le dataset àchaque fois que le programme doit accéder à un paramètre de con�guration. C'est pourquoile choix a été fait d'utiliser le motif de conception singleton. Celui-ci permet de s'assurer qu'iln'existe qu'une seule instance de la classe ConfigReader et que le dataset qu'elle contient nesoit réinitialisé qu'en cas de changements de �chier de mission.

Le code qui suit, illustre la manière dont a été implémenté le motif de conception singletonainsi que le remplissage du dataset, à partir du �chier de mission.

Page 47: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 8. FAUNETRACKER - PDA 39

////// Permet de lire le fichier de configuration./// Utilise le motif de conception SINGLETON.///

5 c l a s s ConfigReader{

// Dataset dans lequel est chargé le fichier de missionpr i va t e DataSet dsConf ig ;

10 // Référence vers l'instance unique de la classepr i va t e s t a t i c ConfigReader conf igReader ;// Chemin du fichier de missionpr i va t e s t a t i c S t r ing xmlCfgFilePath ;

15 // Le constructeur est privé , afin de s'assurer// que seule la classe ConfigReader puisse créer une instance// d'elle -même.pr i va t e ConfigReader ( ) {}

20 // Change l'emplacement de lecture du fichier de mission.pub l i c s t a t i c void SetMiss ionFi l ePath ( S t r ing path ){

// Change le répertoirexmlCfgFilePath = path ;

25 // Remet l'instance à null , afin qu'une nouvelle instance// et donc un nouveau dataset soient// créés avec les nouvelles données// lors de la prochaine demande du dataset.conf igReader = nu l l ;

30 }

// Renvoie l'unique instance de la classe après avoir// rempli le datasetpub l i c s t a t i c ConfigReader GetInstance ( )

35 {// Si l'instance n'existe pas encore ...i f ( conf igReader == nu l l ){

// ... elle est crée.40 conf igReader = new ConfigReader ( ) ;

}re turn conf igReader ;

}

45 // Lit le fichier de configuration et stocke le résultat// dans un dataset , si le dataset n'est pas déjà créé.pub l i c DataSet ge tCon f i gura t i on ( ){

t ry50 {

// Vérification de la non -existencec du dataseti f ( dsConf ig == nu l l ){

// Création du dataset55 dsConf ig = new DataSet ( ) ;

// Chargement du fichier xmlXmlDocument xmlDoc = new XmlDocument ( ) ;xmlDoc . Load ( xmlCfgFilePath ) ;

60 XmlNodeReader xnr = new XmlNodeReader ( xmlDoc ) ;

// Remplissage du dataset , à partir du fichier xmldsConf ig . ReadXml( xnr ) ;

}65 r e turn dsConf ig ;

}

Page 48: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 8. FAUNETRACKER - PDA 40

// Traitement de l'exception levée si le fichier est introuvablecatch ( FileNotFoundException f n f ){

70 CommonTools . showErrorDialog ( " F i ch i e r de miss ion in t rouvab l e ! " ) ;}// Traitement de l'exception levée si le fichier est invalidecatch ( Exception ex ){

75 CommonTools . showErrorDialog ( " F i ch i e r de miss ion i n v a l i d e . " ) ;}re turn nu l l ;

}

80

}

Listing 8.4 � Lecture du �chier de mission (implémentation du motif de conception singleton).

8.4 Navigation GPS

Pour simpli�er le travail du garde-faune, un service qui consiste à centrer la carte sur saposition GPS lui est proposé. A�n d'utiliser ce service, le garde-faune devra bien entendudisposer d'un module GPS interne ou externe (un module bluetooths par exemple).

Pour activer ce service, il faut disposer d'une instance de la classe GpsDisplay, qui permetd'a�cher sur un objet Map, une position fournie par un objet SerialPortGpsConnection. Cedernier objet permet d'initier une connexion utilisant le protocole NMEA entre le terminalet le récepteur GPS, à l'aide un port série. Toutes ces classes font partie du SDK d'ArcGISMobile.

c l a s s FrmMap{. . .

/// Configuration des éléments du formulaire.5 pr i va t e void In i t i a l i z eComponent ( )

{. . .

// Pour que la carte suive le déplacement de l'utilisateur.10 t h i s . gpsDisplay . AutoPan = true ;

// Affectation de la connexion GPSt h i s . gpsDisplay . GpsConnection = th i s . se r ia lPortGpsConnect ion ;// Affectation de la cartet h i s . gpsDisplay .Map = th i s . c a r t e ;

15 }

/// Ouvre ou ferme et configure la connexion GPS.pr i va t e void configureGPS ( ){

20 // Si la connexion gps est deja etablie ,// on verifie que l'utilsateur veut bien// desactiver celle -ci.i f ( se r ia lPortGpsConnect ion . IsOpen ){

25 Dia logResu l t dr = showQuestionDialog ("Voulez−vous d é s a c t i v e r l e s u i v i GPS?" ,"GPS" ) ;

i f ( dr == Dia logResu l t . Yes )30 ser ia lPortGpsConnect ion . Close ( ) ;

}

Page 49: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 8. FAUNETRACKER - PDA 41

// Sinon on ouvre une nouvelle connexion.e l s e {

Dia logResu l t dr = showQuestionDialog (35 "Voulez−vous a c t i v e r l e GPS?" ,

"GPS" ) ;

i f ( dr == Dia logResu l t . Yes ){

40 t ry{

// Affectation du port , "AUTO" cherchera le port// parmis les 20 premiers ports séries du terminal.ser ia lPortGpsConnect ion . PortName = "AUTO" ;

45 // Ouverture de la liaison série avec le GPS.ser ia lPortGpsConnect ion .Open ( ) ;

}catch ( Exception e ){

50 MessageBox . Show( " Imposs ib l e de connecter l e GPS. "+ " Vé r i f i e z l a c on f i gu r a t i on du système "+ " et s i l e r é c ep t eu r e s t al lumé . " ) ;

}}

55 }}

}

Listing 8.5 � Con�guration et connexion du GPS.

8.5 Authenti�cation

A�n de s'assurer que les données sont saisies par un garde-faune et que celui-ci utilise bienle nom d'utilisateur qui lui est attribué, un mécanisme d'authenti�cation par mot de passe aété mis en place. Les di�érents noms d'utilisateurs du groupe de gardes-faune pour lequel estdestiné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.

Figure 8.2 Principe de fonctionnement de l'authenti�cation.

FauneTracker - PDAAlgorithme de hachage

MD5

Mot de passe entré par

l’utilisateurCondensé A

Lecture condensé

du mot de passe

de l’utilisateur X

Condensé B

Fichier XML

Condensé A = Condensé B ?

Utilisateur X authentifié!Vrai

Page 50: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 8. FAUNETRACKER - PDA 42

Au moment de l'ouverture du programme et a�n d'éviter le plus possible les saisies avecle clavier virtuelle, l'utilisateur pourra choisir son nom d'utilisateur parmi une liste a�chanttous les noms d'utilisateurs du groupe. Il saisira ensuite son mot de passe qui sera haché etcomparé 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 stockeren un quelconque endroit les mots de passe en clair, ce qui serait désastreux au niveau de lasécurité. Toutes ces étapes sont résumées sur la �gure 8.2 et la portion de code qui suit, montrela 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 >///pub l i c s t a t i c s t r i n g getMd5Hash ( St r ing text ){

// Création d'une instance de l'implémentation par défaut10 // de l'algorithme de hachage.

MD5 md5Hasher = MD5. Create ( ) ;

// Conversion du texte en un tableau d'octet et calcul du hashbyte [ ] data = md5Hasher . ComputeHash ( Encoding . Defau l t . GetBytes ( t ex t ) ) ;

15

// Recréation d'une string a partir des octetsSt r i ngBu i l d e r sBu i lde r = new St r i ngBu i l d e r ( ) ;f o r ( i n t i = 0 ; i < data . Length ; i++){

20 // Ajoute le caractère , préalablement converti// au format string depuis l'hexadécimal.sBu i lde r . Append( data [ i ] . ToString ( "x2" ) ) ;

}re turn sBu i lde r . ToString ( ) ;

25 }

Listing 8.6 � Génération d'un condensé md5.

8.6 Synchronisation

Le garde-faune doit avoir la possibilité, lorsqu'il le désire et qu'une connexion à internetest établie sur le PDA, de synchroniser celui-ci a�n de publier sur le serveur les observa-tions qu'il a e�ectuées et de récupérer les modi�cations faites sur les di�érentes couches defonctionnalité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 ilsu�t de poster ses nouvelles observations et de récupérer celles e�ectuées par ses collèguesainsi que les mises-à-jour de celles qu'il possède déjà. Pour e�ectuer ces deux opérations, laclasse 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'identi�erla transaction et envoie au serveur toutes les nouvelles informations saisies sur les couches defonctionnalité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 couchesde fonctionnalités, à partir du serveur. Elle agit aussi de façon asynchrone et prend commeparamètre l'étendue sur laquelle les données doivent être récupérées, un booléen indiquant sile cache doit être rafraichi et un identi�ant de transaction.

Page 51: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 8. FAUNETRACKER - PDA 43

////// Synchronisation des données entre le serveur et le périphérique.///pr i va t e void synchronizeData ( )

5 {// On vérifie si l'url du cache de carte est valide.i f ( s t r i n g . IsNullOrEmpty ( mob i l eSe rv i c e . Url ) )

throw new Inva l idOperat ionExcept ion ( "Le cache de ca r t e ne possède pas une URLva l i d e . " ) ;

10 // Créé un dialogue demandant à l'utilisateur s'il veut effectuer lasynchronisation.

Dia logResu l t dr = CommonTools . showQuestionDialog ("Voulez−vous synch ron i s e r l e s données avec l e s e rveur " ," Synchron i sa t ion " ) ;

15 // Si ouii f ( dr == Dia logResu l t . Yes ){

errorMessageDisp layed = f a l s e ;// Réinitialisé pour chaque requête , mis à faux au début

20

// Publie les mises à joursmobi l eSe rv i c e . PostFeaturesAsync ( "Post from" + userID ) ;

// On récupère l'étendue de la carte de base25 Envelope zoneDeMiseAJour = mob i l eSe rv i c e . Layers [ 0 ] . GetExtent ( ) ;

// Récupère la dernière version des couchesmobi l eSe rv i c e . GetFeatureDataAsync ( zoneDeMiseAJour , true , "GetFeatures " +

userID ) ;}

}

Listing 8.7 � Synchronisation des données.

Finalement, il faut s'assurer que les données aient été synchronisées correctement. Pour celale programme reste à l'écoute de l'évènement RequestCompleted qui est déclenché lorsqu'unerequête de synchronisation est achevée. Une véri�cation est faite au sein de la méthode traitantcet évènement, pour savoir s'il n'y a pas eu d'erreur de synchronisation. En cas d'erreurl'utilisateur est noti�é.

////// Déclenché lorsqu 'une requête vers le service de carte/// est terminée. Permet d'afficher un message d'erreur/// en cas de problème.

5 ///pr i va t e void mobileService_RequestCompleted (

ob j e c t sender ,sRequestCompletedEventArgs e )

{10 // S'il existe une erreur , et qu'il n'y pas déjà

// eu un message d'erreur affiché pour cette requête// => on notifie l'utilisateur.i f ( e . Error != nu l l && ! errorMessageDisp layed ){

15 CommonTools . showErrorDialog ( " Synchron i sa t ion imposs ib l e , "+ " v é r i f i e z l a connexion . "+e . Error . Message ) ;

// Indique qu'un message d'erreur a été affiché.errorMessageDisp layed = true ;

20 }}

Listing 8.8 � Véri�cation du bon déroulement de la synchronisation.

Page 52: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 8. FAUNETRACKER - PDA 44

8.7 Saisie d'une observation

8.7.1 Ajout de données sur la carte

La première étape pour la saisie d'une observation, est la saisie de ses coordonnées géo-graphiques. L'utilisateur a le choix d'e�ectuer une observation statique où une observationde déplacement. L'observation statique consiste en la saisie d'un point ou se trouve l'animalalors que l'observation d'un déplacement permet de saisir le trajet de l'animal, sous la formede lignes brisées.

Une couche géographique faisant partie de la carte est disponible pour chacun des typesd'observations vus ci-dessus. Il y a donc une couche de points et une de lignes-brisées. Lorsquel'utilisateur dessine une nouvelle observation sur la carte, celle-ci est en fait saisie sur unetroisième couche, qui est une couche temporaire spécialement prévue pour la saisie de nouvellesinformations. Lorsque le dessin est validé, celui-ci pourra ensuite être copié sur la couche voulueet e�acé de la couche temporaire.

Les opérations suivantes sont réalisées pour préparer l'édition lors d'un clique de l'utilisa-teur sur un bouton pour ajouter un point ou une ligne-brisée :

1. récupération de la couche correspondant au type de saisie que souhaite faire l'utilisateur ;

2. a�ectation de l'outil d'ajout de coordonnées comme action courante sur la carte ;

3. choix pour cet outil du type de forme qu'il devra dessiner, en fonction de la coucheéditée.

////// Permet de préparer la couche géographique , et les outils/// nécessaire à l'ajout de la coordonnée. Le nom/// de la couche à éditer est fourni en paramètre.

5 ///pr i va t e void debutEdit ionCarte ( s t r i n g layerName ){

// On vérifie qu'il n'y a pas déjà une saisie en coursi f ( ! sa i s i eEnCours )

10 {// Affiche les contrôles liés à l'ajout de nouvelles observationst h i s . pn lContro l sObservat ions . V i s i b l e = true ;// Récupère la couche à éditer à partir de la carteed i tLayer = mob i l eSe rv i c e . Layers [ layerName ] as FeatureLayer ;

15 // Sélection de l'outils d'ajout de données géographiquesca r t e . CurrentMapAction = ajouterCoordonnee ;// Vérification de l'existance de la couchei f ( ed i tLayer == nu l l ){

20 throw new Nul lReferenceExcept ion ("La couche reche rchée n ' a pas é t é trouvée " ) ;

}// Récupération du type de formes contenues// dans la couche ...

25 GeometryType geometryType = ed i tLayer . GeometryType ;// ...et choix de l'outils de dessin correspondant.switch ( geometryType ){

case GeometryType . Po l y l i n e :30 sketchGraphicLayer1 . Geometry =

new Po ly l i n e ( ) ;break ;

case GeometryType . Point :sketchGraphicLayer1 . Geometry =

Page 53: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 8. FAUNETRACKER - PDA 45

35 new ESRI . ArcGIS . Mobile . Geometries . Point ( ) ;}// Permet de savoir qu'une saisie est en courssa i s i eEnCours = true ;

}40 }

Listing 8.9 � Préparation de l'édition de la couche.

On attend ensuite que l'utilisateur termine sa saisie en cliquant le bouton pour validercelle-ci. Il faut alors véri�er que des informations ont bien été ajoutées à cette couche ete�ectuer les traitements suivants :

1. récupération de la table d'attributs contenant les données de la couche en édition ;

2. récupération de la forme dessinée sur la couche de dessin ;

3. création d'un objet SaisieProcess ;

4. lancement du processus de saisie ;

5. e�açage des données saisies sur la couche de dessin.

////// Appelé lorsque l'on clique sur le bouton pour valider un dessin/// et lance le début d'un processsus de saisie.///

5 pr i va t e void btVal ider_Cl ick ( ob j e c t sender , EventArgs e ){

// Vérification de l'existance d'une session de saisie.i f ( sa i s i eEnCours ){

10 // On vérifie qu'un élément a été ajoutéi f ( ! coucheDeDessin . Geometry . IsEmpty ){

// Récupération de la table contenant les données de la couche// en édition.

15 FeatureDataTable ob s e rva t i on s = ed i tLayer . GetDataTable ( ) ;// Récupération de la forme dessinée sur la couche de dessin.Geometry nouvel leForme = coucheDeDessin . Geometry ;

// Créé un nouveau processus de saisie.20 Sa i s i eP r o c e s s s a i s i e P r o c e s s =

new Sa i s i eP r o c e s s (conf igData ,obse rvat ions ,ed i tLayer . GeometryColumnIndex ,

25 ser ia lPortGpsConnect ion . IsOpen ,userID ,nouvel leForme ) ;

// Démarrage du processuss a i s i e P r o c e s s . s a i s i e ( ) ;

30

// efface les données ajoutées sur la couche de dessincoucheDeDessin . Geometry = nu l l ;sa i s i eEnCours = f a l s e ;

}35 // Masquage des controles relatifs à la saisie.

t h i s . pn lContro l sObservat ions . V i s i b l e = f a l s e ;}

}

Listing 8.10 � Validation du dessin et lancement du processus de saisie.

Page 54: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 8. FAUNETRACKER - PDA 46

8.7.2 Collecte des informations

Une fois la position de l'observation faunistique saisie, l'observateur doit entrer plusieursinformations sur celle-ci. Pour répondre aux objectifs du cahier des charges, le procédé doitêtre aussi simple que possible. Il devra de plus minimiser les erreurs de saisie. C'est pourquoi ila été décidé de guider l'observateur, à travers plusieurs formulaires se succédant pour collecterles données sur l'observation.

Les formulaires permettent de saisir respectivement :� la classe d'espèce ;� l'espèce ;� l'activité de l'animal ;� les e�ectifs mâles, femelles et indeterminés, ainsi que pour chacun des sexes, la tranched'âge des animaux observés ;

� la date de l'observation ;� un commentaire optionnel.

Comme on peut le voir sur la �gure 8.3, le procédé de saisie peut être décrit par unemachine à états. En conséquence, a�n d'implémenter les di�érents formulaires utilisés lors dela saisie, il a été décidé d'utiliser le motif de conception état. Celui-ci permet à un objet demodi�er son comportement en fonction de son état interne.

Figure 8.3 Machine à états de la saisie.

Saisie Classe

Saisie activité

Saisie commentaire

Saisie date d’observation

Saisie effectifs

Saisie espèce

SuivantPrécédent

Suivant

Suivant

Suivant

SuivantPrécédent

Précédent

Précédent

Affichage récapitulatifde la saisie

SuivantPrécédent

Suivant

Précédent

Page 55: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 8. FAUNETRACKER - PDA 47

Les participants au motif de conception sont les suivants :� IEtats est une interface introduisant notamment la signature des méthodes suivant()et precedent() qui permettent d'e�ectuer les transitions entre états. Elle dé�nit aussidiverses autres méthodes devant être implémentées par chacun des états.

� SaisieProcess est une classe concrète, qui représente la machine à états. Elle possèdeune référence vers une instance d'une classe implémentant l'interface IEtats.

� SaisieClasse, SaisieEspece, SaisieActivite, SaisieEffectifs, SaisieDate et en-�n SaisieCommentaires sont des classes concrètes, décrivant les états éponymes.

pub l i c i n t e r f a c e IEtat s{

// transition vers l'état suivantvoid su ivant ( ) ;

5 // transition vers l'état précédentvoid precedent ( ) ;// active l'état courantvoid a c t i v e r ( ) ;// désactive l'état courant

10 void d e s a c t i v e r ( ) ;// libère toutes les ressources occupées par l'étatvoid l i b e r e rRe s s ou r c e s ( ) ;

}

Listing 8.11 � Interface IEtats.

Voici le code de la méthode permettant de passer à l'état suivant au sein d'un état (enl'occurence SaisieActivite) :

c l a s s S a i s i eA c t i v i t e : AFormSais ieObservationListView{

. . .

5 /// Implémentation de la méthode du design pattern état/// permettant de passer à l'état suivant (en l'occurence "SaisieEffectifs ")./// La définition de cette méthode provient de l'interface/// IEtatSaisieObservation./// <param name=" nextMenuId">numéro du menu suivant </param >

10 pub l i c ov e r r i d e void su ivant ( i n t nextMenuId ){

// Récupération de l'élément sélectionnés t r i n g s e l e c t ed I t em = th i s . getSe lectedItemTag ( ) ;// Si un élément est sélectionné ...

15 i f ( s e l e c t ed I t em != nu l l ){

// ... enregistrement dans la machine à état de la donnée saisie// dans ce formulaire ...( ( S a i s i eP r o c e s s ) machineEtats ) . Act iv i t e ID

20 = in t . Parse ( getSe lectedItemTag ( ) ) ;// ... et passage à l'état suivant.machineEtats . e ta tSu ivant (new S a i s i e E f f e c t i f s ( nextMenuId , machineEtats ) ) ;

}// ... sinon affichage d'un message d'erreur contraignant l'utilisateur

25 // à sélectionner un élément.e l s e{

MessageBox . Show( " Veu i l l e z c h o i s i r un element . " ) ;}

30 }}

Listing 8.12 � Méthode suivant(), dé�nie par l'interface IEtats.

Page 56: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 8. FAUNETRACKER - PDA 48

8.8 Filtrage des informations

L'utilisateur doit avoir la possibilité d'e�ectuer des requêtes de �ltrage, directement surle PDA. Étant donné que le garde-faune n'est pas censé posséder des connaissances avancéesen informatique, il faut que l'utilisateur soit guidé pour la création de la requête, et non qu'ilait à saisir le code SQL correspondant lui-même. C'est pourquoi il a été choisi de mettre àsa disposition un assistant de création de �ltres. Cet assistant récolte les informations selonlesquelles le garde-faune souhaite �ltrer les données et créé au fur et à mesure la requêtecorrespondante.

Les mandants du projet souhaitent que l'observateur puissent �ltrer parmi les classes, lesespèces et les dates de saisies de l'observation (fourchette minimum-maximum). Ils désirenten plus que plusieurs requêtes puissent être combinées. Voici deux exemples de requêtes queles gardes-faune peuvent formuler :

� a�cher les renards vulpes, aperçus du premier janvier 2007 au 31 novembre 2007 ;� visualiser toutes les espèces de la classe des mammifères vues depuis il y an un an.

Figure 8.4 Machine à états de la création d'un �ltre.

Précédent

Précédent

Saisie Classe

Saisie date

d’observation

minimum

Affichage du résultat

sur la carte

Saisie date

d’observation

maximum

Saisie espèce

SuivantPrécédent

Suivant

Suivant

Suivant

Précédent

Ajouter filtre

Terminer

Page 57: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 8. FAUNETRACKER - PDA 49

Le diagramme 8.4 présente la machine à états correspondant au processus de création dela requête. Le constat que les états décrits sur cette �gure sont pratiquement les mêmes queceux de la machine à états de la saisie (�gure 8.3), peut très vite être réalisé. De plus, lesformulaires utilisés pour saisir une observation, sont quasiment identiques à ceux qui doiventêtre implémentés pour créer la requête. Il existe en e�et, uniquement deux di�érences :

� l'utilisateur doit pouvoir � sauter �un écran, lorsqu'il ne souhaite pas �ltrer selon lecritère correspondant à celui-ci ;

� les transitions ne sont pas les mêmes.

C'est pourquoi, le choix de réutiliser les mêmes classes d'états que celles utilisées pour lasaisie a été fait. Une condition lors de la création des formulaire ainsi que pour les transitions asimplement été ajoutée, a�n de savoir si la machine à états utilisée est la machine permettantd'e�ectuer une saisie ou celle permettant de construire un �ltre. Les actions appropriées sontchoisies en conséquence.

Une classe abstraite AStateMachine permet de factoriser les éléments communs aux deuxmachines à états. Les classes SaisieProcess et ConstructRequestFilter dérivent de cetteclasse abstraite et ajoutent les comportements spéci�ques. Il faut noter, qu'une fois encore,le motif de conception template method est utilisé a�n de structurer au mieux et optimiser lecode. Le diagramme de classes partiel de la �gure 8.5 présente les relations entre les classesutilisées pour mettre en oeuvre ces machines à états.

Figure 8.5 Diagramme de classes du motif de conception état.

FormAbstract Class

Champs

dataSetmenuId

Méthodes

activerdesactiverlibererRessources

SaisieClasse

AFormSaisieObservation…Class

SaisieEspece

AFormSaisieObservation…Class

SaisieProcess

AStateMachineClass

AFormSaisieObservationAbstract Class

Champs

listView

Méthodes

precedentsuivant

SaisieCommentaire

AFormSaisieObservationClass

SaisieDate

AFormSaisieObservationClass

IEtatSaisieObservationInterface

Méthodes

ConstructRequestFilter

AStateMachineClass

Abstract Class

Propriétés

RequeteType

Méthodes

etatPrecedentetatSuivantlibererRessources

SaisieEffectifs

AFormSaisieObservationClass

IEtatSaisieObservation

etatCourant

historiquesEtats

machineEtats

8.9 Hiérarchie des composants

A�n de faciliter l'implémentation future de nouveaux formulaires de saisies et en plus dudesign pattern état, les vues ont été organisées de façon hiérarchique. Tous les formulaires desaisie héritent de la classe abstraite AFormSaisieObservation. Celle-ci dé�nit les éléments debase d'un formulaire de saisie, à savoir :

� un bouton suivant et précédent ;� un label pour a�cher l'étape en cours ;� une référence vers le dataset contenant les données de mission ;� les méthodes répondant aux évènements sur les boutons ;� un identi�ant de menu.

Page 58: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 8. FAUNETRACKER - PDA 50

De plus, cette classe dé�nit les méthodes pour remplir le champ titre du formulaire ainsique le label a�chant l'étape en cours. Lors d'un clique sur le bouton suivant, celle-ci capturel'évènement, calcule l'identi�cateur 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 estlaissé aux classes descendantes. Ceci correspond à la dé�nition du motif de conception templatemethod (voir point 7.5.2).

/// Classe abstraîte spécifiant les comportements de base.pub l i c ab s t r a c t c l a s s AFormSaisieObservation : Form , IEta tSa i s i eObse rva t i on{

. . .5 // Méthode à implémenter dans les classes descendantes

pub l i c ab s t r a c t void su ivant ( ) ;. . .// Est appelé lorsque l'utilisateur clique sur le bouton "suivant"// Dans le design pattern , cette méthode est appelée "méthode patron"

10 pr i va t e void btSuivant_Click ( ob j e c t sender , EventArgs e ){

// Traitement factoriséi n t nextMenuId = menuId++;// Appel de suivant , qui est implémenté dans les sous -classes

15 t h i s . su ivant ( nextMenuId ) ;}

}

/// Classe qui concrètise "AFormSaisieObservation"20 c l a s s Sa i s i eDate : AFormSaisieObservation

{// Implémentation concrête de la méthode définie dans la classe abstraîte

AFormSaisieObservationpub l i c ov e r r i d e void su ivant ( i n t nextMenuId ){

25 s a i s i e . DateObservation = th i s . calendarDateObs . Se lect ionEnd ;s a i s i e . e ta tSu ivant (new Sais ieCommentaire ( s a i s i e , nextMenuId ) ) ;

}}

Listing 8.13 � Illustration du design pattern template method.

Les classes SaisieEffectifs, SaisieDate, AffichageRecapitulatif et en�n Saisie

Commentaire héritent directement de la classe abstraite AFormSaisieObservation et ajoutentdes composants graphiques selon le type de données à saisir et dé�nissent le comportement desdiverses méthodes abstraites héritées. SaisieEspece, SaisieClasse et SaisieActivites hé-ritent quant à elles d'une classe abstraite intermédiaire, AFormSaisieObservationListView.Celle-ci ajoute le composant graphique permettant d'a�cher une liste d'images (listview) etimplémente diverses méthodes liées à celui-ci, telle que loadListViewItems() qui charge deséléments et images dans la liste, à partir du �chier de mission.

Page 59: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 8. FAUNETRACKER - PDA 51

Figure 8.6 Diagramme de classes simpli�é de FauneTracker - PDA.

Authentification

Form

Clas

s

CommonTools

Stat

ic C

lass

ConfigReader

Clas

s

FrmMap

Form

Clas

sFrmMenu

Form

Clas

s

Program

Stat

ic C

lass

ConstructRequestFilter

ASta

teM

achi

neCl

ass

SaisieProcess

ASta

teM

achi

neCl

ass

Form

Abst

ract

Cla

ss

AFor

mSa

isie

Obs

erva

tion

Abst

ract

Cla

ss

Abst

ract

Cla

ss

AffichageRecapitulatif

AFor

mSa

isie

Obs

erva

tion

Clas

s

CtrlEffectifs

Use

rCon

trol

Clas

s

SaisieActivite

AFo

rmSa

isie

Obs

erva

tion…

Clas

sSaisieClasse

AFo

rmSa

isie

Obs

erva

tion…

Clas

s

SaisieCommentaire

AFor

mSa

isie

Obs

erva

tion

Clas

sSaisieDate

AFor

mSa

isie

Obs

erva

tion

Clas

sSaisieEffectifs

AFor

mSa

isie

Obs

erva

tion

Clas

s

SaisieEspece

AFo

rmSa

isie

Obs

erva

tion…

Clas

s

IEtats

Inte

rfac

e

TypeRequete

Enum

StructEffectifs

Stru

ct

IEta

ts

Effe

ctifs

mac

hine

Etat

s

etat

Cour

ant

type

Req

uete

ctrlF

emel

lesJ

uven

iles

Page 60: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

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éesdirectement sur un ordinateur de bureau, plutôt que sur un PDA. L'ordinateur est en e�et, bienplus adapté pour visualiser des cartes et avoir une vision globale des résultats. De plus, en casd'erreur dans les saisies ou pour apporter un complément d'informations aux observations, ilfaut prévoir un moyen d'éditer celles-ci. Or, cela compliquerait considérablement et inutilementl'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 observationsdirectement sur le PDA.

C'est pourquoi, il a été décidé de développer FauneTracker - Desktop. Cette applicationfonctionnera sur un ordinateur de bureau standard, utilisant Windows. Elle devra permettrede résoudre les problématiques soulevées ci-dessus. Les développements spéci�ques à cetteapplication seront vus dans ce chapitre. Le fonctionnement de l'a�chage et de la navigationsur 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.

9.2 Gestion des droits

La politique suivante a été adoptée pour la gestion des droits d'utilisation du programme :� Un utilisateur quelconque, peut utiliser l'application pour consulter les données.Il n'acependant en aucun cas la possibilité d'éditer la géométrie ou les attributs d'une obser-vation.

� Un observateur qui s'authenti�e lors de la connexion, hérite des droits de l'utilisateursimple. Il peut, qui plus est, éditer les observations dont il est l'auteur.

� Un responsable authenti�é hérite quant à lui, des droits de l'observateur. Il a en outrela possibilité d'éditer les données de tous les membres faisant partie de son grouped'utilisateurs.

52

Page 61: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 9. FAUNETRACKER - DESKTOP 53

Figure 9.1 Interface graphique de FauneTracker Desktop.

9.3 Informations sur une observation

La première vocation de l'application est de pouvoir consulter les informations sur les ob-servations. Pour cela, l'utilisateur dispose d'un outil de sélection, qui lui permet de choisir uneobservation. Dès la sélection d'une de celles-ci, le composant OservationDetailsComposanta�che ses di�érents attributs sur le formulaire principal. Voyons à présent la façon dont cesopérations ont été implémentées.

Tout d'abord, lorsque l'utilisateur clique sur le bouton permettant d'obtenir des informa-tions sur une observation, l'outil de sélection est activé :

pr i va t e void cho ixSe l e c t i on_Cl ique ( ob j e c t sender , EventArgs e ){

// Choix de l'actionca r t e . CurrentMapAction = ou t i l S e l e c t i o n ;

5 // Choix de la légendel b l S ta tu sAc t i on . Text = " S é l e c t i o n " ;

}

Cet outil est lié à une sur-couche de la carte appelée coucheSelection. Quand un élémentest 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 a�ecter l'observation elle-même.

Page 62: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 9. FAUNETRACKER - DESKTOP 54

Il faut à présent écouter les évènements intervenants sur l'outil de sélection, a�n de savoirsi une observation a été sélectionnée. Si c'est le cas, les opérations suivantes sont e�ectué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 informationssur l'observation ;

5. selon les droits de l'utilisateur du programme, a�chage des boutons permettant demodi�er l'enregistrement.

Ces opérations sont e�ectuées dans la méthode appelée lorsque le statut de l'outil desélection change. Voici le code correspondant :

pr i va t e void se lect ionAct ion_StatusChanged (ob j e c t sender ,MapActionStatusChangedEventArgs e )

{5 // Vérifie que l'action est terminée et qu'une observation a été sélectionnée

i f ( ( e . Status Id == MapAction . Completed )&& ( o u t i l S e l e c t i o n . Se l e c t edFeatu r e s . Count > 0) )

{// On récupère la table correspondant à la couche de sélection

10 FeatureDataTable s e l e c t edFeatureTab l e = o u t i l S e l e c t i o n . Se l e c t edFeatu r e s [ 0 ] ;// Récupère la première ligne de la première table , qui correspond// à l'observation sélectionnée puisqu 'on ne peut// sélectionner qu'un seul point à la foisDataRow consu l tedFeature = se l e c t edFeatureTab l e . Rows [ 0 ] ;

15 // Récupère la clé de l'observationi n t idx_observat ion = in t . Parse ( consu l tedFeature [ "OBJECTID" ] . ToString ( ) ) ;// Chargement des informations de l'observation dans le panneau latéralt h i s . observat ionDetai l sComposant . charge r In fo rmat ions (

idx_observat ion , o u t i l S e l e c t i o n . Se l e c t edFeatu r e s [ 0 ] . FeatureLayer .Name) ;20 // Vérifie les droits , et si l'utilisateur à les droits d'éditions ,

// active les boutons correspondants.i f ( v e r i f i e rD ro i tOb s e r va t eu r (

i n t . Parse ( consu l tedFeature [ " ID_Observateur" ] . ToString ( ) ) ) )ac t iveOrDeac t iveSa i s i eBut tons ( t rue ) ;

25 }}

Listing 9.1 � Méthode selectionAction_StatusChanged de FrmMain.

La méthode charger() de la classe OservationDetailsComposant, s'occupe d'interroger labase de données, a�n de prélever toutes les informations sur l'observation, puis de mettre enforme ces résultats pour l'utilisateur.

9.4 Édition d'une observation

9.4.1 Géographie

Le premier élément qui peut être à corriger dans une observation, est sa géométrie. Ene�et, un point représentant une observation statique a pu être mal placé, ou alors les segmentsd'une ligne-brisée peuvent, par exemple, ne pas être su�samment nombreux pour décrirecorrectement une observation de déplacement.

Page 63: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 9. FAUNETRACKER - DESKTOP 55

Il faut donc prévoir un moyen de corriger la géométrie des formes saisies. Le SDK d'ArcGISMobile propose di�érents outils permettant d'e�ectuer 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é. Cesoutils 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 modi�cations sont a�chées et enregistrées au sein de cette couche tampon. À la �nde son édition l'utilisateur possède le choix d'enregistrer ou de rejeter les modi�cations qu'ila apporté à la géométrie de la forme.

Le code suivant est appelé lorsque l'utilisateur a choisi un outil parmi le menu et permetde préparer l'édition :

// outil est l'outil choisit par l'utilisateur// legende est le texte à afficher dans la barre de statutpr i va t e void c h o i s i rOu t i l (MapAction ou t i l , S t r ing legende ){

5 // Choisit la légende affichée dans la barre de statutt h i s . l b l S ta tu sAc t i on . Text = legende ;// Désactive les boutons sans liens avec l'éditionact iveOrDeact iveNotSa i s i eButtons ( t rue ) ;// Choisi l'outil permettant d'insérer un vertex

10 ca r t e . CurrentMapAction = ou t i l ;// Si la couche de dessin est vierge ,// on copie la forme sélectionnée sur la couche de sélection ,// sur la couche de dessin , dans le but de l'éditer.i f ( coucheDess in . Geometry == nu l l

15 | | coucheDess in . Geometry . IsEmpty&& coucheSe l e c t i on . Se l ec tedGeometr i e s . Count>0)

{coucheDess in . Geometry = coucheSe l e c t i on . Se l ec tedGeometr i e s [ 0 ] ;

}20 }

Listing 9.2 � Méthode choisirOutil() de FrmMain.

L'utilisateur peut ensuite utiliser les di�érents outils d'édition et modi�er la forme selonses besoins. Lorsqu'il a �nit d'éditer celle-ci et s'il décide enregistrer les modi�cations, leprogramme doit e�ectuer les opérations suivantes :

1. remplacement de l'ancienne forme dans la table de la couche d'observations, par cellemodi�ée ;

2. enregistrement des changements e�ectués dans la table de la couche d'observations, dansla couche elle-même ;

3. transmission des modi�cations au serveur ;

4. suppression des formes dessinées sur la couche de dessin ;

5. désactivation des menus d'édition.

Le code décrivant ces opérations est présenté sur la page suivante.

Page 64: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 9. FAUNETRACKER - DESKTOP 56

pr i va t e void en r e g i s t r e rMod i f i c a t i on_Cl i c k ( ob j e c t sender , EventArgs e ){

// Récupère la table correspondant à la couche sélectionnéeFeatureDataTable tab l eCoucheSe l ec t i onnee = ou t i l S e l e c t i o n . Se l e c t edFeatu r e s [ 0 ] ;

5

// Récupération de la couche à modifierFeatureLayer coucheEditee = o u t i l S e l e c t i o n . Se l e c t edFeatu r e s [ 0 ] . FeatureLayer ;// Récupération de l'index de la colonne de la table ou sont stockées les

informations géométriquesi n t geometryIndex = coucheEditee . GeometryColumnIndex ;

10 // Récupération de la version éditée de la formeGeometry nouve l l eGeometr ie = coucheDess in . Geometry ;

// Récupération de l'enregistrement contenant les données de l'observationDataRow ed i tedFeature = tab l eCoucheSe l ec t i onnee . Rows [ 0 ] ;

15 // Mise à jour de la géométrie dans la table de// la couche d'observationsed i t edFeature [ geometryIndex ] = nouve l l eGeometr ie ;// Enregistrement des changements dans la couche// d'observations.

20 tab l eCoucheSe l ec t i onnee . SaveInFeatureLayer ( ) ;

// Transmission des modifications au serveurmobi l eSe rv i c e . PostFeaturesAsync ( "Mod i f i ca t i on forme" ) ;

25 // Suppression des formes sur la couche de dessincoucheDess in . Geometry . Clear ( ) ;// Remise des menu à leurs états initiauxrazAct ivat ionsMenus ( ) ;

}

Listing 9.3 � Méthode pour enregistrer les modi�cations (enregistrerModi�cation_click).

Figure 9.2 Formulaire d'édition des attributs d'une observation.

Page 65: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 9. FAUNETRACKER - DESKTOP 57

9.4.2 Attributs

L'utilisateur peut aussi avoir à renseigner une information supplémentaire sur une observa-tion ou alors modi�er une erreur. Il faut donc mettre à sa disposition une interface utilisateurpermettant 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 composantqui 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 nomde l'observateur et la date de saisie, restera proscrite car ces informations ne sont pas saisiespar l'utilisateur, mais directement par le programme et ne sont donc pas sujettes à des erreursde saisies.

Page 66: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 9. FAUNETRACKER - DESKTOP 58

Figure 9.3 Diagramme de classes simpli�é de FauneTracker - Desktop.

FrmEdit

Form

Clas

s Cham

ps btAn

nule

rbt

Enre

gist

rer

Mét

hode

s

btEn

regi

stre

r_Cl

ick

Frm

Edit

(+ 1

sur

char

ge)

FrmMain

Form

Clas

s Cham

ps btD

epla

cer

btEd

iter

btSu

pprim

erCA

CHE_

PATH

cart

eco

uche

Des

sin

couc

heSe

lect

ion

mob

ileSe

rvic

eou

tilD

epla

cerV

erte

xou

tilIn

sere

rVer

tex

outil

Sele

ctio

nou

tilSu

pprim

erVe

rtex

panM

apAc

tion

stat

usBa

rU

RL_

SERVI

CE

Mét

hode

s

annu

lerM

odifi

catio

nsTo

olSt

ripM

enuI

tem

_Clic

kbt

Edite

r_Cl

ick

btSu

pprim

er_C

lick

cart

e_Ex

tent

Chan

ged

choi

sirO

util

choi

xSel

ectio

n_Cl

ique

depl

acer

Vert

exTo

olSt

ripM

enuI

tem

_Clic

ken

regi

stre

rMod

ifica

tion_

Clic

kFr

mM

ain

Frm

Mai

n_Lo

adin

sere

rVer

texT

oolS

trip

Men

uIte

m_C

lick

mob

ileSe

rvic

e_Re

ques

tCom

plet

edse

lect

ionA

ctio

n_St

atus

Chan

ged

verif

ierD

roitO

bser

vate

ur

OservationDetailsComposant

Use

rCon

trol

Clas

s Cham

ps cbAc

tivite

scb

Clas

ses

cbEs

pece

sch

kGPS

dtpD

ateO

bsdt

pDat

eSai

sie

lblF

Alb

lFJ

lblIA

lblID

lblIJ

lblIP

lblM

Alb

lMJ

pbEs

pece

txtC

omm

enta

ires

txtO

bser

vate

ur

Prop

riété

s

Rea

dOnl

y

Mét

hode

s

char

gerC

bAct

ivite

sch

arge

rCbC

lass

esch

arge

rCbE

spec

esch

arge

rInf

orm

atio

ns (

+ 1

sur

char

ge)

enre

gist

rerM

odifi

catio

nsge

tIm

age

Ose

rvat

ionD

etai

lsCo

mpo

sant

rafr

aich

irsu

pprim

er

RouletteZoomHandler

Clas

s Cham

ps cart

eet

endu

eCar

teO

nMou

seW

heel

Mét

hode

s

Mou

seW

heel

Rou

lett

eZoo

mH

andl

erSt

artL

iste

ning

Stop

List

enin

g

BDDUtils

Stat

ic C

lass

Mét

hode

s

faitP

artie

DuG

roup

eDun

Res

pons

able

getC

onne

ctio

nge

tUtil

isat

eur

getU

tilis

ateu

rs

Dialogs

Stat

ic C

lass

Mét

hode

s

show

Erro

rDia

log

show

Stan

dard

Que

stio

nDia

log

show

War

ning

Dia

log

StructUsers

Stru

ct

FrmAuthentification

Form

Clas

s Prop

riété

s

Nom

Res

pons

able

Mét

hode

s

Dis

pose

Frm

Auth

entif

icat

ion

obse

rvat

ionD

etai

lsCo

mpo

sant

utili

sate

ur

roul

ette

Zoom

Han

dler

obse

rvat

ionD

etai

lsCo

mpo

sant

Util

isat

eur

Page 67: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

Chapitre 10

Déploiement

10.1 Introduction

Le cahier des charges établi lors de la capture des besoins, stipule qu'il est indispensableque le programme soit aussi simple que possible d'utilisation. Cette facilité doit cependantêtre étendue au-delà du programme lui-même. A�n que l'utilisateur �nal puisse installer leprogramme sur son ordinateur et son PDA sans recourir à l'aide d'un administrateur systèmeou 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 ordinateursde bureau FauneTracker - Desktop et FauneTracker - Con�guration, et le second pour la partiemobile FauneTracker - PDA.

10.2 Déploiement de FauneTracker pour PC

A�n de simpli�er la procédure d'installation pour l'utilisateur, la décision a été prise decréer un installateur unique, permettant de déployer en même temps FauneTracker - Desktopet FauneTracker - Con�guration. En plus d'installer ces deux logiciels, celui-ci ajoute des rac-courcis pour ceux-ci dans le menu démarrer de l'utilisateur et installe les diverses bibliothèques(DLL) nécessaires pour exécuter les composants du SDK d'ArcGIS Mobile.

10.3 Déploiement de FauneTracker - PDA

10.3.1 Génération d'un cache de cartes

La première étape du déploiement, consiste à créer un cache de carte à partir du servicemobile créé au point 6.3.4. Cela permet d'éviter lors de la première connexion du terminal,d'avoir à télécharger le fond de carte ainsi que toutes les données déjà saisie lors de la créationdu cache. De plus un outils d'ArcCatalog (Generate Mobile Service Cache) permet de générerun cache spécialement pour les appareils mobiles. Celui-ci occupera beaucoup moins d'espacedisque qu'un cache de carte standard et sera optimisé pour pouvoir être a�ché rapidementpar un dispositif possédant peu de ressources, tel qu'un PDA.

59

Page 68: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 10. DÉPLOIEMENT 60

Figure 10.1 Génération du cache de carte et synchronisation.

Deploiement

Développement deFauneTracker-PDA

ArcGIS Server

Service web

Exécutable (.EXE)

Cache de cartes

Application

Synchronisation quotidienne

Génération du cache de carte

10.3.2 Génération d'un �chier cab

Les application PocketPC sont installées par l'exécution de �chier CAB sur le PDA. Ils'agit de �chiers d'archives qui peuvent s'auto-extraire et qui contiennent les instructionsd'installation ainsi que tous les �chiers requis par l'application.

Dans le cadre du projet, un �chier CAB contenant l'application FauneTracker - PDA vadonc être généré. Cette application est elle-même compilée avec le cache de cartes, tel qu'onpeut le voir sur le schéma 10.2. Diverses DLL d'ArcGIS nécessaires au fonctionnement duprojet sont aussi incluses et des raccourcis pour l'utilisateur sont créés, a�n qu'il puisse lancerle programme à partir du menu démarrer.

10.3.3 Installateur Windows

Le choix de s'arrêter ici aurait pu être fait. En e�et l'utilisateur dispose d'un �chier d'ins-tallation à utiliser sur le PDA pour installer FauneTracker.

Figure 10.2 Création du �chier d'installation CAB.

Exécutable (.EXE)

Cache de cartes

Application

DLLArcGIS

Instruction d’installations, raccourcis, etc.

Géneration du fichier .CAB

Fichier de déploiement

FauneTracker.cab

Page 69: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 10. DÉPLOIEMENT 61

Cependant il doit tout de même e�ectuer certaines manipulations qui ne lui sont pasforcément familières : transférer le �chier CAB sur le PDA, naviguer sur le PDA pour retrouvercelui-ci et en�n l'exécuter. De plus, l'utilisateur doit e�ectuer les mêmes opérations pour unautre CAB fournis par ArcGIS et contenant les librairies du SDK d'ArcGIS Mobile permettantd'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 uninstallateur Windows. Ce dernier s'occupe de noti�er 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écessairede le connecter pendant l'exécution de l'installateur Windows), le gestionnaire d'applicationslancera automatiquement le transfert des di�érents �chiers CAB à destination du PDA, puisles exécutera sur celui-ci. La seule action nécessaire de l'utilisateur �nal sera donc d'exécuterl'installateur Windows, ce qui ne devrait pas lui poser de problème.

La première étape consiste à créer un �chier de con�guration INI, dont le chemin seraenvoyé en paramètre au gestionnaire d'applications mobiles. Ce �chier indique au gestionnaired'application les noms des �chiers CAB à installer sur le périphérique. Voici son code :

[ CEAppManager ]Vers ion = 1 .0// Indique le nom du composant à installer.Component = FauneTracker

5

// Composant[ FauneTracker ]

De sc r ip t i on = Faune Tracker pour PDA// Fichiers CAB à déployer , dans l'ordre d'installation.

10 CabFi les = AGMRuntime .CAB, SetupFauneTrackerPDA .CAB

Listing 10.1 � Code du �chier de con�guration ini.

Un composant pour l'installateur est ensuite créé. Celui-ci permet de personnaliser l'ins-tallateur en le programmant a�n d'e�ectuer des actions spéciales. Voici le code de la méthodela plus importante de celui-ci. Cette méthode permet de lancer le gestionnaire d'applicationsWindows CE en lui précisant le chemin du �chier INI préalablement conçu.

/// Lance le gestionnaire d'applications Windows CE ,/// avec le fichier de configuration ini.pr i va t e void runAppManager ( s t r i n g arg ){

5 // Récupération du chemin ou ActiveSync est installé ,// à partir de la base de registresRegistryKey keyActiveSync = Reg i s t ry . LocalMachine . OpenSubKey(CEAPPMGR_PATH) ;s t r i n g appManager = ( s t r i n g ) keyActiveSync . GetValue ( "" ) ;

10 i f ( appManager != nu l l ){

// Lance le gestionnaireProcess . S ta r t (

s t r i n g . Format ( "\"{0}\"" , appManager ) ,15 ( arg == nu l l ) ? "" : s t r i n g . Format ( "\"{0}\"" , arg ) ) ;

}e l s e{

// Si on ne trouve pas le gestionnaire => une exception est levée.20 throw new Exception ( " Imposs ib l e de l an c e r l e g e s t i o nna i r e d ' a pp l i c a t i o n s "

+ "de Windows CE.\ n V é r i f i e z l ' i n s t a l l a t i o n d ' ActiveSync . " ) ;}

}

Listing 10.2 � Lancement du gestionnaire d'applications Windows Mobile.

Page 70: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 10. DÉPLOIEMENT 62

Finalement, un installateur Windows est créé. Celui-ci contient les références des di�érents�chiers CAB, le �chier de con�guration INI ainsi qu'un appel vers le composant d'installationpersonnalisé. L'utilisateur �nal dispose donc, à présent, d'un installateur au format MSI qu'illui su�ra d'exécuter sur son PC de bureau, pour installer l'application sur le PDA. Le schéma10.3 illustre le fonctionnement de l'installateur.

Figure 10.3 Fonctionnement de l'installateur Windows.

Utilisateur final

Installateur MSI

Setup.iniFichiers CABComposant d’installation

Gestionnaire d’applicationsWindows CE

Fichiers CAB

Composé de

Utilise

Appelle

Installe

Page 71: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

Chapitre 11

Conclusion

Ce travail de diplôme a premièrement consisté en l'étude des di�érents moyens de mettreen ÷uvre une application de recensement de la faune sur un terminal mobile. Il a ensuite falluchoisir parmi ceux-ci le moyen le plus adapté, par rapport au cahier des charges et au tempsde 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 êtreréalisé.

Dans un premier temps, nous avons choisi d'étudier s'il existe un moyen de résoudre cetteproblématique, à l'aide de technologies libres. L'examen des normes SVG, SVG Tiny et SVGMobile qui permettent d'o�rir un rendu graphique a dont été e�ectué. 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, quiest à présent aussi une technologie libre. Malheureusement, nous avons vite été confronté àplusieurs problèmes. Les di�érentes machines virtuelles Java testées, sou�rent de latences trèsélevées et inacceptables pour l'utilisateur, dès que le programme devient un tant sois peuconsé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 Javaqui ont été testées n'implémentent pas correctement le support de cette norme. L'utilisationdu C# comme langage hôte a ensuite été envisagée, mais nous nous sommes aussi heurtés auproblè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émentationde FauneTracker avec leur aide. Après une étude détaillée des produits ArcPad et ArcPadApplication Builder, nous avons constaté que si ceux-ci permettent de répondre d'un point devue technique au cahier des charges, ils ne permettent pas d'o�rir à l'utilisateur une interfacehomme-machine possédant la simplicité requise. C'est pourquoi nous nous sommes penchéssur le SDK ArcGIS Mobile pour la technologie .NET. Ce produit fait partie d'ArcGIS Serveret fournit de nombreux outils permettant de développer une application interagissant avecdes données géographiques. Après une phase de tests, il s'est avéré que ce SDK répondaitparfaitement à nos besoins.

63

Page 72: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

CHAPITRE 11. CONCLUSION 64

Puisque l'implémentation en SVG n'était pas faisable et que ArcPad ne permettait pasd'obtenir une interface répondant de manière optimale au cahier des charges, nous avons choisid'implémenter le projet à l'aide du SDK ArcGIS Mobile, même si celui-ci demande un tempsde développement plus conséquent qu'ArcPad. La première étape de cette implémentation acommencé par l'installation logicielle et réseau de di�érents serveurs et clients, dans le butde posséder un environnement semblable à celui qui serait utilisé en production. Nous avonsensuite créé la base de données nécessaire à l'application. Le développement de la suite delogiciels 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 desaisir leurs observations faunistiques sur un PDA. Pour cela, cette application permetde naviguer et de se positionner sur une carte via un module GPS, d'e�ectuer desrequêtes pour consulter d'anciennes observations et d'e�ectuer une synchronisation avecun serveur, à travers une connexion internet. Tout ceci en mettant un accent particuliersur la réalisation d'une interface homme-machine très simple, a�n que l'application puisseêtre utilisée sur le terrain et qu'elle laisse le moins de place possible à des erreurs desaisies.

2. FauneTracker - Con�guration o�re la possibilité à un responsable de service de dé�-nir la mission de ses gardes-faune et de personnaliser les éléments des menus qui seronta�chés dans FauneTracker - PDA. Ce logiciel permet, de plus, d'éditer les élémentscontenus dans la base de données.

3. FauneTracker - Desktop permet à tout utilisateur de consulter depuis un poste debureaux les observations saisies par les gardes-faune. Ce programme permet aussi auxgardes-faune et responsables de service disposant de privilèges, d'éditer les saisies e�ec-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 estmême allé plus loin, dans la mesure où l'application développée, qui devait rester au stade deprototype, 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énieursde 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 plusieursfois lors du développement et émettre des critiques constructives a�n d'orienter celui-ci ou deremettre 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 êtretout à fait adaptées à leurs besoins pratiques. Cependant, dans le souci d'o�rir 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 recti�cation de certains comportementsdu programme puissent être réalisés facilement. Ceci a pu être réalisé grâce à l'utilisation deplusieurs motifs de conceptions (design patterns). De plus, de multiples exemples de codesreprésentants les fonctionnalités clés du projet ont été expliqués, détaillés et commentés ausein de ce mémoire.

Page 73: Recensement de La Faune Avec PDA ( .AXF d'Arcpad

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