D´veloppement d’une m´thode d’interpolation e e curviligne dans le syst`me d’information e g´ographique « ArcGIS » pour l’analyse spatiale e

Claudia Dittrich 20. Juin 2004

Sous la direction de : Prof. Dr. Peter Peinl (Referent) Dr. Nadou Cadic (Koreferent)

R´sum´ e e Le projet est n´ des ´tudes du peuplement piscicole des plans d’eau de l’unit´ e e e 1 du Cemagref Montpellier. de recherche « RIPE » En juin 2002 le « RIPE » a r´alis´ des ´chantillonnages sur le lac Chambon, e e e un lac artificiel situ´ au centre de la France ` cot´ de la ville d’Eguzon. e a e Grˆce ` cette campagne, les chercheurs ont obtenu des jeux de donn´es a a e qui contiennent des informations sur la biomasse et la profondeur du lac a ` des endroits donn´s. L’objectif attendu de l’´tude ´tait de permettre des e e e cartographies ` partir des donn´es ponctuelles montrant la r´partition spaa e e tiale de la densit´ piscicole sur le plan d’eau en tenant compte des facteurs e ´cologiques d´terminant la r´partition du peuplement piscicole. Dans ce cas, e e e la bathym´trie du lac est le facteur ´cologique. Elle est la caract´ristique nae e e turelle du lac d´terminant la r´partition spatiale des poissons. e e Au cours de ce projet les techniques classiques de cartographies des syst`mes d’information g´ographique (SIG) ont ´t´ analys´es. Elles ont ´t´ e e ee e ee bien examin´es en regard ` leurs application pour ce projet. L’´tude a d´e a e e montr´ que les fonctionnalit´s existantes ne peuvent pas ˆtre utilis´es pour e e e e nos besoins, car elles ne sont pas assez param´trables. Apr`s avoir montr´ e e e les limites des m´thodes d’interpolation dans le SIG, une interpolation cure viligne a ´t´ envisag´e pour pouvoir cr´er une carte pr´sentant la densit´ ee e e e e piscicole. Une m´thode d’interpolation appropri´e a ´t´ d´velopp´e. Ces caract´rie e ee e e e stiques et sa qualit´ sont montr´es dans le m´moire. e e e Pour pouvoir mettre en œuvre cet algorithme dans le SIG d’ESRI «ArcGIS», il fallait ´tudier les modes de stockages, analyser les possibilit´s d’acc`s e e e aux donn´es et examiner les possibilit´s d’adaptation des fonctionnalit´s e e e existantes. Ayant d´velopp´ une m´thode d’interpolation curviligne approe e e pri´e, elle a ´t´ impl´ment´e dans le SIG en utilisant l’environnement de e ee e e programmation propre ` ArcGIS « ArcObjects ». Elle sert ` interpoler les a a donn´es piscicoles et ` cr´er des cartographies de l’attribut interpol´. Le e a e e traitement spatial des donn´es provenant des ´chantillonnages et la cartoe e graphie des r´sultats obtenus pouvaient ˆtre mis en pratique. e e Mots cl´s : syst`me d’information curviligne (SIG), ArcGIS, ine e terpolation curviligne, cartographie, peuplement piscicole, densit´ e piscicole, facteurs ´cologiques, bathym´trie, ArcObjects e e

1

RIPE : Ressources Ichtyologiques en Plans d’Eau

2 Abstract The project is based on research about the fish population in water bodies done by the research group ”RIPE”1 of the Cemegref in Montpellier. In June 2002 ”RIPE” did measurements in the lake Chambon, an artificial lake, situated in the middle of France next to the town ”Eguzon”. Due to this research campaign, the scientists have obtained data including information about the biomass and the depths of the lake. The expected result of this research is to create cartographies based on the punctual data, showing the spatial distribution of the fish density in the body of water. The cartographies should consider ecological factors which determine the spatial distribution of the fish population. In this case the bathymetry of the lake is the most important ecological factor. It represents the natural characteristic of the lake, determining the distribution of the fish. In the course of the project the classical cartographical techniques of the geographic information systems (GIS) have been analysed and examined with regard to their project specific application. The study has shown that the existing functionalities can not accomplish the object, as they are not parametrable enough. Having shown the limits of the interpolation methods in the GIS, the curvilinear interpolation had been taken into account to create a map representing the fish density. An appropriate method has been developed. Its characteristics and suitability are shown by the thesis. To implement this algorithm in ESRI’s GIS ”ArcGIS”, it was necessary to study the storage modes, analyse the data access and to examine the possibilities to adapt already existing functionalities. Having developed an appropriate curvilinear interpolation method, it was implemented into the GIS by using the software’s development platform ArcObjects. It serves to interpolate the ichthyological data and to create cartographies of the interpolated attribute. The spatial preparation of the data originating from the sample values and the cartography of the obtained results were successfully accomplished. Keywords : Geographic information system (GIS), ArcGIS, curvilinear interpolation, cartography, fish population, fish density, ecological factors, bathymetry, ArcObjects

1

RIPE : Ressources Ichtyologiques en Plans d’Eau

3 Zusammenfassung Das Projekt ist aus den Forschungen uber den Fischbestand in Gew¨ssern ¨ a 1 von Cemagref in Montpellier entstanden. der Forschungsgruppe ”RIPE” ”RIPE” hat im Juni 2002 in dem See Chambon, ein k¨nstlicher See, der u sich in der Mitte Frankreich neben der Stadt ”Eguzon” befindet, Messungen vorgenommen. Dank dieser Forschungskampagne haben die Wissenschaftler Informationen uber die Biomasse und die Tiefe des Sees an bestimmen¨ ten Orten in Form von Datenpaketen erhalten. Erwartetes Ziel der Studie war es, ausgehend von den punktuellen Daten Kartographien zu erstellen, welche die r¨umliche Verteilung der Fischdichte in dem Gew¨sser zeigen. a a Die Kartographien sollen die ¨kologischen Begebenheiten, die die Verteio lung der Fischbev¨lkerung bestimmen, ber¨cksichtigen. In diesem Fall ist o u die Bathymetrie des Sees der bestimmende ¨kologische Faktor. Sie stellt das o nat¨rliche Charakteristikum des Sees dar, das die r¨umliche Verteilung der u a Fische bestimmt. Im Laufe des Projektes wurden die klassischen kartographischen Techniken der geografischen Informationssysteme (GIS) analysiert und im Hinblick auf ihre projektspezifische Anwendungsm¨glichkeit gepr¨ft. Die Studie o u hat gezeigt, dass die existierenden Funktionalit¨ten f¨r unsere Zwecke nicht a u genutzt werden k¨nnen, da sie nicht ausreichend parametrierbar sind. Nacho dem die Grenzen der Interpolationsmethoden aufgezeigt waren, wurde eine kurvenf¨rmige Interpolation in Betracht gezogen, um eine Karte erstellen zu o k¨nnen, die die Fischdichte repr¨sentiert. o a Eine geeignete Interpolationsmethode wurde entwickelt. Ihre Charakteristika und ihre Eignung sind in dieser Arbeit aufgezeigt. Um diesen Algorithmus in ESRIs GIS ”ArcGIS” umzusetzen, war es notwendig, die Abspeicherungsmodi zu erforschen, die Datenzugriffsm¨glichkeio ten zu analysieren und die Adaptionsm¨glichkeiten der bereits existierenden o Funktionalit¨ten zu pr¨fen. Nachdem eine geeignete kurvenf¨rmige Interpoa u o lationsmethode erarbeitet war, wurde sie unter Benutzung der programmeigenen Entwicklungsumgebung ArcObjects in dem GIS implementiert. Sie dient dazu, die ichtyologischen Daten zu interpolieren und Kartographien des interpolierten Attributs zu erstellen. Die r¨umliche Aufbereitung der a aus den Stichproben stammenden Daten, sowie die Kartographie der erhaltenen Ergebnisse, konnte praktisch umgesetzt werden. Stichw¨rter : Geografisches Informationssystem (GIS), ArcGIS, o kurvenf¨rmige Interpolation, Kartographie, Fischbev¨lkerung, Fischo o dichte, ¨kologische Faktoren, Bathymetrie, ArcObjects o

1

RIPE : Ressources Ichtyologiques en Plans d’Eau

4

Ehrenw¨rtliche Erkl¨rung o a
Hiermit versichere ich, dass ich die vorliegende Diplomarbeit selbst¨ndig a verfasst habe und keine anderen, als die angegebenen Hilfsmittel und Quellen verwendet habe. Diese Arbeit wurde in gleicher oder ¨hnlicher Form noch keiner anderen a Pr¨fungsbeh¨rde vorgelegen und wurde auch noch nicht ver¨ffentlicht. u o o

Kelkheim, im Juni 2004

5

Remerciement
Je tiens tout d’abord ` remercier la MTD de m’avoir accueillie dans cet a institut et d’avoir rendu possible la r´alisation du projet. e Je remercie aussi Dr. Nadou Cadic, mon responsable de stage permanent, qui a continu´ ` m’encadrer malgr´ son d´part du Cemagref. ea e e Je remercie ´galement le Prof. Dr. Peinl pour ses conseils et son attention e tout au long du stage. Mes remerciements vont ´galement ` Dr. Jean-Pierre Ch´ry, Dr. Jean-St´e a e e phane Bailly et Aym´rique Guibert pour leur aide sur place. e Je tiens aussi ` remercier Carole Delenne pour ses conseils sur les questions a math´matiques. e Un remerciement sp´cial ` Philippe Cleyet-Merle pour les corrections non e a seulement linguistiques. Un grand merci aussi ` tous les stagiaires qui m’ont souvent aid´e ` trouver a e a les bonnes expressions fran¸aises et qui ont su instaurer une bonne ambiance c pendant cette p´riode de stage. e

Avant Propos
Le projet a ´t´ r´alis´ en collaboration avec la Maison de la T´l´d´tection ee e e ee e de Montpellier. Le sujet ´tait donn´ par Dr. Nadou Cadic, ancien chercheur e e au sein de l’unit´ de recherche RIPE du Cemagref Montpellier, actuellement e d´l´gu´ r´gional du Conseil Sup´rieur de la Pˆche. ee e e e e L’objectif de l’´quipe RIPE est de r´pondre aux pr´occupations des gese e e tionnaires de plans d’eau, des collectivit´s territoriales et des professionnels e de la fili`re aquacole continentale. e Etant donn´ que le projet a ´t´ r´alis´ dans un institut de recherche en e ee e e France, j’ai d´cid´ d’´crire mon « Diplomarbeit » en fran¸ais. e e e c

Table des mati`res e
1 Pr´face e 1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Structure du rapport . . . . . . . . . . . . . . . . . . . . . . . 2 Probl´matique e 2.1 Description de la probl´matique . . . . . . . . . . . . . . . . . e 2.2 Buts du travail . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Objectif recherch´ . . . . . . . . . . . . . . . . . . . . . . . . e 3 Les Bases 3.1 Les SIG . . . . . . . . . . . . . . . . . . 3.1.1 Les modes de repr´sentation . . . e 3.2 ArcGIS . . . . . . . . . . . . . . . . . . 3.2.1 Famille de SIG . . . . . . . . . . 3.2.2 Stockage des donn´es en ArcGIS e 3.2.3 Adaptation . . . . . . . . . . . . 3.2.4 ArcObjects . . . . . . . . . . . . 3.2.5 Langage de programmation VBA 3.3 Analyse spatiale . . . . . . . . . . . . . 3.3.1 Spatial Filter . . . . . . . . . . . 3.3.2 Spatial Operator Interfaces . . . 3.4 Les algorithmes d’interpolation existants 4 Les 4.1 4.2 4.3 4.4 4.5 concepts de la solution Calcul des densit´s . . . . . . . . . . . e Traitement des donn´es dans le SIG . e Le syst`me de coordonn´es curvilignes e e Impl´mentation de l’algorithme . . . . e R´sum´ . . . . . . . . . . . . . . . . . e e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ArcGIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 8 8 9 9 10 10 11 11 12 17 17 19 26 28 31 35 35 37 44 46 48 48 49 51 52

5 Mise en pratique 53 5.1 Traitement des donn´es . . . . . . . . . . . . . . . . . . . . . 53 e 5.1.1 Donn´es GPS . . . . . . . . . . . . . . . . . . . . . . . 53 e 5.1.2 Donn´es filets . . . . . . . . . . . . . . . . . . . . . . . 54 e 6

` TABLE DES MATIERES 5.1.3 Donn´es acoustiques . . . . . . . . e Importation dans le SIG . . . . . . . . . . Programmation . . . . . . . . . . . . . . . 5.3.1 Acc`s aux donn´es . . . . . . . . . e e 5.3.2 Impl´mentation de l’algorithme . . e Guide d’utilisateur . . . . . . . . . . . . . 5.4.1 Avant-propos . . . . . . . . . . . . 5.4.2 Objet . . . . . . . . . . . . . . . . 5.4.3 L’utilisation . . . . . . . . . . . . . 5.4.4 Changer l’affichage . . . . . . . . . 5.4.5 Compl´ment : Calculer la moyenne e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7 . 55 . 57 . 65 . 65 . 69 . 92 . 92 . 92 . 93 . 100 . 100 . . . . 102 102 102 103 103

5.2 5.3

5.4

6 Conclusion et perspective 6.1 R´sultats atteints . . . . . . . . . e 6.2 Perspective . . . . . . . . . . . . 6.2.1 Ouverture du projet . . . 6.2.2 Application des r´sultats . e A

106 A.1 Class Diagram Key . . . . . . . . . . . . . . . . . . . . . . . . 107 A.2 Cartographies . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 115 B.1 User Tips « Create Contours » . . . . . . . . . . . . . . . . . 116 B.2 Code source . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 121 122 124

B

Table des figures Listings Index

Chapitre 1

Pr´face e
1.1 Motivation

Le traitement des donn´es r´sultant des ´chantillonnages faites dans la e e e nature est la base des sciences naturelles. Il y est indispensable de tenir compte des caract´ristiques naturelles des objets examin´s. Presque toue e jours on se sert des outils informatiques pour traiter les donn´es. Dans la e g´ographie, l’agronomie ou la sylviculture par exemple les syst`mes d’ine e formation g´ographique sont utilis´s. Souvent ils aident ` l’analyse spatiale. e e a Mais ils ne correspondent pas toujours aux besoins des scientifiques. Souvent on veut analyser un ph´nom`ne en tenant compte de ses caract´ristiques e e e naturelles. Les SIG souffrent (encore) du manque de possibilit´s de pae ram´trage de leurs fonctions. Les techniques classiques de cartographies ne e suffissent plus. Il s’agit par cons´quent de bien examiner les fonctionnalit´s e e existantes avec leurs limites et de les adapter ` ses propres besoins. L’adapa tation des fonctionnalit´s du SIG est le sujet trait´ dans cette ´tude. Les e e e faiblesses des SIG ainsi que l’impl´mentation des nouvelles fonctionnalit´s e e pour l’analyse spatiale seront montr´s. e

1.2

Structure du rapport

Le rapport est devis´ en six chapitres. e Apr`s ce chapitre de pr´face, la probl´matique et l’objectif recherch´ seront e e e e d´crits dans « Probl´matique ». Le troisi`me chapitre donnera un aper¸u e e e c dans la th´orie qui encadre ce projet. Le chapitre « Les concepts de la e solution » expliquera comment r´soudre le probl`me en th´orie. Le prochain e e e chapitre d´crira la mise en pratique du concept trouv´. Le dernier chapitre e e contient des r´sultats atteints et donnera une perspective d’application et e d’´largissement des r´sultats obtenus. e e

8

Chapitre 2

Probl´matique e
Le projet est n´ des ´tudes du peuplement piscicole des plans d’eau de e e l’unit´ de recherche « RIPE » du Cemagref Montpellier. e En juin 2002 le « RIPE » a r´alis´ des ´chantillonnages sur le lac Chambon, e e e un lac artificiel situ´ au centre de la France ` cot´ de la ville d’Eguzon. Le lac e a e est form´ par la retenue d’eau du barrage d’Eguzon, un barrage construit en e 1922 sur la rivi`re « La Creuse ». Avec ses 300 hectares c’est le plus grand e plan d’eau de la r´gion Centre. e

2.1

Description de la probl´matique e

Pour mesurer la bathym´trie du lac, l’unit´ de recherche a utilis´ un e e e GPS et un ´cho-sondeur. Equip´s de ces appareils de mesure, les chercheurs e e ont fait des parcours en bateau pour mesurer le lac. Le GPS renvoie les coordonn´es x (la longitude) et y (la latitude) en datum wGS84 1 . Les proe fondeurs sont obtenues ` partir de l’´cho-sondeur. Grˆce ` cette m´thode a e a a e de mesure on a obtenu environ 20 000 points GPS. Nous disposons donc de 20 000 points renseign´s en longitude, latitude et profondeur, qui permettent e de construire la bathym´trie du lac. e L’´cho-sondeur renvoie aussi des informations sur la biomasse d´tect´e. e e e L’appareil de mesure a fait 12 320 tirs. Dans ces points on a d´tect´ des e e esp`ces de poisson. Comme l’´cho-sondeur ne mesure que la masse de mati`re e e e vivante pr´sente sur une surface, on ne peut pas dire qu’on n’a d´tect´ que e e e des poissons. Les informations renvoy´es pourraient aussi provenir des cruse tac´s, des serpents ou d’autres organismes g´logiques. Pour chaque «poise e son» d´tect´, on connaˆ ses coordonn´es x et y plus z (x et y donn´s par e e ıt e e
Le datum WGS84 (= World Geodetic System 1984) est un syst`me de r´f´rence de e ee ´ GPS mis au point en 1984 par le d´partement de la d´fense des Etats-Unis afin de faciliter e e le positionnement et la navigation ` l’´chelle mondiale. Il est bas´e sur des positions a e e calcul´es grˆce aux mesures du syst`me de satellites DOPPLER est utilise le centre du e a e globe comme point de r´f´rence [HaAn03]. ee
1

9

´ CHAPITRE 2. PROBLEMATIQUE

10

GPS, et z ´tant la profondeur du fond du lac ` l’endroit o` le poisson a ´t´ e a u ee d´tect´ par l’´cho-sondeur). Pour chacun de ces « poissons », on connaˆ son e e e ıt poids estim´, ce qui doit permettre d’´tablir des cartographies de la densit´ e e e piscicole estim´e par l’´chosondage. e e En plus de ces 12 320 points, on dispose d’un jeu de donn´es correspone dant aux captures de « vrais » poissons dans environ 30 filets, dispos´s dans e trois zones du lac. Les zones sont les suivantes : la zone littorale, la zone sublittorale et la zone centrale. La zone littorale va d’une profondeur de 0 ` 8 a m`tres, la zone sublittorale de 9 ` 26 m`tres et la zone centrale de 27 m`tres e a e e jusqu’` la profondeur maximale du lac, qui est ` 48 m`tres. Une hypoth`se a a e e est faite : la variable « poisson » est suppos´e stratifi´e par type d’habitat. e e Ceci signifie que les peuplements de poissons sont homog`nes ` l’int´rieur e a e d’un type d’habitat donn´. Les trois zones sont consid´r´es comme trois e ee « strates », au sens statistique, c’est-`-dire au sein desquelles les donn´es a e peuvent ˆtre somm´es et moyenn´es. e e e L’objectif attendu de l’´tude est d’avoir des cartographies montrant la e r´partition spatiale de la densit´ piscicole pour pouvoir partager le lac en e e diff´rentes zones d’activit´. En regardant la densit´ de poisson on peut e e e d´terminer les meilleures places pour les pˆcheurs, les nageurs, le sport naue e tique et pour faire de la voile. En outre les cartes aident ` comparer les a r´sultats obtenus de l’´chantillonnage « filets » avec celles de l’´chantillonnage e e e « acoustique ». En plus on veut comparer la densit´ piscicole sur chacune e des strates statistiques.

2.2

Buts du travail

Il s’agit de trouver une solution pour pouvoir interpoler les donn´es ponce tuelles. Cette interpolation a pour but de cr´er des cartes avec les densit´s e e de poissons ` tout point d’une ´chelle choisie. Ce type d’interpolation est a e tr`s diff´rent de ceux offerts par les SIG qui restent dans le syst`me de e e e coordonn´es plus conventionnel. Les algorithmes d’interpolation existants e dans les SIG prennent l’orientation horizontale et verticale comme base. Ici, l’orientation est d´finie par l’´coulement du lac, qui a une importance e e ´cologique majeure dans la r´partition spatiale du peuplement piscicole. e e En outre il s’agit de calculer la densit´ moyenne dans toutes les zones. e

2.3

Objectif recherch´ e

L’objectif est de permettre une cartographie des densit´s piscicoles sur un e plan d’eau ` partir de donn´es ponctuelles (captures de poissons dans n filets, a e ou d´tection acoustique de poissons par l’´chosondage) en tenant compte e e des facteurs ´cologiques d´terminant la r´partition spatiale du peuplement e e e piscicole.

Chapitre 3

Les Bases
Dans ce chapitre je vais pr´senter les bases th´oriques qui sont n´cessaires e e e pour pouvoir comprendre la solution de probl`me choisie dans le cadre de e ce projet. J’explique tous les termes techniques qui apparaissent dans la r´alisation du projet et je donne un bref aper¸u dans le monde des SIGs. e c

3.1

Les SIG

Il existe plusieurs d´finitions de syst`mes d’information g´ographiques e e e 1 France, qui dit que (SIG). Je me r´f`re ` une d´finition g´n´rale d’ESRI ee a e e e « un syst`me d’information g´ographique est un outil informatique permete e tant de repr´senter et d’analyser toutes les choses qui existent sur terre ainsi e que tous les ´v´nements qui s’y produisent » et on y ajoute qu’un SIG ine e clut en outre les fonctionnalit´s des bases de donn´s conventionnelles. Dans e e quelle mesure ces fonctionnalit´s sont impl´ment´es, d´pend fortement du e e e e SIG choisi. Un SIG contient g´n´ralement plusieurs sortes d’objets g´ographiques qui e e e sont organis´s en th`mes que l’on affiches souvent sous forme de couches. e e Chaque couche contient des objets de mˆme type. Chaque objet est constitu´ e e d’une forme (la g´om´trie de l’objet) et d’une description (l’information dese e criptive). L’int´rˆt d’un utilisateur d’un SIG est d’effectuer des traitements ee divers sur ces objets. Dans le cadre de mon projet j’ai travaill´ avec le SIG « ArcGIS » d’ESRI. e Tout ce chapitre se base donc sp´cialement sur les particularit´s d’ArcGIS. e e
1

Environmental System Research Institute

11

CHAPITRE 3. LES BASES

12

3.1.1

Les modes de repr´sentation e

Pour la repr´sentation des donn´es sous forme num´rique, il existe deux e e e types fondamentalement diff´rents : Le mode raster ou mode grille2 et le e mode vectoriel. Chaque mode a ses avantages pour des tˆches diff´rentes a e et certains logiciels n’en proposent qu’un seul. Pour le traitement d’image le mode raster est plus utile. Les SIG par contre s’appuient sur le mode vectoriel. « Les SIG travaillent de fa¸on privil´gi´e en mode vecteur, mˆme s’ils sont c e e e capables d’int´grer, et parfois de traiter, des images raster. » [Bo02]. e Le mode raster Le mode raster est construit sur une partition r´guli`re souvent en carr´s. e e e 3 , dits pixels, servent d’´l´ments de base ` cette pr´Les carr´s ou cellules e ee a e sentation. Elles repr´sentent les primitives g´ographiques du mode raster. e e [RSV02] diff´rencie encore dans la partition des cellules d’´gales tailles (ree e gular tessellation) et des cellules de taille variable (irregular tessellation). Pour la regular tessellation on peut encore diff´rencier diff´rentes formes des e e cellules : soit des carr´s (dite grid squares), soit des cellules hexagonales. e Par la suite le terme raster sera utilis´ pour d´crire la partition r´guli`re e e e e dans des carr´s, car c’est cette partition utilis´ dans les raster d’ArcGIS. e e Tout pixel correspond ` une surface de la terre. Par cons´quence ils ont une a e taille fixe. La pr´cision d’image et de calcul augment proportionnellement e avec la r´duction de taille des pixels, qui m`ne ` l’augmentation du nombre e e a de pixels. A chacune des cellules correspond un attribut. Le pixel « [...] porte en attribut la valeur ´l´mentaire vi , caract´ristique de l’image.(ex. couleur, raee e diom´trie, voir figure 3.1) »[Bo02]. e Les jeux de donn´es raster d’entiers sont g´n´ralement associ´s ` une table e e e e a attributaire « .VAT ». La premi`re colonne de la table (« Value ») stocke la e valeur affect´e ` chaque cellule d’un raster. La deuxi`me colonne (« Count ») e a e stocke le nombre total de cellules du jeu de donn´es, appartenant ` la zone e a consid´r´e. ee Selon [Bo02], p. 61 l’attribut d’une cellule correspond ` une des trois cat´goa e ries d’informations g´ographiques raster : soit c’est une valeur visuelle (une e couleur), soit l’attribut correspond ` une valeur physique du terrain (l’altia tude, par ex.), soit il correspond ` une valeur calcul´e (raster s´mantique). a e e La derni`re cat´gorie d’informations g´ographiques raster est souvent utie e e lis´e en analyse spatiale, car on y travaille avec une r´partition r´guli`re e e e e des objets math´matiques simples qui repr´sentent des objets g´ographiques e e e
2 aussi appel´ mode matriciel, mode image ou mode maille ; suivant j’utilise toujours e l’expression raster et grille pour parler de la mˆme chose. e 3 Par la suite j’utilise les expressions pixel et cellule pareillement.

CHAPITRE 3. LES BASES

13

Fig. 3.1 – Principe des images raster [Bo02] souvent complexes. On trouve les rasters surtout dans les outils de traitement d’image. Une photographie a´rienne, une image satellite ou une image scann´e sont repr´e e e sent´es en mode raster. e Une photographie ou une image brute n’est pas encore une information g´ographique, car elle n’est pas localis´e. Elles deviennent des infore e mations g´ographiques si on associe ` chaque pixel les coordonn´es correse a e pondant ` l’objet du terrain qu’il repr´sente. Cette op´ration s’appelle le a e e g´or´f´rencement. e ee Le g´or´f´rencement peut ˆtre r´alis´ par un calage qui pourra ˆtre moe ee e e e e difi´ par la suite par des travaux de corrections et redressements. Un calage e « ...consiste ` attribuer ` tout point de l’image des coordonn´es d´duites a a e e a ` partir des coordonn´es de points remarquables pr´alablement identifi´s. e e e Pratiquement pour r´aliser un calage, on identifie au moins trois points sur e l’image et on leur associe leurs coordonn´es-terrain. A partir de ces infore mation, le logiciel est alors capable d’attribuer ` tout point de l’image des a coordonn´es-terrain d´duites. » [Bo02], p. 59 e e Les tics 4 sur des cartes de IGN5 sont un exemple pour des points remarquables pr´alablement identifi´s. Ils aident au calage. e e indexIGN Un pixel dans un raster est donc repr´sent´ par ses coordonn´es e e e (x, y) et une seule information g´ographique (son attribut). e Le mode raster est un mode de repr´sentation important vu l’augmene tation du nombre de donn´es re¸ues des satellites et leur utilisation pour e c
petits croix avec des coordonn´es-terrain indiqu´es e e Institut G´ographique National, qui a pour mission fondamentale d’assurer la produce tion, l’entretien et la diffusion de l’information g´ographique de r´f´rence en France e ee
5 4

CHAPITRE 3. LES BASES

14

des applications sp´cifiques comme la m´t´o et l’´tude de la pollution de e ee e l’environnement. Le d´savantage vient d’un besoin important de stockage de donn´es et de e e m´moire vive pour travailler avec une grande pr´cision. « A faithful object e e presentation has a consequence that objects occupy much memory space. In addition, operations on objects are then more time consuming. This is a clear drawback to this approach. »[RSV02], p. 37 C’est la raison pour laquelle les SIG s’appuient plus sur les informations en mode vectoriel. Le mode vectoriel Les SIG travaillent de fa¸on privil´gi´e en mode vectoriel, car pour stoc e e cker un objet en ce mode il faut moins d’espace m´moire et ce mode facilite e l’´tude des relations spatiales des objets (cf. § 3.3). e En mode vectoriel les ´l´ments g´om´triques sont repr´sent´s sous primitives ee e e e e g´om´triques. Ce sont les objets math´matiques ´l´mentaires suivants : e e e ee – Les points – Les polylignes – Les polygones Les trois primitives g´om´triques sont construites par des primitives de e e bases : des points et des arˆtes6 . Un point est repr´sent´ par ses coordonn´es e e e e et une arˆte par ses deux extr´mit´s (qui sont aussi des points). Il existe plue e e sieurs variants pour composer des polylignes et des polygones par des points et des arˆtes. Je me r´f`re sur la repr´sentation des primitives dans ArcGIS, e ee e qui ressemble ` celle d´crite dans [RSV02]. Dans ArcGIS une polyligne est a e compos´e d’un ou plusieurs segments, qui peuvent ˆtre d´connect´s. Un sege e e e ment en retour peut ˆtre soit une ligne, soit une courbe ou soit un arc. Pour e les arcs on diff´rencie les arcs circulaires et les arcs elliptiques. e Un arc circulaire est une portion d’un cercle. « A portion of a circle that connects two points optionally has measure, height and ID attributes at each endpoint. » [AODH03] Un arc elliptique est une portion d’une ellipse. « A portion of the boundary of a 2D ellipse that connects two points ; optionally has measure, height and ID attributes at each endpoint. » [AODH03] Une courbe est une courbe de Bezier. « A cubic Bezier curve defined between two points ; optionally has measure, height and ID attributes at each endpoint. » [AODH03] Dans ArcGIS le terme polyline pour d´crire une polyligne est donc troublant. e Il vaut mieux parler d’une polycurve, si on suppose que courbe signifie soit une ligne, soit une courbe de Bezier soit un arc. Un polygone est une suite des rings. « A collection of rings ordered by
6

edge en englais

CHAPITRE 3. LES BASES

15

their containment relationship ; optionally has measure, height and ID attributes. » [AODH03] Une ring en retour se compose des segments connect´s, e qui enferment une surface. « An area bounded by one, closed sequence of connected segments ; optionally has measure, height and ID attributes at each vertex. » [AODH03] Figure 3.2 montre les g´om´tries dans une geodatabase (base de donn´es e e e g´ographique). e

Fig. 3.2 – Geometrie dans une geodatabase [ENSG03] La forme dans laquelle un objet est pr´sent´e d´pend du point de vue. e e e Une parcelle peut ˆtre repr´sent´e soit par un polygone si on cr´e un plan e e e e de la r´gion par exemple et on veut savoir la division du terrain soit par un e point si on ne s’int´resse qu’` sa localisation sur un plan plus gros. e a « Le caract`re principal d´pend ´videmment du point de vue. Un objet e e e pourra ˆtre ou non retenu suivant l’int´rˆt qui lui porte le concepteur des e ee donn´es. Ainsi, les objets g´ographiques ne sont plus d´finis ` partir de la e e e a r´union ` d´terminer d’un ensemble de pixels de mˆme valeur, mais direce a e e tement par les composants qui leur ont ´t´ attribu´s. » [Bo02], p.63 ee e

CHAPITRE 3. LES BASES

16

Le fait que les informations soient exprim´es par des primitives g´ographiques e e est un avantage du mode vectoriel, car on peut acc´der directement aux obe jets par leur expression graphique. Le mode TIN Le mode TIN (Triangulated Irregular Network) se base sur la r´partition e de terrain en triangles. On parle simplement de triangulation. Les triangles peuvent avoir des tailles diff´rentes. A tout vertex des triangles une valeur e de l’´l´vation est attribu´e. Ces valeurs des points sont obtenues par l’interee e polation des valeurs connues ` des points (x, y). a « ArcInfo utilise une triangulation de Delaunay pour mod´liser un TIN e (chaque cercle circonscrit aux trois nœuds d’un triangle n’inclut aucun autre nœud) » [ENSG02] comme montr´ dans la figue 3.3. e

Fig. 3.3 – Triangulation de Delaunay [ENSG02] La triangulation est utilis´e pour des MNTs depuis les ann´es 1970. e e 7 ) repr´sentent le terrain sous forme Les MNT (mod`le num´rique de terrain e e e d’une grille, dont les cellules sont des carr´s. Cette repr´sentation est r´alis´e e e e e par une grille qui est projet´e ou drap´e sur une partie du terrain. Apr`s on e e e assigne des valeurs ` tout point localis´ ` une intersection de la grille. a ea « [...] un fichier contenant des points r´guli`rement r´partis sur une grille e e e qui aurait ´t´ cal´e virtuellement sur une partie du terrain. Chaque point ee e localis´ ` une intersection de la grille est renseign´ par une altitude : celle ea e de son homologue au sol. » [Bo02] Les MNTs se basent sur un nombre fini des valeurs mesur´es, ` partir d’elles e a les autres valeurs sont obtenues par interpolation. La figure 3.4 montre le principe des MNTs. L’avantage de ce mode est qu’on peut repr´senter tout param`tre natue e rel ; non seulement l’altitude, mais aussi la temp´rature, la pression de l’air e ou l’hypsom´trie, par exemple. Selon [Bo02] la repr´sentation de terrain en e e MNT est exploit´ par le mod`le 2D1/4, car la 2D1/4 associe une altitude e e en tout point de la base de donn´es, calcul´e ` partir de celle des points les e e a plus proches.
7

en anglais DEM = Digital Elevation Model

CHAPITRE 3. LES BASES

17

Comme la pr´sentation est assez complexe, la structure de donn´es des TIN e e a besoin d’un grand nombre de pointeurs. (cf. § 3.2.2).

Fig. 3.4 – Principes des MNT [Bo02]

3.2
3.2.1

ArcGIS
Famille de SIG

La soci´t´ ESRI a ´t´ fond´e en 1969 par Jack Dangermond et ´tait ee ee e e sp´cialis´e dans le conseil dans le domaine de l’occupation du sol. En 1981, e e ESRI lan¸a son premier logiciel SIG commercial appel´ ArcInfo. Dans les c e ann´es suivantes, ESRI d´veloppa un ensemble d’outils informatiques qui e e constitu`rent les premiers ´l´ments de ce qu’on appelle aujourd’hui un SIG e ee (Syst`me d’Information G´ographique) parmi ceux ArcView. ArcView est e e un SIG bureautique. En 1999 ESRI a ´dit´ une suite de logiciels, qui porte e e comme nom ArcGIS. L’´volution d’ArcView ` ArcGIS n’est pas une mise e a a ` jour simple, mais un d´veloppement d’une toute nouvelle famille de SIG, e comme le montre son nouveau nom. ArcInfo est la version la plus compl`te d’ArcGIS et propose ´galement e e un environnement « workstation ». Elle est donc compos´e de deux logiciels, e qui peuvent ˆtre install´s ind´pendamment l’un de l’autre : le «workstation» e e e et l’application bureautique « ArcInfo Desktop ». ArcInfo Workstation est compos´ d’un module principal « ARC » et de sous-modules lanc´s ` pare e a tir d’ARC. Il est bas´ sur le concept de boˆ ` outils et fait appel ` des e ıte a a commandes pour r´aliser des tˆches (lanc´es ` partir d’une fenˆtre de type e a e a e «invite de commandes»). ARC permet d’ex´cuter toutes les tˆches g´n´rales. e a e e ArcInfo Desktop est compos´ de trois modules avec des fonctionnalit´s diff´e e e rentes : ArcMap, ArcCatalog et ArcToolbox. Ces applications repr´sentent les fondements m´thodologiques et les clefs e e d’acc`s pour un utilisateur du SIG : Cartes, Donn´es et Outils. e e ArcGIS inclut toutes les fonctions de l’application Arc/INFO, qui ´tait un e SIG « command-driven » d’ESRI. Pour ceux qui ont commenc´ ` travailler ea

CHAPITRE 3. LES BASES

18

avec Arc/INFO et qui travaillent maintenant avec la nouvelle version d’ArcGIS 8.*, ArcGIS offre encore l’interface « command-driven » « Arc » pour taper des commandes.

Fig. 3.5 – ArcMap ArcMap est l’environnement de traitement des donn´es cartographiques e et de r´daction de documents cartographiques. Ses fonctions clefs sont la e visualisation, la cr´ation, l’´dition, la consultation, l’analyse et la mise ` e e a jour des donn´es cartographiques ou g´ographiques. e e Les informations g´ographiques s’affichent sur une carte sous la forme de e couches. Chaque couche repr´sente un type particulier d’entit´s. Une couche e e ne contient pas de donn´es mais renvoie ` une source de donn´es, qui est e a e stock´e sur le disque ou ailleurs. e ArcCatalog est une application orient´e sur les donn´es pour la gestion, la e e localisation et la navigation dans les donn´es spatiales. Toutes les connexions e aux donn´es n´cessaires sont y d´finies. Ces connexions peuvent appeler des e e e dossiers sur disque, des bases de donn´es en r´seau ou des serveurs internet e e « ArcIMS ». ArcToolbox est une application pour la mise en œuvre de toutes les op´rations de traitement g´ographique. Elle inclut les fonctionnalit´s d’anae e e lyse de donn´es et de conversion de formats. Cette application peut ˆtre e e consid´r´e comme la nouvelle interface de pr´sentation des fonctions de ee e

CHAPITRE 3. LES BASES

19

Fig. 3.6 – ArcCatalog g´otraitement d’ArcInfo. Dans l’ancien Arc/Info ces fonctions devaient ˆtre e e acc´d´s par une interface « command-driven ». Comme mentionn´ avant e e e ArcGIS offre encore une interface « command-driven », qui s’appelle « Arc » dont on acc`de aux mˆmes fonctions en tapant des commandes. e e

3.2.2

Stockage des donn´es en ArcGIS e

Dans les syst`mes d’information g´ographiques on ne s’int´resse pas e e e seulement aux informations attributaires, qui d´crivent un objet et qu’on e connaˆ d’une base de donn´es traditionnelle, mais aussi ` l’information ıt e a g´om´trique (la forme, la localisation d’un objet) et ` la topologie d’un objet. e e a L’information g´ographique est donc compos´e d’informations g´om´triques, e e e e descriptives et topologiques. Dans les SIG toutes ces informations sont stock´es e avec un objet. ESRI utilise le terme feature quand il parle d’un objet, qui repr´sente une e information g´ographique. Par la suite j’utilise le terme « objet », quand e je parle des informations g´ographiques plus g´n´rales et « feature » pour e e e parler des objets g´ographiques explicitement dans ArcGIS. e A tout objet stock´ dans des SIG sont attach´es deux informations : Ce e e sont des informations attributaires qui d´crivent un objet et des informae

CHAPITRE 3. LES BASES

20

tions g´om´triques. Pour repr´senter l’information g´om´trique on a besoin e e e e e d’une repr´sentation (l’information graphique). « Pour l’information grae phique, il s’agit de le repr´senter avec pour seule contrainte de rechercher la e meilleure lisibilit´ alli´e ` une certaine esth´tique. »[Bo02] e e a e Dans les SIG on fait la diff´rence entre les donn´es d’informations g´ograe e e phiques et les donn´es de source d’image. Pour les donn´es d’informations e e g´ographiques (des features) ArcGIS offrent trois diff´rents formats de stoe e ckage : Des shapefiles, des coverages et des geodatabases. Les shapefiles et les coverages sont bas´s sur des fichiers (file based feature e models). Ils stockent l’information g´om´trique d’un feature dans des fichiers e e binaires et utilisent des identifiants uniques pour lier cette information ` l’ina formation attributaire d’un objet stock´e dans une table d’un autre fichier. e Le geodatabase est un model de SGDB (syst`me de gestion de base de e donn´es)8 . Dans ce model les features sont stock´s comme des colonnes dans e e une table de base de donn´es relationnelle. Les colonnes contiennent les coe ordonn´es et l’information attributaire d’un feature ` la fois. Par la suite e a j’explique les diff´rents modes de stockages plus pr´cis´ment. e e e Shapefile Le shapefile est le format de donn´es natif d’ESRI. Parmi tous les formats e c’est le format de stockage le plus simple, car il ne stocke pas la topologie d’une feature. Cela veut dire, qu’il n’y a aucune information explicite sur les relations spatiales existants entre les objets (cf. § coverage pour une d´finition du terme topologie). C’est pour cela qu’il s’affichent plus vite que e les autres formats de stockage. Les informations relatives ` un ensemble d’entit´s sont stock´es dans une a e e table. Chaque enregistrement correspond ` une entit´ distincte. Ce type de a e table comporte toujours un champ nomm´ « Shape » dont la valeur est un e ´l´ment ayant la forme de l’entit´ correspondante. Cette table contient par ee e ailleurs les attributs d´crivant les entit´s. e e Le format shapefile est compos´ de plusieurs fichiers. Il y a au moins e trois fichiers associ´s ` un shapefile. Ils ont les extensions « .shp », « .shx » e a et « .dbf ». Le fichier « *.shp » stocke la g´om´trie de l’entit´ g´ographique, e e e e le fichier « *.shx » l’index de la g´om´trie et le fichier « *.dbf » inclut e e les donn´es descriptives des entit´s g´ographiques. Le dernier est un fichier e e e dBASE qui inclut les informations attributaires sous forme de table. Il peut y avoir encore des autres fichiers, qui sont cr´es quand on fait une e spatial join ou qu’apr`s avoir effectu´ une requˆte (cf. § 3.3). e e e La figure 3.7 montre l’affichage des shapefiles dans ArcCatalog.
8

en anglais : database management system feature model (DBMS)

CHAPITRE 3. LES BASES

21

Fig. 3.7 – Les shapefiles Coverage Le coverage est l’unit´ de base de stockage d’ARC/INFO. Ce format de e stockage est int´gr´ dans ArcGIS ` partir de la version 8. e e a La particularit´ des coverages est qu’on stocke explicitement la topologie e des objets avec leur information g´om´trique et attributaire. L’int´rˆt de ce e e ee stockage est d’acc´l´rer les traitements d’analyse spatiale sur de gros jeux ee de donn´es. e La topologie est la relation spatiale entre les objets. Elle d´finit comment e les objets sont li´s spatialement entre eux. Elle est utilis´e dans l’analyse spae e tiale. Grˆce ` elle on peut savoir si un polygone est inclus dans un autre par a a exemple. « Une information topologique est une information invariante par hom´oe morphisme, qui entre dans une analyse spatiale. C’est une information sur le positionnement ”relatif” des objets entre eux, alors que l’information g´om´trique est une information de positionnement e e ”absolu” li´ ` un r´f´rentiel. L’information topologique porte sur la g´om´trie, ea ee e e mais ne concerne que les propri´t´s comme le voisinage, l’intersection, l’inee clusion, la connexion, etc. » [Bo02] Les coverages g`rent donc la relation spatiale entre des features. Il y a trois e relations topologiques majeures : la connectivit´, la d´finition des surface et e e la contigu¨ e. Par la suite j’explique comment ces relations sont d´finies par ıt´ e ESRI. La connectivit´ exprime les relations entre des arcs et des nœuds et d´finit e e la longueur, la direction et la connectivit´ pour les arcs. Cela signifie que e pour un arc donn´, on connaˆ son nœud initial et son nœud final. e ıt Les coverages stockent la connectivit´ en gardant les points d’extr´mit´s e e e des arcs. Les arcs qui partagent un nœud sont des arcs connect´s (arc-node e topology). « Coverages store connectivity by recording the nodes that mark the endpoints of arcs. Arcs that share a node are connected. This is called arc-node topology. Each arc is a connected set of vertices with a from-node and a to-node. » [ESRI02] La d´finition de surface signifie qu’un polygone est d´fini par les arcs qui l’ene e tourent. Elle est garantie, car les coverages stockent tous les arcs connect´s e qui entourent un polygone (polygon-arc topology).

CHAPITRE 3. LES BASES

22

« Coverages define areas by keeping a list of connected arcs from the boundaries of each polygon. This is called polygon-arc topology. » [ESRI02] La contigu¨ e (ou l’adjacence) est la troisi`me relation topologique. Elle est ıt´ e aussi garantie dans les coverages. D’apr`s [OFPU96] la contigu¨ e est la e ıt´ propri´t´ des espaces attenants, qui se touchent. Elle exprime les relations ee entre des arcs et des polygones pour lesquels les arcs cr´ent des limites et e elle d´finit la surface et l’adjacence. Deux polygones sont donc contigus, s’ils e ont un arc en commun. Les coverages stockent les identifiants des polygones de tous les cot´s des e arcs. « Coverages store contiguity by keeping a list of the polygons on the left and right side of each arc. This is called left-right topology. » [ESRI02] La figure 3.8 montre les valeurs stock´es avec un feature dans un coverage. e

Fig. 3.8 – Table d’attributs d’une coverage On voit bien comment la connectivit´ et la contigu¨ e sont garanties en stoe ıt´ ckant les attributs « FNODE# » (nœud initial), « TNODE# » (nœud final) et « LPOLY# » (polygone ` gauche) et « RPOLY# » (polygone ` droite). a a Un coverage est compos´ de plusieurs fichiers. Les donn´es spatiales (poe e sition et topologie) sont stock´es dans des fichiers. Les donn´es descriptives e e et certaines informations topologiques sont stock´es dans des tables attribue taires d’entit´s (FAT = Feature Attribut Table). Ces tables sont au format e du SGBDR « INFO » et sont cr´´es quand on calcule la topologie sur la ee couverture. Elles sont g´r´es par une base de donn´es d’INFO. ee e A part des primary features (objet g´ographiques) un coverage peut avoir e aussi des secondary features suivants : 1. Tics : Ce sont des points de calage, dont on connaˆ les coordonn´es. ıt e « Tics are geographic control points. They represent known locations on the ground and are used to register and tranform the coordinates of the coverage. »[ESRI02] Ils servent ` g´rer l’affichage des coverages. a e 2. Links : Ce sont des vecteurs utilis´s pour ajuster la forme des coverages. e « Links are displacement vectors that are used to adjust the shape of coverages,... » [ESRI02] 3. Annotation : Ce sont des chaˆ ınes des caract`res, qui d´crivent un feae e ture affich´ sur le display. « Annotation features are text strings that e describe a feature when a map os displayed or printed. » [ESRI02]

CHAPITRE 3. LES BASES

23

La figure 3.9 montre l’affichage des coverages dans ArcCatalog avec leurs primary features et secondary features. On voit bien que tous les coverages incluent des tics, qui repr´sentent les quatre extr´mit´s des features stock´es e e e e dans un coverage. A part ¸a on voit que le coverage « contour lac » est constitu´ d’un feature c e de polygone et d’un feature d’arc plus des labelpoints, qui identifient chaque polygone individuellement.

Fig. 3.9 – Les coverage

Geodatabase La geodatabase est un nouveau mode de stockage des donn´es qui est e sorti en 2000 avec la version 8 d’ArcInfo. Une geodatabase permet la gestion des objets avec leurs informations descriptives et g´om´triques dans une base de donn´es. Une entit´ du monde r´el est e e e e e repr´sent´e par un objet correspondant ` un enregistrement dans une table e e a relationnelle. Contrairement ` une couverture, le sch´ma d’une geodatabase a e n’est pas pr´d´fini. L’utilisateur peut organiser les objets stock´s comme il e e e le souhaite. La structure des tables permettant le stockage des donn´es est e propre ` ArcGIS. On a besoin soit d’ArcInfo, soit d’ArcEditor pour faire la a gestion. Il existe deux types de geodatabase : la geodatabase personnelle et la geodatabase multi-utilisateurs. Dans la geodatabase personnelle les objets sont stock´s comme un fichier « .mdb » de Microsoft Access. e Elle est utilis´e pour seulement un utilisateur (single user editing). e La geodatabase multi-utilisateurs par contre offre la possibilit´ de l’´dition e e multi-utilisateurs grˆce au « versioning ». La geodatabase de multi-utilsaa teurs est une base de donn´es g´r´e dans un syst`me de gestion de base e ee e de donn´es (SGBD), comme la nouvelle version ORACLE, MS SQL Server, e

CHAPITRE 3. LES BASES

24

Informix, ou IBM DB2. On acc`de aux donn´es par l’ArcSDE9 , qui doit ˆtre e e e install´ avec le SGBD. e ArcSDE est le « gateway », ou interm´diaire entre les applications g´ograe e phiques et le SGBD. ArcSDE est une « [...]”passerelle” vers le SGBD sousjacent qui ajoute au SGBD plus de performance, d’interop´rabilit´, et de e e flexibilit´ dans la gestion d’un environnement multi-utilisateurs (versioning, e check-out check-in, ´dition d´connect´e, ...) ainsi que plus de possibilit´s de e e e e stockage (donn´es raster, objets complexes, API (C, Java). » [FAQ04] e La figure 3.10 montre le rˆle d’ArcSDE pour les clients ArcGIS. o

Fig. 3.10 – Le rˆle d’ArcSDE o Par exemple la geodatabase peut ˆtre impl´ment´e avec ArcSDE sur le SGBD e e e Oracle en utilisant le format Oracle Spatial. Selon [ON03] l’enregistrement de donn´es vectorielles dans un SGBD li´ ` e ea ArcSDE n’est pas r´alis´ de fa¸on pratique, car chaque objet vectoriel constie e c tue un enregistrement. Les objets g´om´triques forment les lignes d’une table e e et les propri´t´s d’un objet (les information descriptives) forment les coee lonnes attributaires. L’une des propri´t´s est sa g´om´trie. ee e e Une couche vectorielle est donc enregistr´e dans une seule table. e L’enregistrement d´pend notamment du SGBD utilis´. Certains offrent la e e possibilit´ d’enregistrer des donn´es g´om´triques comme Oracle Spatial. e e e e Il offre des types de donn´es d´duites ` l’enregistrement des donn´es spae e a e tiales. On y trouve par exemple le type « long raw » accueillant le format « compressed binary » de l’ArcSDE, un type binaire de longueur variable. L’´quivalent chez SQL serveur est appel´ « Image ». e e
9

ESRI’s Spatial Database Engine

CHAPITRE 3. LES BASES

25

On a aussi le type « Oracle Spatial normalized schema », qui « enregistre les coordonn´es dans une table dans laquelle chaque enregistrement contient e l’identifiant de l’objet vectoriel et les champs X, Y, Z. L’identifiant fait r´f´rence ` un enregistrement d’une autre table contenant les attributs. Cette ee a approche se conforme au mod`le g´om´trique normalis´ d´fini par le stane e e e e dard ”Simple Features Specifications for SQL”. » [ON03] Le type « Oracle Spatial geometry type » d’Oracle Spatial est la propri´t´ g´om´trique d’un ee e e objet. Elle est stock´e comme type SQL avec le nom « SDO GEOMETRY ». e Une nouveaut´ dans ce mode de stockage est la possibilit´ de d´finir ses e e e propres r`gles de topologie et de les stocker directement avec des objets e dans la geodatabase (voir figures suivantes). On les attribue aux features pour pouvoir garder la consistance g´om´trique quand on met ` jour la e e a g´om´trie d’un feature par exemple. e e

Le figure 3.11 montre l’affichage d’une geodatabase dans ArcCatalog.

Fig. 3.11 – La geodatabase Le figure 3.12 montre comment acc´der aux donn´es stock´es dans des e e e diff´rents modes de stockage. e

CHAPITRE 3. LES BASES

26

Fig. 3.12 – Acces aux donn´es par des applications [EF02] e

3.2.3

Adaptation

Le plate-forme de d´veloppement de la famille des applications ArcGIS, e tels que ArcMap, ArcCatalog et ArcToolbox, est l’ArcObjects. Toutes les commandes, menus ou barres d’outil font appel ` un code d’Arca Objects pour ex´cuter une op´ration. ArcObjects inclut toutes les fonctions e e accessibles dans les applications. ArcInfo fournit le kit de d´veloppement ArcObjects. On peut donc d´velopper e e des programmes dans l’interface de programmation d’ArcInfo en utilisant les ArcObjects. Il existe trois types de d´veloppement : e 1. Personnaliser l’environnement dans ArcMap ou ArcCatalog avec VBA (Visual Basic for Application), en d´veloppant des macros. VBA est e fourni avec le produit. 2. Etendre l’architecture d’ArcObjects en d´veloppant des composants e utilisant la norme COM. Pour ce type de d´veloppement on peut choie sir n’importe quel langage de programmation qui supporte la technologie COM, car ArcObjects s’appuie sur cette technologie. Ces composants peuvent ˆtre ajout´s dans l’ArcGIS comme dll10 . e e
Un Dynamic Link Library est int´gr´ dans l’application comme nouveau contrˆle ou e e o composant.
10

CHAPITRE 3. LES BASES

27

3. D´velopper des applications ind´pendantes en prenant les deux Arce e GIS contrˆles ActiveX, qui met ESRI ` la disposition : ArcMap Mapo a Control et ArcMap PageLayout. On peut les int´grer dans son application en utilisant un langage de e programmation qui autorise les contrˆles ActiveX. ArcMap MapCono trol et ArcMap PageLayout permettent d’avoir le map et le pagelayout display en plus d’acc´der ` beaucoup d’ArcObjects. e a Les modifications faites dans la fenˆtre « Personnaliser » ou bien le code ´crit e e en VBA pour personnaliser l’interface peuvent ˆtre enregistr´es en associae e tion ` un document ArcMap (*.mxd) ou ` un mod`le (*.mxt). Un mod`le a a e e est un template qui sert au point de d´part pour cr´er des nouveaux docue e ments. Les sauvegardes sont stock´es ` divers endroits sur le disque aux trois nie a veaux possibles de mod`le et document ArcMap. e L’illustration 3.13 montre les diff´rents niveaux, qui sont d´crits apr`s. e e e

Fig. 3.13 – Sauvegarde des personnalisations [ENSG03]

Niveau Normal template (Normal.mxt) C’est un mod`le sp´cial qui est automatiquement charg´ dans ArcMap e e e et qui stocke tous les param`tres personnalis´s d´finis pour l’interface utilie e e sateur. Il doivent ˆtre charg´ ` chaque utilisation d’ArcMap. Si ce template e ea est supprim´ toute l’application reprend l’´tat par default. e e Toute modification apport´e au Normal template est r´percut´e dans tous e e e les mod`les et documents. e

CHAPITRE 3. LES BASES Niveau Project template (*.mxt)

28

Les modifications apport´es ` un Project template sont r´percut´es dans e a e e tous les documents bas´s sur ce mod`le e e Niveau Document (*.mxd) Les modifications sont enregistr´es dans le document ArcMap courant. e Les documents ArcMap sont bas´s sur un mod`le : soit un Project template, e e soit directement sur le Normal template.

3.2.4

ArcObjects

Comme mentionn´ avant ArcObjects est l’environnement de programe mation de la famille ArcGIS. Plus sp´cifique, ArcObjects est la collection e des composants COM qui sont utilis´s par les applications d’ArcGIS. Arce Objects contient plus de 1200 objets, qui sont tous programm´s en C++ et e transform´s en code binaire. e L’illustration 3.14 montre le rˆle d’ArcObjects dans les applications. o

Fig. 3.14 – Vue simplifi´e sur ArcInfo [ESRI00] e ESRI a choisi COM comme m´thodologie de d´veloppement, car cette e e technologie offre une bonne performance et permet d’´tendre la fonctione nalit´ d’ArcObjects en utilisant des composants externes. La possibilit´ de e e connecter des composants diff´rents est possible grˆce au protocole COM. e a Un composant est une unit´ binaire de code r´utilisable. A cause de cela e e tous les objets peuvent ˆtre r´utilis´s au niveau binaire. Cela veut dire que e e e les d´veloppeurs n’ont pas besoin d’acc´der au code source, ni aux «header e e files», ni aux libraires objets pour ´tendre le syst`me. Il suffit de connaˆ e e ıtre l’interface d’un objet. Cette programmation bas´e sur des interfaces est e ´galement d´finie dans le mod`le de programmation COM dit «Interfacee e e based programming».

CHAPITRE 3. LES BASES

29

En programmant avec des objets COM, on ne travaille jamais directement avec l’objet COM. On y acc`de en passant par son interface. Les e interfaces COM sont un ensemble de fonctions reli´s logiquement. Les fonce tions sont appel´es par le client11 et impl´ment´s dans l’objet. Le client d’un e e e objet tient un pointeur sur l’interface de cet objet. Ce pointeur est consid´r´ ee comme un pointeur opaque, car le client ne poss`de pas de connaissances e en impl´mentation dans un objet et ne peut pas acc´der ` l’´tat de donn´e e e a e e d’un objet. Le client doit communiquer avec l’objet en utilisant les fonctions membres de son interface. Comme le client est isol´ de l’objet et de son e impl´mentation, COM est consid´r´ comme un contrat entre le client et l’obe ee jet. Si l’objet rompt le contrat, on ne sait pas comment le syst`me va r´agir. e e Il faut bien noter que COM est bas´ sur la confiance entre l’impl´menteur e e et l’utilisateur d’une fonctionnalit´. e La communication entre les objets est ´galement ´tablie par leurs intere e faces. Une interface d´finit les fonctions abstraites qui sont disponibles dans e toutes les instances d’une classe qui impl´mente cette interface. L’impl´mene e tation des fonctions doit ˆtre r´alis´e dans l’impl´mentation des classes. La e e e e fa¸on dont les fonctions d’une interface sont impl´ment´es est diff´rente entre c e e e les objets. Par cons´quent les classes h´ritent du type d’une interface, non e e son impl´mentation, qu’on appelle « type inheritance ». On peut consid´rer e e les classes et les interfaces comme le « Quoi » et le «Comment» de COM. Les interfaces d´finissent tous ce qu’un objet peut faire et les classes d´finissent e e comment les tˆches sont r´alis´es. a e e Dans les ArcObjects on distingue trois types de classes : les abstract classes, les coclasses, et les classes. Par la suite ces trois types de classes seront d´finis. e Abstract Classes « Elle d´finit des propri´t´s g´n´rales communes ` plusieurs ”sous-classes”. e ee e e a On ne peut pas cr´er (instancier) d’objet avec ce type de classe. » [ENSG03] e Elle repr´sente donc une sp´cification pour les instances des « sous-classes ». e e La classe « Geometry » est un exemple pour une abstract class. On ne peut pas cr´er un objet de type Geometry, mais on peut bien cr´er un objet de e e type Point. Cet objet impl´mente les interfaces d´finies dans sa classe de e e base « Geometry ». (voir figure 3.15)

11

l’utilisateur de la fonctionnalit´ e

CHAPITRE 3. LES BASES

30

Fig. 3.15 – Abstract Class : Geometry [ENSG03] CoClasses « Une CoClass 12 est dite ”creatable” : Un objet d’une CoClass peut ˆtre e cr´´ ` l’aide du mot-cl´ VBA ”New”. » [ENSG03] ee a e COM cr´e une instance de cette classe et passe l’objet r´sultant au client e e pour qu’il puisse utiliser les fonctions d´finies dans les interfaces de cette e classe. La classe « Point » est un exemple pour une CoClass. : Listing 3.1 – Exemple pour une CoClass Dim pPoint Set pPoint pPoint .X = pPoint .Y = Classes « Une Class est dite ”instantiable”, mais pas ”creatable” : elle ne peut pas cr´er directement un nouvel objet. Un objet d’une ”class” peut ˆtre cr´e e e e comme propri´t´ d’une autre classe ou grˆce ` une m´thode d’une autre ee a a e classe ». [ENSG03] Les objets de cette classe sont cr´es par des autres objets dans ArcObjects e et pass´s au client pour qu’il puisse les utiliser. e La classe « Feature » par exemple ne peut pas cr´er directement un nouvel e objet. Un objet de cette classe peut ˆtre cr´´ grˆce ` la m`thode « NextFeae ee a a e ture » d’un objet de la classe « FeatureCursor » pour donner seulement un exemple. « FeatureCursor » permet donc d’instancier l’objet « Feature ». Listing 3.2 – Cr´ation d’une classe e Dim pF e at u r e C u r s o r As I F e a t u r e C u r s o r ’ i n i t i a l i s a t i o n o f t h e p F e at u re C u rs or Set pF e at u r e C u r s o r = Nothing Set pF e at u r e C u r s o r = p F e a t u r e C l a s s P o i n t s . Update ( Nothing , F a l s e )
12

as IPoint = New Po in t ’ C r e a t i o n o f a p o i n t 2 ’ We a s s i g n t h e c o o r d i n a t e s t o t h e p o i n t 3 ’ x = 2, y = 3

Component Object Class

CHAPITRE 3. LES BASES Dim pFeature As I F e a t u r e ’ We o b t a i n a p o i n t e r i n p F e a t u r e p o i n t i n g on ’ the next e n t i t y of the f e a t u r e c l a s s pointed ’ by pF e at ur eC u r so r . Set pFeature = p F e a t u r e C u r s o r . NextFeature

31

Les ArcObject sont visualis´s dans les ArcObjects OMD (Object Model e Diagrams, foir figure A.1). « Les ArcObjects OMD utilisent la mod´lisation e UML avec quelques variantes afin de pouvoir repr´senter les sp´cificit´s de e e e la norme COM (notamment les interfaces). Ces modifications ajoutent des symboles pour repr´senter les diff´rents types de propri´t´s et m´thodes, e e ee e repr´senter les relations d’instantiation et marquer la diff´rence entre abse e tract classes, coclasses et classes. » [ENSG03]

Fig. 3.16 – Class Diagram Key

3.2.5

Langage de programmation VBA

Le langage utilis´ dans le cadre de ce projet est Visual Basic for Applie cations. Par la suite on trouvera un bref aper¸u dans ce langage. c Quand on programme avec Visual Basic, on a l’impression de travailler directement avec l’objet, mais en v´rit´ ce n’est pas le cas. Visual Basic cache e e le fait d’acc´der aux objets par ses interfaces pour simplifier. e Le traitement des pointeurs sur les interfaces est r´alis´ dans la « Visual Bae e 13 . La VBVM est stock´e comme DLL, qui sic Virtual Machine » (VBVM) e doit ˆtre install´e sur l’ordinateur avant l’ex´cution du code Visual Basic. e e e Pour mieux illustrer, ce qui est fait dans la VBVM, ci-dessous un exemple :
13

dite VB Rutime auparavant

CHAPITRE 3. LES BASES Listing 3.3 – L’interface par default Dim p C o l l e c t i o n a s New C o l l e c t i o n p C o l l e c t i o n .Add ” Avignon ” , ” M o n t p e l l i e r ” , ” Fulda ”

32

On pourrait penser qu’un nouvel objet est cr´e dans la premi`re ligne et e e pass´ au d´veloppeur dans la variable pCollection. Ensuite on y ajoute des e e valeurs en appelant la m´thode « Add » de la classe Collection. e Mais c’est faux. La m´thode « Add » n’appartient pas directement de la e classe. Avec Dim pCollection as New Collection on cr´e une instance (pCollection) e de la coclass Collection et on y assigne l’interface par default de cet objet. Cette interface s’appelle Collection et inclut la m´thode Add, qui ajoute les e valeurs ` l’objet. a Normalement on ne cr´e pas des objets dans une seule commande comme e montr´ pr´c´demment, car une coclass peut avoir plusieurs interfaces. Il faut e e e attribuer l’interface de la classe qui d´finit les m´thodes qu’on veut utiliser e e explicitement ` l’objet. Sinon, l’objet serait point´ sur l’interface IUnknown a e qui est l’interface par default. Voici comment cela se fait : Listing 3.4 – L’interface IPoint Dim pPoint As I P o i n t Set pPoint = New Po in t pPoint . PutCoords 1 0 0 , 1 0 0 Avec Dim....As on d´clare une variable qui pointe sur une interface de e la coclass Point (ici : IPoint). La VBVM lit le IID 14 de l’interface IPoint de la librairie d’objet d’ESRI. Dans la deuxi`me ligne on cr´e une instance de la coclass Point et au mˆme e e e temps on fait une Query Interface pour r´cup´rer le pointeur sur l’interface e e IPoint dans pPoint. On a donc ´chang´ l’interface IUnknow avec l’interface e e IPoint. Ensuite on appelle la m´thode PutCoords de la coclass Point. e Par convention presque toute classe Classname impl´mente une interface e IClassname. Cette interface est l’interface qui est la plus souvent utilis´e en e programmant avec cet objet. On peut facilement changer l’interface en faisant une Query Interface pour pouvoir ensuite utiliser les m´thodes d´finies dans une autre interface. e e La r´cup´ration d’un pointeur sur une autre interface est montr´e ci-dessous : e e e

14

IID est l’abr´viation pour Interface Identifier e

CHAPITRE 3. LES BASES Listing 3.5 – Query Interface Dim p F i e l d As I F i e l d Dim p F i e l d E d i t As I F i e l d E d i t ’ c r e a t e an i n s t a n c e o f c o c l a s s F i e l d Set p F i e l d = New F i e l d ’ QI f o r I F i e l d E d i t Set p F i e l d E d i t = p F i e l d ’ We a c c e s s t h e members o f I F i e l d E d i t , i n o r d e r ’ t o s p e c i f y t h e a t t r i b u t e s o f F i e l d , which a r e ’ n o r m a l l y read−o n l y . With p F i e l d E d i t . AliasName = ”FID” . Name = ”FID” . Type = ESRIFieldTypeOID End With

33

Souvent des interfaces ont des propri´t´s qui sont en v´rit´ des pointeurs sur ee e e d’autres interfaces. Avec VB on peut acc´der ` ses propri´t´s en enchaˆ e a ee ınant des interfaces. Listing 3.6 – Enchaˆ ınement des interfaces ’ s u p p o s i n g p F e a t u r e C l a s s had been c r e a t e d b e f o r e Dim t h a l w e g As I F e a t u r e ’ We a c c e s s t h e geometry o f t h e f e a t u r e ’ not o f t h e f e a t u r e C l a s s ! Set t h a l w e g = p F e a t u r e C l a s s . GetFeature ( 0 ) . Shape Le code suivant marche ´galement, mais est plus long : e Listing 3.7 – Mˆme r´sultat sans l’enchaˆ e e ınement ’ s u p p o s i n g p F e a t u r e C l a s s had been c r e a t e d b e f o r e Dim pFeature As I F e a t u r e Set pFeature = p F e a t u r e C l a s s . GetFeature ( 0 ) Dim t h a l w e g As IGeometry Set t h a l w e g = pFeature . Shape

CHAPITRE 3. LES BASES Curseur

34

Pour r´cup´rer une entit´ (feature) on prend soit la m´thode GetFeae e e e ture(ID :Long) sur IFeatureClass, qui renvoie juste une valeur (celle sp´cifi´ e e par l’ID), soit on utilise un curseur pour parcourir l’ensemble des donn´es. e « Un curseur est un pointeur qui donne acc`s ` un enregistrement ` la e a a fois.[...] Ils sont par exemple tr`s utiles pour lire ou ´crire une valeur d’ate e tribut. Un ”Feature Cursor” peut ˆtre instanci´ par un ”SelectionSet” (avec e e la m`thode ”Search”) qui repr´sente l’ensemble des objets s´lectionn´s pour e e e e une couche donn´e [...]. » [ENSG03] e Souvent on n’est pas int´ress´ par tous les enregistrements, mais par e e ceux, qui partagent une ou plusieurs propri´t´s. Pour ce cas il est possible ee d’appliquer un filtre au SelectionSet. Il y a deux types de filtres : le QueryFilter 15 et le SpatialFilter. 1. Un QueryFilter est comparable ` une requˆte SQL. Il filtre les objets a e selon un crit`re s´mantique. e e Ci-dessous un exemple d’un curseur qui filtre ses enregistrements avec un QueryFilter : Listing 3.8 – QueryFilter ’ supposing pFeatureClassLp ’ had been c r e a t e d b e f o r e Dim updateFeat As I F e a t u r e Dim u p d a t e Q u e r y F i l t e r As I Q u e r y F i l t e r ’ u p d a t e l a b e l p o i n t −t a b l e w i t h t h e ’ calculated density Set u p d a t e Q u e r y F i l t e r = New Q u e r y F i l t e r u p d a t e Q u e r y F i l t e r . whereClause = ”FID=” & squareID Set u p d a t e F e a t u r e C u r s o r = pF eat ureC l a ss Lp . Update ( u p d a t e Q u e r y F i l t e r , F a l s e ) Set updateFeat = u p d a t e F e a t u r e C u r s o r . NextFeature 2. « Un SpatialFilter est un QueryFilter qui inclut ` la fois des crit`res a e spatiaux et s´mantiques. Il permet de restreindre la ”s´lection” d’ene e tit´s ` partir d’une couche ou classe d’entit´ selon contraintes g´om´e a e e e triques. » [ENSG03]. Comme il est d´riv´ du QueryFilter, il h´rite de ses propri´t´s et e e e ee m´thodes. Il est donc possible de combiner des crit`res s´mantiques e e e et spatiaux dans un filtre spatial. Le diagramme FIG. 3.17 montre le rapport entre les filtres et les curseurs sur les features.
15

expression adopt´ d’ESRI e

CHAPITRE 3. LES BASES

35

Fig. 3.17 – extrait de Geodatabase, sch´ma simplifi´ par [ENSG03] e e Le filtre spatial qui ´tait mentionn´ pr´c´demment est une possibilit´ pour e e e e e trouver des relations spatiales entre des features. Mais il y en a d’autres. Dans la prochaine section je vais expliquer quelles possibilit´s existent dans e ArcGIS pour ´tudier les relations spatiales entre des g´om´tries. e e e

3.3

Analyse spatiale

Une des plus grandes attentes d’un utilisateur d’un SIG est d’analyser les propri´t´s g´om´triques des g´om´tries. Il s’agit de trouver des relations ee e e e e spatiales entre des objets. ESRI fournit deux possibilit´s pour l’analyse spae tiale : le Spatial Filter et les Spatial Operator Interfaces. Bien qu’il ait d´j` ea ´t´ ´voqu´ dans la section des curseur, je reparle ici du Spatial Filter plus eee e en d´tail. e

3.3.1

Spatial Filter

On utilise le Spatial Filter pour cr´er une requˆte spatiale. e e Pour d´finir le filtre, on doit sp´cifier trois propri´t´s. Ces propri´t´s sont e e ee ee obligatoires. A part eux, il y en a d’autres qu’on peut sp´cifier suppl´mene e tairement. Le crit`re le plus int´ressant, c’est le crit`re spatial. Il est comparable ` e e e a la clause WHERE de SQL. Le crit`re spatial est sp´cifi´ dans la m´thode e e e e SpatialRel. Toutes les relations spatiales sont d´finies dans les constantes e ESRISpatialRelEnum. Il y en a dix, expliqu´es dans [AODH03] : e

CHAPITRE 3. LES BASES Constant ESRISpatialRelUndefined ESRISpatialRelIntersects ESRISpatialRelEnvelopeIntersects

36 Description No Defined Spatial Relationship. Query Geometry Intersects Target Geometry. Envelope16 of Query Geometry Intersects Envelope of Target Geometry. Query Geometry Intersects Index entry for Target Geometry (Primary Index Filter). Query Geometry Touches Target Geometry. Query Geometry Overlaps Target Geometry. Query Geometry Crosses Target Geometry. Query Geometry is Within Target Geometry. Query Geometry Contains Target Geometry. Query geometry IBE(InteriorBoundary-Exterior) relationship with target geometry.

ESRISpatialRelIndexIntersects

ESRISpatialRelRelTouches ESRISpatialRelOverlaps ESRISpatialRelCrosses ESRISpatialRelWithin ESRISpatialRelContains ESRISpatialRelRelation

En outre on sp´cifie la g´om´trie de r´f´rence utilis´e pour filtrer les entit´s. e e e ee e e C’est la g´om´trie ` laquelle le crit`re spatial est appliqu´. e e a e e En fin il faut transmettre au filtre le nom du champ contenant la g´om´trie e e des entit´s filtr´es. Par convention ce champ est appel´ « SHAPE ». e e e Ci-dessous un exemple d’un filtre spatial qui sert ` regarder si un point se a trouve ` l’int´rieur de la g´om´trie pFeatureClassHalfs. a e e e Listing 3.9 – Spatial Filter ’ s u p p o s i n g p F e a t u r e C l a s s H a l f s and ’ p F e a t u r e had been c r e a t e d b e v o r e ’ get a reference to the Spatal F i l t e r Dim p S i d e S p a t i a l F i l t e r As I S p a t i a l F i l t e r Set p S i d e S p a t i a l F i l t e r = New S p a t i a l F i l t e r ’ s e t t i n g t h e Geometry , GeometryField and ’ S p a t i a l R e l parameters With p S i d e S p a t i a l F i l t e r Set . Geometry = pFeature . Shape ’ p o i n t f e a t u r e . GeometryField = ”SHAPE” . S p a t i a l R e l = ESRISpatialRelWithin

CHAPITRE 3. LES BASES End With ’ execute the f i l t e r Dim pFeatureCursorWithin As I F e a t u r e C u r s o r Set pFeatureCursorWithin = Nothing Set pFeatureCursorWithin = pFeatureClassHalfs . Search ( p S i d e S p a t i a l F i l t e r , False ) ’ Featureclass of s p l i t t e d polygon

37

Comme mentionn´ avant le filtre spatial est d´riv´ du QueryFilter. Il e e e h´rite donc de sa propri´t´ WhereClause. Pour limiter les r´sultats on peut e ee e d´finir la clause WHERE, sinon on sp´cifie les champs qu’il doit renvoyer e e (propri´t´ SubFields). En limitant le nombre de champs on gagne de peree formance. Pour s’assurer que l’index des champs ne change pas, tous les champs seront disponibles, mais seulement ceux dont les noms sont indiqu´s e dans SubFields seront remplis avec des valeurs. On utilise l’index quand on veut avoir ou mettre la valeur d’un champ au lieu d’utiliser son nom. Quand on est en train d’´diter les valeurs d’une table, il est quand mˆme e e recommandable de laisser renvoyer tous les champs pour ´viter des erreurs e en ins´rant des nouvelles valeurs. e Les propri´t´s WhereClause et SubFields sont optionnelles. Par default le ee filtre met * comme valeur pour SubFields et revoie tous les champs. Selon [AODH03] il n’est pas possible d’utiliser order by sous ArcObjects. Si des r´sultats ordonn´s sont d´sir´s, il faut utiliser ITableSort. Une m´thode e e e e e qui permet l’utilisation de order by est pr´vue pour les prochaines releases. e

3.3.2

Spatial Operator Interfaces

Ces interfaces sont impl´ment´es par la plupart des coclasses. Elles offrent e e des importantes op´rations spatiales, comme des op´rations topologiques, e e des calculs de distance et des Relational Operators (expliqu´ ci-dessous). e IRelationalOperator Certaines g´ometrie-coclasses impl´mentent l’interface IRelationalOperae e tor qui permet d’´tudier les relations spatiales entre deux g´om´tries. Cette e e e interface fournit des m´thodes (des Relational Operators 17 ), qui comparent e les g´om´tries et renvoient des bool´ens, indiquant si la relation demand´e e e e e existe ou pas. Les cocloasses Point, Multipoint, Polygone, Polyline, Envelope et GeometryBag impl´mentent cette interface et permettent d’utiliser e les Relational Operators. On ne peut prendre seulement les g´om´tries qui e e
17

expression adopt´e d’ESRI e

CHAPITRE 3. LES BASES impl´mentent l’interface IRelationalOperator. e FIG. 3.18 montre tous les m´thodes existants dans IRelationalOperator. e

38

Fig. 3.18 – L’interface IRelationalOperator, [AODH03] Souvent on veut r´aliser une requˆte par rapport ` la g´om´trie d’un e e a e e ensemble d’objet. On pourrait appliquer un filtre spatial pour chaque objet de r´f´rence successivement. Dans ce cas on perd des performances, car il ee faudrait parcourir une boucle sur tous les features plusieurs fois. [ENSG03] propose une autre m´thode qui est beaucoup plus performante e quand il s’agit d’une grande quantit´ d’entit´s. Le propos est de construire e e une seule « g´om´trie » ` partir des g´om´tries de r´f´rence et d’appliquer e e a e e ee le filtre spatial une seule fois ` l’ensemble des entit´s. On cr´e une geometry a e e bag, qui contient des r´f´rences aux g´om´tries d’entr´e. Cela se fait ` l’aide ee e e e a d’une ´num´ration de g´om´tries. e e e e L’exemple suivant montre, comment construire une seule « g´om´trie » ` e e a partir des g´om´tries de la FeatureClass « baseFeatureClass » qui se trouvent e e dans la zone littorale. Listing 3.10 – Construction d’une g´om´trie ` partir de plusieurs g´om´tries e e a e e ’ Enumeration Dim pEnumGeom As IEnumGeometry Set pEnumGeom = New EnumFeatureGeometry Dim p Q u e r y F i l t e r As I Q u e r y F i l t e r Dim pEnumGeometryBind As IEnumGeometryBind ’ QI b e t ween IEnumGeometryBind and IEnumGeometry Set pEnumGeometryBind = pEnumGeom Dim pGeomFactory As IGeometryFactory Dim pGeom As IGeometry Dim pRelOp As I R e l a t i o n a l O p e r a t o r ’ Output F i l t e r t o b u i l d t h e geometry Set p Q u e r y F i l t e r = New Q u e r y F i l t e r ’ S e t t i n g t h e WhereClause

CHAPITRE 3. LES BASES p Q u e r y F i l t e r . whereClause = ” zone =’ l i t t o r a l ’ ” ’ Bind a l l g e o m e t r i e s o f b a s e F e a t u r e C l a s s ’ which comply t h e where c l a u s e t o t h e enumeration . pEnumGeometryBind . BindGeometrySource p Q u e r y F i l t e r , b a s e F e a t u r e C l a s s Set pGeomFactory = New GeometryEnvironment ’ c r e a t i o n o f a geometry bag c o n t a i n i n g r e f e r e n c e s ’ t o g e o m e t r i e s ; r e t u r n e d by t h e i n p u t ’ geometry enumerator Set pGeom = pGeomFactory . CreateGeometryFromEnumerator (pEnumGeom) Set pRelOp = pGeom

39

Ensuite on utilise l’interface IRelationalOperator pour regarder si un point se trouve ` l’int´rieur de la g´om´trie cr´´e auparavant. a e e e ee Listing 3.11 – Relational Operator ’ R e l a t i o n a l Operator I f ( pRelOp . C o n t a i n s ( p o i n t F e a t u r e . Shape ) ) Then MsgBox ” Po in t e s t dans l a zone l i t t o r a l ” Else MsgBox ” Po in t n ’ e s t pas dans l a zone l i t t o r a l ” End I f IProximityOperator « IProximiyOperator permet de trouver le point le plus proche d’un point donn´ sur une g´om´trie, ou de calculer la distance entre deux g´om´tries e e e e e existantes. » [ENSG03] L’interface est impl´ment´e par les coclasses Point, Multipoint, Polygone, e e Polyline, Envelope, ainsi que par les sous-classes de Segment. La figure FIG. 3.19 montre l’interface IProximiyOperator. Ces m´thodes peuvent ˆtre tr`s utiles pour ´tudier un r´seau d’ordinae e e e e teurs. Par exemple si on veut connaˆ ıtre le « switch » le plus proche d’un ordinateur pour le connecter sur un r´seau existant. L’ordinateur correspond e au point donn´ et le cˆble de r´seau correspond ` la g´om´trie (une polye a e a e e ligne). On en d´duit alors le nœd le plus proche sur une polyligne. e Les Proximity Operators pourraient aussi ˆtre utile lorsqu’on veut connece ter des ordinateurs sans connaˆ ıtre comment agencer les cˆbles. On utilise a l’interface pour trouver les distances les plus courtes entre les ordinateurs.

CHAPITRE 3. LES BASES

40

Fig. 3.19 – L’interface IProximiyOperator, [AODH03] Pour calculer la distance la m´thode returnDistance(other : IGeometry) cale cule la distance la plus courte entre les g´om´tries en se servant du th´or`me e e e e de Pythagore comme montr´ dans la figure FIG. 3.20. e La figure FIG. 3.21 montre comment marche la m´thode ReturnNeareste Point.

Fig. 3.20 – Calculs de distance [AODH03]

CHAPITRE 3. LES BASES

41

Fig. 3.21 – M´thode : ReturnNearestPoint [AODH03] e ITopologicalOperator Cette interface est impl´ment´e par les coclasses Point, Multipoint, Poe e e lygone, Polyline et GeometryBag. Les op´rations topologiques permettent de construire des nouvelles g´om´tries bas´es sur des relations topologiques e e e entres des g´om´tries existantes (comme l’intersection ou l’union). « Ils pere e mettent de disposer d’objets mieux adapt´s aux crit`res d’analyse et de e e d´finir de nouveaux objets d’´tude pour les affiner et les approfondir.[...]la e e g´n´ration d’objet peut aussi ˆtre utilis´e pour ´laborer des objets de s´lection e e e e e e plus cibl´e. C’est le cas par exemple des outils dits buffer ou zone tampon. » e [Bo02] Il est important d’indiquer ici que ces op´rations ne s’appliquent que e sur les g´om´tries topologiques consistantes, dite « simple ». e e Voici un extrait de [AODH03] qui explique quand une g´om´trie est topoloe e gique consistante. « For Point Collections, this means that all duplicate Points (Points with the same X and Y coordinates) are removed (unless they are attribute aware and have different attributes). For Segment Collections, this means that all duplicate Segments are removed, all Crossing Segments are split into non-crossing segments (The crossing point becomes a vertex for all of the connected segments), all overlapping segments are broken into non-overlapping segments (the overlap becomes a new Segment), and all non-connected Paths are connected. For Polygons, this means that all overlapping Rings are split into non-overlapping Rings, all Exterior and Interior Rings have the proper orientation, and all non-closed Rings are closed. » [AODH03] L’interface ITopologicalOperator offre des m´thodes pour v´rifier si une g´oe e e m´trie est simple ou pas. Si elle ne l’est pas, on peut la modifier pour qu’elle e soit topologiquement correcte avec la m´thode simplify. e La figure FIG. 3.22 montre ce qui se passe quand une g´om´trie est « sime e plifi´e ». e

CHAPITRE 3. LES BASES

42

Fig. 3.22 – M´thode : Simplify de ITopologicalOperator, [AODH03] e Ci-dessous un exemple d’une op´ration topologique. Dans cet exemple e le premier feature est coup´ en deux morceaux (deux g´om´tries) selon une e e e ligne.

CHAPITRE 3. LES BASES Listing 3.12 – Op´ration topologique e ’ s u p p o s i n g f e a t r e c l a s s e s had been c r e a t e d b e f o r e ’ declare variables Dim l i n e F e a t u r e As I F e a t u r e Dim p P o l y l i n e As I P o l y l i n e Dim p o l y F e e a t u r e As I F e a t u r e Dim leftGeom As IGeometry Dim rightGeom As IGeometry Dim p T o p o l o g i c a l O p e r a t o r As I T o p o l o g i c a l O p e r a t o r Dim pGeometry As IGeometry

43

’ perfom t h e s p l i t t i n g o p e r a t i o n Set p o l y F e e a t u r e = p F e a t u r e C l a s s P o l y g o n s . GetFeature ( 0 ) Set l i n e F e a t u r e = p F e a t u r e C l a s s L i n e s . GetFeature ( 0 ) Set pGeometry = p o l y F e e a t u r e . Shape Set p T o p o l o g i c a l O p e r a t o r = pGeometry Set p P o l y l i n e = l i n e F e a t u r e . Shape On Error GoTo E r r o r H a n d l e r p T o p o l o g i c a l O p e r a t o r . Cut p P o l y l i n e , leftGeom , rightGeom La figure FIG. 3.23 montre la liste compl`te des op´rations topologiques e e possibles.

Fig. 3.23 – L’interface ITopologicalOperator [AODH03]

CHAPITRE 3. LES BASES

44

3.4

Les algorithmes d’interpolation existants dans ArcGIS

L’interpolation pr´dit des valeurs des cellules d’un raster ` partir d’un e a nombre limit´ de points d’´chantillonnages. Plusieurs m´thodes sont dispoe e e nibles pour cr´er des rasters ` partir de donn´es ponctuelles. Pour savoir e a e quelle m´thode convient le mieux il faut regarder le ph´nom`ne ` mod´liser e e e a e et la r´partition des points d’´chantillonnage. e e Il y a quatre algorithmes d’interpolation impl´ment´s dans ArcGIS : e e 1. IDW 2. Spline 3. Kriging 4. Natural Neighbour Tous ces algorithmes d’interpolation existant dans le SIG prennent l’orientation horizontale et verticale comme base. Ils calculent les distances dans un syst`me de coordonn´es orthogonales et interpolent les valeurs en prenant e e les distances lin´aires. On appelle cela l’interpolation lin´aire. e e Dans l’outil ArcGIS ces algorithmes sont utilis´s pour cr´er des rasters ou e e des TINs par exemple (cf. § 3.1.1 parties mode raster et mode tin). Dans le cas d’un ´chantillon irr´gulier l’interpolation sert ` calculer des points e e a interm´diaires ne faisant pas partie des ´chantillons de d´part. e e e L’algorithme IDW (Inverse Distance Weighted) suppose que le poids des points voisins diminue en fonction de la distance. Dans ArcMap il y a trois param`tres accessibles : Il faut sp´cifier soit le nombre de points voisins qui e e seront utilis´s pour calculer la valeur d’un point, soit un tampon18 dans lee quel on devra chercher tous les voisins. Ayant sp´cifi´ un rayon de recherche, e e un cercle autour de chaque point sera cr´´ dans lequel on retrouvera les ee points servant ` l’interpolation. a L’impl´mentation de l’IDW permet ´galement de choisir une barri`re limie e e tant la recherche de points d’´chantillonnage en entr´e. Cette barri`re est e e e un jeu de donn´es polylignes qui pourrait repr´senter une falaise, une cˆte e e o d’eau, une crˆte ou toute autre interruption du paysage. e En outre il faut choisir la puissance (p), qui indique l’influence des points voisins. Une puissance faible donne davantage d’influence aux points plus ´loign´s, ce qui offre une surface plus lisse. Plus p augmente, plus le poids e e des points ´loign´s diminue et les points voisins d´terminent alors la valeur e e e interpol´e. C’est pour ¸a que cet algorithme est appel´ « Algorithme d’Ine c e verse Pond´r´ de la Distance ». ee « IDW estimates cell values by averaging the values of sample data points in the vicinity of each cell. The closer a point is to the center of the cell being
18

buffer en anglais

CHAPITRE 3. LES BASES

45

estimated, the more influence, or weight, it has in the averaging process. This method assumes that the variable being mapped decreases in influence with distance from its sampled location. » [ESW04] Voici la formule de l’algorithme d’IDW : z(x) =
n 1 p i=0 ( di ) ∗ z(i) n 1 p i=0 ( di )

(3.1)

avec : z(x) : la valeur du point x ` interpoler a n : nombre de valeurs mesur´es e z(i) : valeur mesur´e du point i e di : la distance du point x au point i p : puissance La Spline est un algorithme qui effectue une interpolation polynomiale par morceaux. L’algorithme minimise la courbure de la relation tout en s’assurant que chaque point donn´ conserve sa valeur. La courbe (la spline) e peut changer de forme aux points (xi , yi ), appel´s nœuds. Il existe des e splines lin´aires (des polynˆmes de degr´ 1), des splines quadratiques (des e o e polynˆmes de degr´ 2) et des splines cubiques (des polynˆmes de degr´ 3). o e o e La m´thode est appropri´e si les variations spatiales de la variable sont e e relativement faibles (sinon surestimation). Le kriging (=le krigeage) est bas´ sur des techniques de g´ostatistique pour e e calculer l’autocorr´lation entre les points de mesure. Il utilise ` la fois l’´loige a e nement et la variance des valeurs repr´sent´es. e e Selon [Co04] le krigeage se distingue des autres m´thodes d’interpolation par e ses caract´ristiques d’estimation non biais´e et d’estimation d’une variance e e associ´e. e L’avantage de cette m´thode est qu’elle prend en compte le comportement e spatial sp´cifique de la variable ´tudi´e. e e e En th´orie cette m´thode est optimale du point de vue de la pr´cision obe e e tenue. En pratique, les performances sont li´es au choix judicieux de divers e param`tres qui d´pendent de la r´partition des points de mesure. De plus, e e e cet algorithme peut impliquer des grandes puissances de calcul. Le Natural Neighbour (= l’algorithme par plus proche voisin) est une m´thoe de g´om´trique qui consiste ` g´n´rer autour de chaque point une r´gion de e e a e e e voisinage. Elle permet une approche par objet selon les diagrammes de Voronoi sans d´passement des points originaux. La r´gion entourant un point e e du semi initial est dite r´gion de Voronoi. e Cette m´thode regarde les pentes et calcule les distances en tenant compte e du relief de la surface.

Chapitre 4

Les concepts de la solution
Comme mentionn´ en haut le SIG offre des possibilit´s d’interpoler des e e donn´es ponctuelles avec des diff´rents algorithmes d’interpolation pour e e cr´er des cartes montrant une r´partition r´guli`re de l’attribut d’entr´e. e e e e e Comme param´trage on peut sp´cifier tous les compl´ments d´terminatifs de e e e e l’algorithme choisi. Prenons par exemple le IDW on sp´cifie soit le nombre e de valeurs d’influence i soit la distance maximale d, dont on doit chercher les valeurs d’influence et la puissance p. Comme option on peut en outre choisir une polyligne comme limite g´ographique. Si on pr´cise cette fronti`re, l’ale e e gorithme va calculer toutes les valeurs incluses dans cette r´gion et pas les e valeurs en dehors. Comme sortie il va cr´er un raster, dont on peut choisir e la r´solution (= taille des pixels). e La possibilit´ de choisir une limite correspond en g´n´ral ` la demande du e e e a commanditaire de calculer la densit´ pour chaque habitat. On pourrait cr´er e e des lignes repr´sentant les limites de chaque zone et calculer la densit´ dans e e chaque zone d´limit´e par la ligne correspondante. e e Mais la grande faiblesse de l’impl´mentation des algorithmes d’interpolation e dans ArcGIS est, qu’elle ne prend pas en compte les caract´ristiques natue relles des objets examin´s, qui peuvent n´cessiter une autre orientation. e e Ici, la bathym´trie du lac est la caract´ristique naturelle. La bathym´trie e e e repr´sente la topographie du sol. Elle est le facteur ´cologique d´terminant la e e e r´partition spatiale du peuplement piscicole. Elle d´termine les zones d’hae e bitat, car les habitats sont d´pendants des profondeurs. e La bathym´trie d´termine l’´coulement de l’eau. L’´coulement s’oriente dee e e e puis les zones peu profondes vers les zones plus profondes. La ligne de convergence des lignes des plus grandes pentes, suivant laquelle se dirigent les eaux, s’appelle le thalweg du lac. Par la suite, j’appellerai la forme du thalweg l’orientation curviligne du lac. De plus l’interpolation dans le SIG ne marche pas bien pour un faible nombre de donn´es d’entr´e. En ce qui concerne la capture des « vrais » poissons e e (les donn´es filets) on n’a que trente valeurs de mesures, dont seulement dix e

46

CHAPITRE 4. LES CONCEPTS DE LA SOLUTION

47

pour chaque zone. L’illustration 4.1 montre la carte cr´´e en interpolant les ee densit´s de poissons ` partir des donn´es filets avec l’algorithme IDW stane a e dard d’ArcGIS. On voit que les valeurs sont interpol´es lin´airement sans e e prendre en compte l’orientation curviligne du lac. En plus il y a des espaces dans la partie en bas o` le lac est plus courb´ et o` il y a moins de valeurs u e u de mesures.

Fig. 4.1 – Algorithme d’interpolation standard A cause des limites de param´trage des fonctionnalit´s d’interpolation e e existantes, ces algorithmes ne sont pas assez puissants ou « intelligents » pour pouvoir les appliquer ` la probl´matique trait´e dans ce projet. C’est a e e pour cela, qu’il faut trouver une m´thode d’interpolation qui prend en compte e les facteurs ´cologiques d´terminant la r´partition des poissons. e e e L’int´rˆt est de d´velopper une m´thode d’interpolation spatiale qui prend ee e e

CHAPITRE 4. LES CONCEPTS DE LA SOLUTION

48

comme base l’orientation curviligne du lac pour pouvoir calculer la densit´. e

4.1

Calcul des densit´s e

Pour pouvoir calculer la densit´ de poisson il faut connaˆ la zone attee ıtre nante d’un filet pos´, car un filet ne repr´sente pas un volume a priori. Cette e e zone attenante pourrait ˆtre consid´r´e comme le volume ´chantillonn´ ` e ee e e a l’endroit o` le filet ´tait pos´. u e e Le commanditaire m’a propos´ un m`tre de « d´placement lat´ral » pour e e e e chaque heure de pose : Un filet de deux m`tres de largeur pos´ pendant 24 e e heures peut ˆtre assimil´ ` une surface de 2m ∗ 24 = 48m2 . e ea Comme tous les filets ont ` peu pr`s la mˆme taille et qu’il y a toujours une a e e chaˆ de sept filets pos´e ` un endroit dans le lac, on peut dire qu’une pose ıne e a correspond au volume attenant de 48m2 ∗ 7 ∗ prof ondeur[m]. La profondeur d´pend de l’endroit o` le filet a ´t´ pos´. e u ee e On suppose qu’un filet pos´ ` un endroit sp´cifique capture tous les poissons ea e qui se trouvent dans le volume sp´cifi´ en haut. e e

4.2

Traitement des donn´es dans le SIG e

D’abord il faut construire la bathym´trie du lac ` partir des relev´s GPS e a e / ´cho-sondeur et ` partir du p´rim`tre du lac qui a ´t´ cr´´ par M. Heintz e a e e e e ee [HE02], un ancien ´tudiant du Mast`re SILAT, qui a d´j` travaill´ sur ce e e ea e lac avec des donn´es des campagnes pr´c´dentes. Malheureusement on ne e e e dispose pas de carte IGN1 que l’on pourrait scanner et g´or´f´rencer. e ee La bathym´trie permet d’avoir le p´rim`tre et les profondeurs du lac et e e e d’analyser les pentes. Il faut donc pr´parer les donn´es GPS et les passer e e comme entr´e au SIG. e Il faut savoir que les relev´s GPS et ´cho-sondeur sont asynchrones, car e e un point GPS est relev´ toutes les deux secondes environ et l’´cho-sondeur e e par contre fait 2 ou 3 tirs par seconde. Par cons´quent il y a plusieurs e valeurs de profondeur pour chaque point GPS. Il faut donc assigner une valeur unique de profondeur ` chaque relev´ en (x, y). Le commanditaire m’a a e demand´ de prendre la valeur de profondeur minimal de toutes les valeurs e de profondeur pour un point GPS. Un point GPS est exprim´ en degr´s et minutes. La latitude 46,2587 par e e exemple, signifie qu’on est ` 46 degr´s, 25 minutes et 87 centi`mes de minute a e e de latitude. L’erreur de pr´cision du GPS est de 20 m`tres, car la sensibilit´ est e e e de 1/100e de minute de longitude (= 18,52 m) et de 1/100e de minute de
1

cartes officielles en France

CHAPITRE 4. LES CONCEPTS DE LA SOLUTION

49

latitude (= 12,85 m). Une minute de latitude pour Eguzon correspond ` a 1285 m`tres. Elle varie selon la longitude du point (1852 m ` l’´quateur, 0 e a e m au pˆle Nord, 1285 m pour Eguzon). La longitude ne change pas quelle o que soit la position du point. Une minute de longitude correspond toujours a ` 1852 m`tres. e Une fois cr´´ le TIN on peut le transformer dans une grille, qui permet ee d’avoir une autre repr´sentation de l’altitude du lac. e Ensuite il faut trouver un moyen pour construire le thalweg ` partir du a MNT. Apr`s avoir construit cette ligne, dans une prochaine ´tape on pose les e e filets au bon endroit du lac. On se sert d’un fichier Excel qui contient toutes les poses avec des informations des habitats o` les filets ´taient pos´s (voir u e e plus bas pour la classification sur les diff´rents habitats). On a aussi des e informations g´ographiques des filets, mais qui ne sont pas d´taill´es. Il e e e manque les coordonn´es des filets. En plus on a des cartes non digitalis´es e e qui indiquent les endroits o` les filets ont ´t´ pos´s. Il faut donc trouver u ee e une possibilit´ pour positionner les filets d’une mani`re automatique (en e e g´n´rant les coordonn´es des filets) ou de les poser ` la main en regardant e e e a les cartes et en prenant l’information g´ographique qui est stock´e dans le e e fichier Excel. Lorsque les donn´es seront rentr´es dans le SIG on arrivera ` e e a avoir des objets g´ographiques repr´sentant des filets (ou plutˆt des poses) e e o pos´s dans un mod`le num´rique de terrain, qui ont comme attribut d’abord e e e seulement le poids en gramme.

4.3

Le syst`me de coordonn´es curvilignes e e

La cl´ de tout calcul suivant est le thalweg. Cette ligne de convergence e des plus grandes pentes repr´sente l’axe de r´f´rence. On la consid`re comme e ee e ˜ ˜ le nouvel axe X dans le syst`me de coordonn´es curvilignes. X repr´sente les e e e points kilom´triques selon le thalweg. On d´cide de rester dans un syst`me e e e ˜ est donc la perpendiculaire de tout de coordonn´es orthogonales. L’axe Y e point sur la ligne de thalweg. Il s’agit de transformer les coordonn´es (x, y) des donn´es filets dans un e e ˜ ˜ nouveau syst`me de coordonn´es bas´ sur les axes X et Y. Ci-dessous sera e e e expliqu´ comment transformer un point (x, y) dans ce syst`me de coore e donn´es curvilignes. e x est la distance curviligne du point (x, y) ` partir du point z´ro. Le point ˜ a e z´ro dans ce syst`me de coordonn´es est l’extr´mit´ sud du thalweg. On e e e e e calcule alors la distance du point (x, y) selon le thalweg. y est la distance du point (x, y) la plus courte du thalweg. C’est la dis˜ tance entre le point (x, y) et le thalweg le long de la perpendiculaire ` ce a dernier. Pour distinguer les points se trouvant ` gauche du thalweg et ceux a a ` la droite, on dit que tous les points ` gauche du thalweg seront not´s a e

CHAPITRE 4. LES CONCEPTS DE LA SOLUTION

50

n´gativement et les points cot´ droite seront not´s positivement. e e e Avec les coordonn´es curvilignes x et y, on peut se servir du th´or`me de e ˜ ˜ e e ˜: Pythagore pour calculer les distances curvilignes d ˜ d= (˜1 − x2 )2 + (˜1 − y2 )2 x ˜ y ˜ (4.1)

avec : ˜ d : la distance du point (˜1 , y1 ) au point (˜2 , y2 ) x ˜ x ˜ x : valeur du point sur l’axe de base dans le syst`me de coordonn´es curvi˜ e e lignes ˜ y : valeur du point sur la perpendiculaire de l’axe X ˜ Les figures ci-dessous montrent deux points P1 et P2 projet´s dans le syst`me e e de coordonn´es conventionnel et dans le syst`me de coordonn´es curvilignes. e e e ˜ On voit comment les distances d et d diff`rent. e

Fig. 4.2 – Syst`me de coordonn´es conventionnel e e

CHAPITRE 4. LES CONCEPTS DE LA SOLUTION

51

Fig. 4.3 – Syst`me de coordonn´es curvilignes e e

4.4

Impl´mentation de l’algorithme e

Apr`s avoir r´alis´ les ´tapes pr´c´dentes, les donn´es sont prˆtes pour e e e e e e e e l’interpolation. On a tout ce qu’il faut : le x et y pour pouvoir calculer les ˜ ˜ distances curvilignes, la bathym´trie du lac plus le poids pour calculer la e densit´ piscicole. Il reste ` impl´menter l’algorithme d’interpolation. e a e Pour l’instant on ne sait pas encore quel algorithme convient le mieux ` a cette probl´matique. Dans le cadre de ce projet il ne s’agissait que d’en e impl´menter un qu’on peut ´changer par un autre plus tard. Par cons´quent e e e les donn´es doivent ˆtre mises dans une forme g´n´rale qui permettra de e e e e remplacer l’algorithme. Ult´rieurement j’ai choisi d’impl´menter l’IDW, car e e c’´tait le plus simple ` impl´menter. e a e Comme valeurs d’entr´e on dispose des valeurs de mesures. Mais il faut e aussi avoir des points r´guli`rement r´partis, dont les valeurs seront celles e e e des densit´s interpol´es. Ces points repr´sentent le raster d’interpolation. e e e En cr´ant ce raster, il faut faire un compromis entre une grande r´solution e e d’affichage qui am`ne un grand temps de calcul ` cause du grand nombre de e a valeurs d’entr´e et un court temps de calcul avec une r´solution plus faible. e e L’algorithme calcule les densit´s et affiche les r´sultats avec des couleurs e e diff´rentes. e

CHAPITRE 4. LES CONCEPTS DE LA SOLUTION

52

4.5

R´sum´ e e

Selon les ´tapes d´crites en haut, on parvient ` la proc´dure suivante : e e a e 1. Construire le MNT 2. Cr´er le thalweg e 3. Cr´er les trois zones (littorale, sublittorale et centrale) e 4. Pr´parer les donn´es filets ` partir des tableaux Excel e e a 5. Poser les filets sur l’´cran e 6. Calculer leurs coordonn´es curvilignes e 7. Calculer leurs densit´s e 8. Cr´er le raster d’interpolation e 9. Calculer les distances curvilignes 10. Impl´menter l’algorithme d’interpolation et le lancer e 11. Affichage des r´sultats dans des couleurs diff´rentes e e

Chapitre 5

Mise en pratique
La mise en pratique consiste en trois phases. C’est tout d’abord la phase de traitement des donn´es, ensuite la phase d’entr´e des donn´es dans le e e e SIG en utilisant les fonctionnalit´s existantes et enfin la phase de calcul des e donn´es. e On pourrait y ajouter une quatri`me phase qui est celle de l’analyse des e cartes de r´sultat, mais qui ne fait pas partie de ce travail, car c’est seul le e commanditaire qui sait bien interpr´ter les r´sultats. e e

5.1

Traitement des donn´es e

On dispose de trois jeux de donn´es d’entr´e : les points GPS (donn´es e e e GPS), les poissons captur´s dans environ 30 filets (donn´es filets) et les poise e sons d´tect´s par ´cho-sondeur (donn´es acoustiques). e e e e Toutes les donn´es sont fournies sous forme de fichiers Excel. Pour faciliter e la pr´paration des donn´es, elles sont trait´es sous Access. e e e

5.1.1

Donn´es GPS e

Comme mentionn´ avant, il y a plusieurs valeurs de profondeur pour e chaque point GPS. Il faut donc assigner une valeur unique de profondeur a ` chaque relev´ en (x, y). Comme le commanditaire a demand´ de prendre e e la valeur de profondeur minimale pour un point GPS, on la calcule avec la requˆte SQL suivante : e Listing 5.1 – Requˆte : Profondeur minimale e SELECT GPS . l a t i t u d e , GPS . l o n g i t u d e , Min(GPS . p r o f o n d e u r ) As p r o f o n d e u r F O GPS R M G O P BY GPS . l a t i t u d e , GPS . l o n g i t u d e ; R U

53

CHAPITRE 5. MISE EN PRATIQUE

54

Il reste 4280 enregistrements. Comme la cˆte d’eau ´tait ` 200 m`tres NGF1 quand les ´chantillons ´taient o e a e e e pris et la cˆte sur la carte IGN ` 202 m`tres NGF, il faut ajuster la cˆte o a e o d’eau de la campagne de pˆche ` celle de la carte. Mˆme si on n’utilise pas e a e la carte IGN pour notre mod`le num´rique du lac, c’est important, car on e e travaille avec le contour du lac cr´´ par M. Heintz, qui est bas´e sur ce ee e niveau d’eau. On ajoute donc 2 m`tres ` toutes les valeurs de profondeur. e a ArcGIS permet l’entr´e de donn´es sous forme de table dBASE. Il faut par e e cons´quent sauvegarder la table avec l’extension « .db ». e

5.1.2

Donn´es filets e

On dispose d’un jeu de donn´es correspondant aux captures de « vrais » e poissons dans environ 30 filets, dispos´s dans trois zones du lac. Il y avait e 1722 poissons captur´s. Chaque poisson est stock´ comme un enregistrement e e dans un tableau Excel. Pour 361 poissons on n’a pas de poids indiqu´. Le e commanditaire a propos´ une formule de calcul selon celle on peut calculer e les poids manquants : p= avec : p : poids du poisson en gramme l : longueur du poisson en cm Cette formule est impl´ment´e dans la requˆte SQL suivante. Il faut tenir e e e compte que la longueur ´tait donn´e en millim`tres. e e e Listing 5.2 – Requˆte : Calcul de poids e UPDATE p o i s s o n s SET Poids = Format ( ( ( [ p o i s s o n s ] . [ l t ] / 1 0 ) ∗ ( [ poissons ] . [ l t ]/10) ∗ ( [ p o i s s o n s ] . [ l t ] / 1 0 ) ∗1.125) /100 , ’ 0 ’ ) W E E p o i s s o n s . Poids = 0 ; HR Dans la table il y avait en outre 77 enregistrements o` il n’y avait ni u poids ni longueur indiqu´e. Il fallait les supprimer. e Comme on veut interpoler la densit´ piscicole d’un filet et que chaque enree gistrement correspond ` un seul poisson, il faut rassembler tous les poissons a captur´s dans un filet et calculer le poids total de chaque filet (cf. § Listing e 5.3).
Niveau G´n´ral Fran¸ais de 1969. Il d´termine l’altitude de chaque point du territoire e e c e Fran¸ais, par rapport au niveau z´ro de la mer. c e
1

l3 ∗ 1, 125 100

(5.1)

CHAPITRE 5. MISE EN PRATIQUE

55

Un filet est caract´ris´ par son identifiant (attribut « N° pose »), sa lone e gueur (attribut « Longueur »), la profondeur du lac (attribut « Hauteur »), l’habitat piscicole (attribut « Habitat ») et l’endroit sur le lac o` il ´tait u e pos´ (attribut « Station »). e Listing 5.3 – Requˆte : Calcul du poids total e SELECT p o i s s o n s . [ N° p o s e ] , p o i s s o n s . S t a t i o n , p o i s s o n s . Habitat , p o i s s o n s . Longueur , p o i s s o n s . Hauteur , Count ( ∗ ) AS [ N° p o i s s o n s ] , Sum( p o i s s o n s . Poids ) AS [ Poids t o t a l ] F O poissons R M G O P BY p o i s s o n s . [ N° p o s e ] , p o i s s o n s . S t a t i o n , R U p o i s s o n s . Habitat , p o i s s o n s . Longueur , p o i s s o n s . Hauteur ; Il y a toujours une chaˆ de sept filets pos´e ` un endroit dans le lac. ıne e a Cela signifie qu’on a sept enregistrements de filet dans la table de sortie de la requˆte pr´c´dente avec la mˆme valeur indiqu´e dans le champ « Station ». e e e e e On cherche de traiter chaque chaˆ de sept filet comme une seule pose. On ıne groupe donc toujours sept filet, qui ont le mˆme identifiant (attribut « N° e filet »). Ce groupement est r´alis´ avec la requˆte SQL suivante : e e e Listing 5.4 – Requˆte : Groupement des filets e SELECT p o i s s o n s . [ N° f i l e t ] , p o i s s o n s . S t a t i o n , p o i s s o n s . Habitat , p o i s s o n s . Hauteur , Count ( ∗ ) AS [ N° p o i s s o n s ] , Sum( p o i s s o n s . Poids ) AS [ Poids t o t a l ] F O poissons R M G O P BY p o i s s o n s . [ N° f i l e t ] , p o i s s o n s . S t a t i o n , R U p o i s s o n s . Habitat , p o i s s o n s . Hauteur ; On obtient 28 poses avec leur poids de poissons ´chantillonn´s, situ´es e e e dans des habitats diff´rents. Pour pouvoir calculer la densit´ dans la phase e e de programmation, il faut ajouter ` tout enregistrement un champ indiquant a la surface attenante, qui est ´gale ` 336m2 (48m2 ∗ 7, cf. § 3.2.1) pour tous e a les filets.

5.1.3

Donn´es acoustiques e

Les donn´es acoustiques se pr´sentent sous forme d’un tableau Excel e e contenant pr`s de 12 321 points de mesure. L’´cho-sondeur est localis´ par e e e GPS et rend compte de la r´ponse acoustique. Pour chaque poisson d´tect´, e e e on connaˆ ses coordonn´es x et y plus z (x et y donn´s par GPS, et z ´tant ıt e e e la profondeur du fond du lac ` l’endroit o` le poisson a ´t´ d´tect´ par a u ee e e

CHAPITRE 5. MISE EN PRATIQUE

56

l’´cho-sondeur). Pour chaque «poissons», on connaˆ son poids estim´, ce e ıt e qui doit permettre d’´tablir des cartographies de la densit´ piscicole estim´e e e e par l’´chosondage. e Comme pour les points GPS, il y avait plusieurs tirs pour un point. Mais au lieu de calculer la moyenne, le commanditaire a demand´ de calculer le e total de la biomasse d´tect´e pour un point, car chaque enregistrement dans e e le tableau correspond ` un poisson sp´cifique et plusieurs poissons peuvent a e ˆtre sond´s ` un point x, y dans le lac. e e a On calcule le poids total plus la profondeur moyenne pour ce point avec la requˆte SQL ci-dessous : e Listing 5.5 – Requˆte : Poids total plus profondeur moyenne e SELECT [ C o m p i l t o u t f c ] . [ l o n g i t u d e ] , [ Compil tout fc ] . [ latitude ] , Sum( [ C o m p i l t o u t f c ] . [ p o i d s ] ) AS p o i d s t o t , Count ( ∗ ) AS N o p o i s s , Round (Avg ( [ C o m p i l t o u t f c ] . [ p r o f o n d e u r ] ) , 3 ) AS profondeur F O Compil tout fc R M G O P BY [ C o m p i l t o u t f c ] . [ l o n g i t u d e ] , R U [ Compil tout fc ] . [ latitude ] ; Apr`s avoir obtenu les cartographies r´sultantes des densit´s, on voyait e e e que le poids n’´tait pas bien calcul´. Comme le bateau est pass´ plusieurs e e e fois ` un endroit dans le lac et comme les poissons d´tect´s les autres fois a e e peuvent ˆtre les mˆmes que ceux d´tect´s auparavant, il ne faut pas prendre e e e e le total de poids ` un point, mais le total divis´ par le nombre de visites. Il a e s’agissait donc de recalculer le poids, ` partir des donn´es GPS : a e Listing 5.6 – Recalcule le poids SELECT a c o u s t i q u e . l o n g i t u d e , a c o u s t i q u e . l a t i t u d e , Round ( ( a c o u s t i q u e . p o i d s t o t / N b v i s i t e s G P S . no) , 3 ) AS p o i d s t o t , acoustique . No poiss , a c o u s t i q u e . dens g m3 , a c o u s t i q u e . d e n s k g h a , a c o u s t i q u e . p r o f o n d e u r , a c o u s t i q u e . id , acoustique . surface m2 F O acoustique , Nb visites GPS R M W E E ( ( ( N b v i s i t e s G P S . l a t i t u d e )= HR [ acoustique ] . [ latitude ] ) A D ( ( N b v i s i t e s G P S . l o n g i t u d e )= N [ acoustique ] . [ longitude ] ) ) ; On supprime les enregistrements de ce jeu de donn´es qui n’ont ni latie tude, ni longitude, ni poids. On obtient ` la fin 2555 points (x, y) avec leurs a

CHAPITRE 5. MISE EN PRATIQUE

57

poids piscicoles d´tect´s. e e Comme pour les poissons captur´s dans les filets, il faut aussi assigner la e surface attenante ` tous les points x, y. Il se pose la question de savoir quelle a est la surface attenante ` un point GPS. a Comme mentionn´ avant, un point GPS est exprim´ en degr´s, minutes e e e et centi`mes de minute et les mesures sont faites ` un centi`me de minute e a e pr´s, ce qui correspond sur le terrain ` environ 18.52 m`tres en longitude et e a e a ` environ 12.86 m`tres de latitude. On en conclut que la surface attenante e est comparable ` un rectangle de 18, 52m ∗ 12, 86m = 237, 982m2 . On stocke a e e cette valeur dans un nouveau champ «surface m2». La densit´ sera calcul´e a ` partir du poids et de la surface attenante.

5.2

Importation dans le SIG

Il est possible de cr´er des points sur la carte d’un document d’ArcMap e a ` partir de donn´es tabulaires d´crivant des emplacements g´ographiques e e e sous forme de coordonn´es x, y. La table import´e doit contenir au moins e e deux champs, l’un contenant la latitude x, l’autre la longitude y dans un syst`me de coordonn´es d´fini. La couche de points cr´´e se comporte care e e ee tographiquement comme une autre couche. Mais pour traiter ces donn´es e comme des features il est n´cessaire d’exporter la couche vers un fichier de e forme (un shapefile, par exemple) ou une classe d’entit´s. e Pour les donn´es GPS cela signifie, qu’on les cr´e simplement en impore e tant la table dBASE dans ArcMap. En observant les points import´s avec e le contour du lac cr´´ par M. Heintz, on voit que quelques-uns se trouvent ee en dehors du contour. Il faut savoir, si on garde le contour, on efface tous les points se trouvant en dehors du contour ou si on modifie le contour pour englober tous les points. Selon la r´ponse du commanditaire les points GPS e sont plus pr´cis que le contour. En comparant le scan du lac avec le nuage e de points GPS on retrouve avec une certaine pr´cision sur le semis de points e GPS les formes caract´ristiques du lac. Il s’agit bien de privil´gier ces formes e e caract´ristiques, puisque ce sont elles qui int´ressent les chercheurs pour l’ine e terpr´tation des peuplements de poissons. Il faut donc modifier le contour e manuellement pour que tous les points aillent dans le contour (sauf ceux qui sont isol´s et visiblement aberrants). La modification du contour r´sulte e e finalement d’un compromis entre l’exactitude du mod`le de M. Heintz et la e r´alit´ des points GPS. (cf. Figure 5.1) e e Comme les chercheurs ne pouvaient pas aller dans la zone de faible profondeur en bateau, il y a tr`s peu de points GPS dans la zone littorale. En outre, e il manque des points avec une profondeur ´gale ` z´ro juste au bord du rie a e vage. Par cons´quent j’ai choisi de g´n´rer des points avec une profondeur e e e de z´ro sur la ligne z´ro qui est repr´sent´e par le contour du lac pour avoir e e e e des meilleurs r´sultats dans l’interpolation. Le script « shapes2points » proe

CHAPITRE 5. MISE EN PRATIQUE

58

Fig. 5.1 – Points GPS gramm´ par Dan Rathert offre la possibilit´ de g´n´rer des points ` partir e e e e a d’une polyligne. Il stocke les vertex de la ligne avec leurs coordonn´es x, y e dans un fichier texte ASCII. Apr`s avoir cr´´ ce fichier, on doit le convertir e ee dans une table dBASE pour pouvoir ensuite l’importer dans ArcMap. Grˆce a a ` cette m´thode on obtient 500 points en plus, qu’on peut ajouter aux points e GPS mesur´s. e

CHAPITRE 5. MISE EN PRATIQUE

59

Les points import´s ` partir d’un fichier ou d’une table n’ont pas de r´f´rence e a ee spatiale sp´cifi´e ` priori. Ils seront projet´s dans le mˆme syst`me de coore e a e e e donn´es que celui du bloc de donn´es dans ArcMap. ArcMap fait un chane e gement de projection « ` la vol´e » (les donn´es ne sont pas modifi´es en a e e e dur) pour afficher toutes les couches du bloc dans le mˆme syst`me. e e Comme les points GPS sont donn´s en coordonn´es g´ographiques dans le e e e syst`me g´od´sique WGS84, il est n´cessaire de les projeter dans le mˆme e e e e e syst`me de projection que la carte IGN, ` savoir du Lambert II. e a

Fig. 5.2 – Projection Lambert, [IGN04] Pour explication : Lambert est un syst`me de coordonn´es bas´ sur une e e e projection cylindrique utilis´ en France. En 1921 on a introduit ce syst`me e e sous le nom « Nouvelle Triangulation de la France » (NTF) pour l’arpentage en France. On trouve les coordonn´es Lambert sur les cartes officielles de la e France (IGN). La France m´tropolitaine est d´coup´e en quarte zones (voir e e e figure 5.2) :

CHAPITRE 5. MISE EN PRATIQUE

60

– Lambert I couvrant le tiers nord-œst de la France – Lambert II couvrant le tiers central de la France – Lambert III couvrant le tiers sur de la France – Lambert IV couvrant la Corse Le lac Chambon se trouve dans la zone Lambert II. Pour des besoins de repr´sentation globale de la France une projection Lame bert II ´tendu a ´t´ cr´´e. Le syst`me de coordonn´es Lambert est aussi e e e ee e e utilis´ en Belgique et en quelques pays de l’Afrique francophone. Pour l’Ale lemagne par contre on utilise le syst`me « Gauß-Kr¨ger » [Li99]. Ce syst`me e u e de coordonn´es est introduit en 1927 comme m´thode d’arpentage officielle. e e Le changement de syst`me de r´f´rence est une op´ration math´matique e ee e e qui est impl´ment´e dans les fonctionnalit´s « Projections » d’ArcToole e e box. Ayant r´alis´ cette transformation g´ographique, les points GPS sont e e e pr´par´s pour construire la bathym´trie du lac sous mode raster. e e e Pour construire le raster des pentes, il faut passer par le mode TIN, car les points GPS ne sont pas r´guli`rement r´partis et une interpolation directe e e e r´sulte dans une cartographie des pentes de faible pr´cision. Pour construire e e le TIN, on a besoin de rentrer le contour du lac comme ligne de z´ro. L’outil e interpole la surface en cr´ant des points interm´diaires. Apr`s il construit une e e e surface avec des triangles. La carte 5.3 montre les pentes du lac repr´sent´s e e sous mode TIN. A partir du TIN on peut calculer l’image des pentes. Cette transformation peut ˆtre r´alis´e avec la fonctionnalit´ « Tin to Grid » de l’ArcToolbox. Les e e e e valeurs de profondeurs sont obtenues par l’interpolation lin´aire ou quintic. e L’interpolation lin´aire donne une surface liss´e. L’interpolation quintic par e e contre donne une surface plus anguleuse. J’ai choisi l’algorithme lin´aire, car e le fond du lac est liss´ par la s´dimentation. La r´solution ´tait prise ´gale e e e e e a ` un m`tre, ce qui donne des pixels d’un m`tre de cot´. La carte 5.4 montre e e e le r´sultat obtenu. e

CHAPITRE 5. MISE EN PRATIQUE

61

Fig. 5.3 – Carte : TIN

CHAPITRE 5. MISE EN PRATIQUE

62

Fig. 5.4 – Carte : Raster Pour cr´er le thalweg du lac qui repr´sente notre ligne de r´f´rence, Arce e ee Map offre les fonctions « fill sink », « flowdirection » et «flowaccumulation» qu’on ex´cute sur un raster repr´sentant la bathym´trie du lac. Ex´cuter e e e e ces fonctions dans le bon ordre, permet d’obtenir un r´seau montrant la e connectivit´ des cours d’eau. e

CHAPITRE 5. MISE EN PRATIQUE

63

La d´rivation du sens de l’´coulement (m´e e e thode « flowdirection ») ´tant donn´e la e e premi`re ´tape, il est important de lui pase e ser les informations les plus exactes que possible. Il s’agit donc tout d’abord d’examiner le MNT du lac sous forme de raster et de corriger les inexactitudes. Ces petites erreurs r´sultent des l´g`res d´pressions de e e e e terrain. La fonction « fill sink » permet de remplir les enfoncements d’un raster continu. Elle fait disparaˆ les petites inexactitudes ıtre et donne une surface plus lisse. La fonction « flowdirection » d´termine le e voisin le plus profond d’une cellule et cr´e e une grille montrant le sens d’´coulement de e l’eau dans chaque cellule. Apr`s avoir lanc´ e e cette fonction avec la surface corrig´e comme e entr´e, on obtient une grille dont les cellules e sont cod´es par les valeurs de sens. e Ensuite on ex´cute la fonction « flowaccue mulation ». Elle cr´e une grille montrant e le flux accumul´ allant dans chaque cellule. e Elle accumule le poids de toutes les cellules se trouvant en amont qui coulent dans une cellule en aval. Des cellules avec une grande valeur sont des zones de grande accumulation d’eau. Elles sont utilis´es pour identie fier les cours d’eau. Pour obtenir des polylignes repr´sentant le r´seau de cours d’eau, e e on convertit la grille r´sultante en un shapee file de polylignes connect´es. Cela peut ˆtre e e r´alis´ avec la fonction « streamshape ». e e Ayant ex´cut´ ces fonctions dans l’ordre e e donn´, on obtient plusieurs lignes non connect´es et tr`s courtes. La couche e e e r´sultante se compose d’un r´seau de cours d’eau et non seulement d’une e e ligne repr´sentant l’´coulement de l’eau dans ce lac. La raison est l’inexace e titude du mod`le num´rique de terrain. Le MNT n’est pas exact, car les e e points GPS ne sont pas repartis r´guli`rement. Il y a des endroits sur le lac e e d’o` on ne dispose pas de points de mesure. En outre la pr´cision du GPS u e et de l’´cho-sondeur est tr`s faible. e e C’est pourquoi le thalweg a ´t´ cr´e manuellement. ee e Ayant cr´´ la bathym´trie du lac et la ligne de r´f´rence, on peut poser ee e ee les filets sur l’´cran. Comme information sur leurs emplacements on connaˆ e ıt leurs zones (stock´ dans le champ « Habitat »), l’endroit approximatif par e

CHAPITRE 5. MISE EN PRATIQUE

64

l’information stock´e dans le champ « Station » et des carte non num´ris´es e e e sur lesquelles les chercheurs ont indiqu´ les filets. A l’aide du chercheur e Aymeric Guibert j’ai pos´ les filets comme objets ponctuels au bon endroit e dans le mod`le num´rique du lac. (cf. carte 5.5) On assigne aux entit´s e e e spatiales leur surface attenante et le poids captur´ aux endroits, calcul´s e e par des requˆtes SQL. e Les donn´es acoustiques pouvaient ˆtre rentr´es dans le SIG de la mˆme e e e e fa¸on que les donn´s GPS, car elles sont renseign´es en latitude et longitude. c e e

Fig. 5.5 – Carte : Filets pos´s e

CHAPITRE 5. MISE EN PRATIQUE

65

5.3
5.3.1

Programmation
Acc`s aux donn´es e e

ArcObjects fournit deux variables pr´d´finies disponibles ` n’importe e e a quel moment dans le code et qui sont les deux points d’entr´e dans le mod`le. e e Ce sont les variables globales « Application » et « ThisDocument ». « Application » correspond ` l’application elle-mˆme. Cette variable repr´sente la a e e CoClass Application, qui pointe par default sur l’interface IApplication. Mais elle impl´mente ´galement l’interface IMxApplication. «ThisDocument» core e respond au document ArcMap. Elle pointe sur l’interface IDocument de la classe MxDocument. Un MxDocument correspond ` un document ArcMap. a Ces deux variables n’ont pas besoin d’ˆtre d´clar´es ni initialis´es. Elles sont e e e e directement utilisables. Le code source suivant montre comment utiliser ces variables globales pour acc´der au document local. e Listing 5.7 – Variables globales : « Application » et « ThisDocument » Dim pMxDoc a s IMxDocument Set pMxDoc = A p p l i c a t i o n . Document ’ or Set pMxDoc =ThisDocument Les deux possibilit´s dans le code sont ´quivalentes. Elles montrent come e ment obtenir une r´f´rence sur le document en cours. ee MxDocument g`re toujours un ou plusieurs objets « Map » et un seul objet e « PageLayout ». Un map2 repr´sente le bloc de donn´es (data frame) qui e e consiste en plusieurs couches. Un document peut avoir plusieurs maps. Le PageLayout arrange l’affichage du document. Un document ArcMap poss`de toujours une vue active, appel´e ActiveView, e e qui est soit le « mode donn´es » map, soit le « mode mise en page » page e layout. L’utilisateur peut passer de l’un ` l’autre. La propri´t´ ActiveView a ee de MxDocument renvoie une r´f´rence sur l’interface IActiveView qui est ee impl´ment´e par les classes Map et PageLayout de deux mani`res diff´rentes e e e e (polymorphisme). Par cons´quent ActiveView permet d’acc´der soit au Pae e geLayout si on est en mode mise en page soit au map en cours si on est en mode donn´es. e La propri´t´ FocusMap renvoie toujours une r´f´rence sur l’objet map, qui ee ee repr´sente la carte active. e Le listing 5.8 montre comment acc´der ` la carte active. Il affiche les noms e a des couches de cette carte.

2

carte en fran¸ais c

CHAPITRE 5. MISE EN PRATIQUE Listing 5.8 – Focus Map Dim Dim Dim Dim Dim pMxDoc As IMxDocument pMap As IMap pLayers As IEnumLayer pLayer As I L a y e r i As Long

66

Set pMxDoc = ThisDocument Set pMap = pMxDoc . FocusMap ’ names o f t h e l a y e r s which a r e i n t h e a c t i v e map Set pLayers = pMap . l a y e r s Set pLayer = pLayers . Next ’ loop a l l l a y e r s in the dataframe For i = 0 To pMap . LayerCount − 1 MsgBox pLayer . Name Set pLayer = pLayers . Next Next Le diagramme 5.6 symbolise le rapport entre l’objet MxDocument, ses cartes et l’affichage de celles-ci.

Fig. 5.6 – MxDocument Pour acc´der ` une couche d’un map on peut passer soit par le document e a (propri´t´ SelectedLayer ), soit par le bloc de donn´es (propri´t´s Layer et ee e ee LayerCount). Si on passe par le document il faut r´cup´rer un pointeur sur la couche e e

CHAPITRE 5. MISE EN PRATIQUE

67

s´lectionn´e. Il faut v´rifier si une couche est effectivement s´lectionn´e par e e e e e l’utilisateur d’ArcMap. Dans ce cas si aucune couche n’est s´lectionn´e, le e e pointeur ne pointe sur rien. Le code 5.9, r´cup´r´ de [ENSG03], montre e ee comment acc´der ` la couche s´lectionn´e. e a e e Listing 5.9 – Acc`s ` la couche s´lectionn´e par le document [ENSG03] e a e e Dim pMxDoc As IMxDocument Set pMxDoc = ThisDocument Dim pLayer As I l a y e r ’ We i n i t i a l i s e pLayer w i t h t h e s e l e c t e d l a y e r . Set pLayer = pMxDoc . S e l e c t e d L a y e r I f pLayer I s Nothing Then ’ I f pLayer p o i n t s t o n o t h i n g , we d i s p l a y a message . MsgBox ”Vous devez s ´ l e c t i o n n e r une couche ! ” e Else ’ O t h e r w i s e we d i s p l a y t h e name o f t h e l a y e r . MsgBox pLayer . Name End I f Un d´savantage d’ArcObjects est qu’on ne peut pas acc´der directement e e a ` une couche par son nom. On doit passer par le bloc de donn´es contenant e la couche et parcourir l’ensemble des couches du bloc de donn´es avec une e boucle en testant les noms, ce qui est montr´ dans le code suivant : e Listing 5.10 – Acc`s ` une couche par le bloc de donn´es [ENSG03] e a e Function FindLayerByName (pMap a s IMap , sName a s String ) As I L a y e r Dim i a s I n t e g e r ’ l o o p o v e r t h e number o f l a y e r s ’ ( numeration s t a r t s w i t h 0 ) For i = 0 t o pMap . LayerCount ’ I f t h e i t h . Layer has t h e s e a r c h e d name , ’ we g e t t h i s l a y e r . I f pMap . Layer ( i ) . Name = sName Then Set FindLayerByName = pMap . Layer ( i ) End I f Next End Function Chaque couche contient une classe d’entit´s (feature class). Cette classe e stocke les entit´s spatiales (features), contrairement ` une table qui stocke e a les objets repr´sentant des entit´s non spatiales. Tous les feature d’une Feae e tureClass ont les mˆmes attributs et la mˆme g´om´trie (point, polyligne, e e e e polygone ...). Leurs attributs sont stock´s dans la table de la classe d’entit´. e e

CHAPITRE 5. MISE EN PRATIQUE

68

L’attribut obligatoire est l’identifiant d’objet, nomm´ FID. C’est la cl´ prie e maire des entit´s e Pour acc´der aux features, on utilise la m´thode GetFeature (in ID : Long) e e sur IFeatureClass. Elle permet de r´cup´rer l’entit´ dont l identifiant est celui e e e pass´ en entr´e. Pour acc´der ` la valeur d’un attribut sp´cifique, on utilise e e e a e la propri´t´ Value (in Index : Long) sur IFeature. L’identifiant pass´ est celui ee e de l’attribut. Cette propri´t´ est impl´ment´e dans l’interface IRowBuffer. ee e e Mais on peut directement utiliser la propri´t´ Value sur IFeature grˆce ` ee a a l’h´ritage d’interface. e Souvent on ne connaˆ pas l’identifiant d’un attribut. Mais on peut le cherıt cher avec la m´thode FindField(”NAME”). e L’exemple suivant montre comment acc´der aux entit´s spatiales d’une couche : e e Listing 5.11 – Acc`s aux entit´s spatiales d’une couche e e Dim Set Dim Dim Dim Dim pMxDoc a s IMxDocument pMxDoc = ThisDocument pFeatureLayer a s I F e a t u r e L a y e r pFeatureClass as IFeatureClass pFeature As I F e a t u r e l F i e l d As Long

’ We o b t a i n t h e f i r s t l a y e r o f t h e c a r t Set pFeatureLayer = pMxDoc . FocusMap . Layer ( 0 ) ’ . . and t h e a s s o c i a t e d f e a t u r e c l a s s . Set p F e a t u r e C l a s s = pFeatureLayer . F e a t u r e C l a s s ’ We s e a r c h t h e f i e l d ”ZONE” . l F i e l d = p F e a t u r e C l a s s . F i n d F i e l d ( ”ZONE” ) ’ We s e a r c h t h e e n t i t y whose i d e n t i f i e r i s z e r o . Set pFeature = p F e a t u r e C l a s s . GetFeature ( 0 ) ’ We d i s p l a y t h e v a l u e o f t h e f i e l d o f t h i s e n t i t y . MsgBox ”Le p o i n t s s e t r o u v e dans l a zone = ” & pFeature . Value ( l F i e l d )

CHAPITRE 5. MISE EN PRATIQUE

69

5.3.2

Impl´mentation de l’algorithme e

La proc´dure d’interpolation est impl´ment´e de fa¸on modulaire, pour e e e c pouvoir mieux comprendre les ´tapes en d´tail et pour pouvoir faire des e e modifications si n´cessaire. Par cons´quent, j’ai d´velopp´ plusieurs macros e e e e auxquelles il faut fournir les bonnes entr´es et les lancer dans le bon ordre. e Le code ´crit est enregistr´ en association ` un document ArcMap (niveau e e a document, cf. § 3.2.3). Il y a six macros accessibles dans le document, dont deux pour la cr´ation des couches d’entr´e, deux pour la pr´paration des e e e donn´es ` interpoler, une pour l’interpolation elle-mˆme et une suppl´mene a e e taire pour calculer la moyenne. Tout d’abord il fallait cr´er des contours du lac aux profondeurs 0 m`tre, e e -9 m`tres et -27 m`tres pour pouvoir partager le lac dans les trois zones. e e Il existe une fonctionnalit´ dans ArcMap appel´e « Contour », qui pere e met de cr´er des polylignes repr´sentant des contours d’une couche raster. e e Le d´savantage est qu’elle cr´e des contours seulement dans une intervalle e e donn´e. Par exemple, elle peut calculer les contours du lac tous les 10 m`tres e e de profondeur. Elle n’offre pas la possibilit´ de calculer des contours pour e une valeur quelconque entr´e par l’utilisateur, ce qui est notre cas (0, -9, -27 e m). Mais on peut d´finir un contour de base quand mˆme. On pourrait donc e e lancer cette fonctionnalit´ trois fois en changeant la valeur du contour de e base et ensuite joindre les polylignes dans une seule couche. Cette solution ´tant un peu longue, j’ai d´cid´ de d´velopper un programme ` moi-mˆme e e e e a e qui cr´e des contours directement aux profondeurs d´sir´es. e e e Dans ce programme on cr´e un nouveau fichier de forme (shapefile) dont les e entit´s sont de type polyligne. Ensuite on cr´e des polylignes sur la surface e e du raster qui repr´sente la bathym´trie du lac aux profondeurs s´lectionn´es e e e e par l’utilisateur. Cette tˆche est r´alis´e avec la m´thode ContourList offert a e e e par l’interface ISurface. La m´thode a besoin d’un tableau contenant les e altitudes sur lesquelles on veut cr´er des contours, d’une classe d’entit´s de e e type polyligne o` il doit stocker les polylignes r´sultants, du champ dans leu e quel les altitudes seront indiqu´es et de la pr´cision des valeurs de l’altitude e e comme entr´e : e Listing 5.12 – M´thode pour cr´er des contours e e ’ C r e a t e s c o n t o u r s , b a s e d on a l i s t o f h e i g h t s ’ s e n d i n g t h e ouput t o t h e p o l y l i n e b a s e d ’ feature class p S u r f a c e . C o n t o u r L i s t pBreaks , pfeatureClass , ” elevation ” , 0 Ensuite on regroupe la couche des contours cr´´e avec le contour du lac ee qui est au niveau z´ro dans une couche contenant toutes les entit´s. Cette e e tˆche est r´alis´e avec la fonctionnalit´ de base d’ArcGIS « merge layers ». a e e e Grˆce ` ces pas on a cr´´ les zones d’habitats. Maintenant il s’agit d’attria a ee

CHAPITRE 5. MISE EN PRATIQUE

70

buer ` chaque point de mesure la zone dans laquelle il ´tait pr´lev´. Ceci a e e e peut ˆtre r´alis´ avec l’interface IRelationalOperator (cf. § 3.3.2), qui est e e e impl´ment´e dans certaines g´ometrie-coclasses. On utilise la m´thode / le e e e e Relational Operator « contains » de cette interface pour trouver la zone correspondante. Comme des essais l’ont montr´, l’op´rateur ne donne pas e e de r´sultat satisfaisant. La relation spatiale « contains » entre la g´om´trie e e e d’un point de mesure et celle d’un contour n’existe pas. Apparemment il n’y a aucun point qui se trouve dans une des zones d´finies. Ceci r´sulte e e du fait que l’op´ration ne peut ˆtre appliqu´e qu’avec des polygones. Une e e e polyligne, mˆme si elle est ferm´e, ne peut pas contenir de points, sauf ceux e e qui se trouvent sur la ligne. Il s’agit donc de transformer les polylignes en polygones. Pour convertir les polylignes en polygones, on utilise la fonction Clean d’ArcToolbox. Elle permet de convertir des polylignes d’une coverage d’entr´e en des polygones e d’une coverage de sortie. Cette fonction peut afficher des messages d’erreurs, si les polylignes ne sont pas ferm´es. Il faut donc v´rifier cette caract´ristique e e e g´om´trique avant de lancer la fonction : e e Listing 5.13 – Feature ferm´ ? e ’ p F e a t u r e C l a s s had been c r e a t e d b e f o r e . ’ I t contains the contours of type p o l y l i n e s . ’ look i f feature is closed Dim pFeature As I F e a t u r e Dim pCurve As ICurve Dim F e a t u r e C l o s e d As String FeatureClosed = ”” For i = 0 To 3 2 Set pFeature = p F e a t u r e C l a s s . GetFeature ( i ) Set pCurve = pFeature . Shape FeatureClosed = FeatureClosed & i & ” . Feature i s c l o s e d : & pCurve . I s C l o s e d & vbCrLf Next MsgBox ” R e s u l t : ” & vbCrLf & F e a t u r e C l o s e d Apr`s avoir ex´cut´ la fonction Clean on convertit le coverage des polye e e gones r´sultants en un shapefile. On remarque qu’il y a plus de 30 entit´s e e spatiales dans la couche de sortie, dont plusieurs qui ont une surface tr`s e petite (cf. Figure 5.7).

CHAPITRE 5. MISE EN PRATIQUE

71

Fig. 5.7 – Zoom dans la couche des contours La raison est que la bathym´trie du lac montre des creux, car le fond e du lac n’est pas assez liss´. La macro ne voit pas la forme globale du lac et e cr´e par cons´quent des polylignes autour des creux de profondeur donn´e. e e e Les polylignes ne longent donc pas forcement la rive. Le commanditaire a demand´ de supprimer les petits polygones, pour partager le lac dans des e zones plus grandes. La suppression des petits polygones r´sulte en une sure face du lac non continue, qui est inutilisable pour l’analyse spatiale. Il fallait donc refaire les derniers pas et supprimer les petites zones quand ils sont pr´sents encore sous forme de polylignes. A la fin on obtient une couche avec e dix entit´s spatiales de type polygone qui repr´sentent les diff´rents habitats e e e piscicoles. Pour pouvoir distinguer les zones non seulement en regardant les valeurs de profondeur stock´es dans le champ « elevation », on cr´e un noue e veau champ dans la table des zones et on y indique la zone correspondante pour chaque feature comme chaˆ de caract`res : central, littoral ou sublitıne e toral.

CHAPITRE 5. MISE EN PRATIQUE

72

Fig. 5.8 – Contours Ayant cr´e les trois zones, il s’agit de repr´senter la g´om´trie du lac e e e e sous forme de points distribu´s r´guli`rement auxquels on peut assigner les e e e densit´s calcul´es comme attribut descriptif, « raster d’interpolation »3 . On e e pourrait cr´er cette couche comme un fichier raster (cf. § 3.2 mode raster ). e Mais ce mode de repr´sentation n’est pas appropri´ ici, car les raster layer e e
3

ce mot sera utilis´ par la suite pour parler de la couche contenant les points ` interpoler e a

CHAPITRE 5. MISE EN PRATIQUE

73

ne stockent qu’un seul attribut, celui qui montre la couche, la bathym´trie e du lac par exemple. Les pixels ne peuvent pas ˆtre trait´s comme des features e e d’une couche vecteur. Il n’y a pas de table associ´e dans laquelle on stocke e des attributs descriptifs des entit´s spatiales. Ici, on a besoin d’assigner aux e points au moins quatre informations : la coordonn´e x, la coordonn´e y, la e ˜ e ˜ valeur calcul´e (la densit´ de poisson interpol´e) et la zone dans laquelle un e e e point est situ´. C’est pour cela qu’un shapefile est plus appropri´. On peut e e stocker ces informations descriptives dans la table associ´e ` la couche. e a La proc´dure de cr´ation des points distribu´s r´guli`rement sur la sure e e e e face du lac est r´alis´e en deux ´tapes. Premi`rement on coupe la surface de e e e e la g´om´trie repr´sentant le lac en carr´s et ensuite on cr´e le raster d’intere e e e e polation. La premi`re ´tape est r´alis´e dans ArcView. J’ai trouv´ une macro [RO00] e e e e e d´velopp´e par Birgit Rasmussen et Eva Overby Bach dans Avenue4 sur le e e site web d’ESRI, qui coupe un polygone en carr´s dont on peut d´finir la e e taille. Les carr´s seront stock´s dans une nouvelles couche vecteur. La taille e e des carr´s d´termine d’une part la qualit´ de l’affichage des r´sultats de l’ine e e e terpolation sous forme d’une carte (la r´solution) et d’autre part le nombre e de points ` calculer. a L’autre moiti´, la cr´ation des points distribu´s r´guli`rement (le raster ine e e e e terpolation), est r´alis´e par moi-mˆme. Le point de d´part est les carr´s. e e e e e Chaque g´om´trie (objet qui impl´mente l’interface IGeometry) contient un e e e point se trouvant ` l’int´rieur de sa surface. Ce point est appel´ le labela e e point. En outre il y a le centro¨ d’une g´om´trie qui repr´sente le « centre ıd e e e de gravit´ » de la surface. Il n’est pas forcement situ´ dans la surface de la e e g´om´trie, mais au centre de la surface du poids attach´. L’illustration 5.9 e e e montre les centro¨ de quelques g´om´tries possibles. ıds e e

Fig. 5.9 – Centro¨ des g´om´tries [AODH03] ıds e e
Avenue est le langage de programmation utilis´ dans l’ancien ArcView. Il ne sera e bientˆt plus utilis´. o e
4

CHAPITRE 5. MISE EN PRATIQUE

74

On voit dans l’illustration que les centro¨ ne sont pas appropri´s pour ıds e cr´er le raster d’interpolation. Par cons´quent on prend les labelpoints de e e tous les carr´s et on les stocke comme features de type point dans une noue velle couche. On acc`de aux points par la propri´t´ LabelPoint de l’interface e ee IArea. Elle renvoie une r´f´rence sur un objet qui impl´mente l’IPoint. Enee e suite on cr´e une nouvelle entit´ et on lui affecte la g´om´trie du labelpoint. e e e e A la fin, on le stocke comme nouveau feature dans une classe d’entit´s, e comment montr´ ci-dessous : e Listing 5.14 – Cr´ation du raster d’interpolation e ’ add p o i n t s e v e n l y s p r e a d a l l o v e r t h e l a k e ’ to the j u s t created f e a t u r e c l a s s Dim pF e at u r e C u r s o r As I F e a t u r e C u r s o r Dim pFeature As I F e a t u r e Dim pArea As IArea Dim l b P o i n t As I P o i n t Dim newFeature As I F e a t u r e Set pF e at u r e C u r s o r = p F e a t u r e C l a s s C a r e s . Update ( Nothing , False ) Set pFeature = p F e a t u r e C u r s o r . NextFeature Do U n t i l pFeature I s Nothing Set pArea = pFeature . Shape Set l b P o i n t = pArea . L a b e l P o i n t ’ c r e a t i o n o f an e n t i t y Set newFeature = p Fe atu r eC la ssLp . C r e a t e F e a t u r e ’ a s s i g n him a geometry Set newFeature . Shape = l b P o i n t newFeature . S t o r e ’ on e n r e g i s t r e Set pFeature = p F e a tu r e Cu r s or . NextFeature Loop La figure 5.10 montre les deux ´tapes pour cr´er le raster d’interpolation. e e Une fois cr´e le raster d’interpolation il faut transmettre les points de mesure e dans ce raster et calculer l’attribut densit´ qui d´pend du poids ´chantillonn´ e e e e et du volume ´chantillonn´ (cf. § 4.1). e e Pour transmettre les points de mesure dans le raster, on parcoure tous ces points de filets et on regarde dans quel carr´ un point se trouve en utilisant e un filtre spatial avec EsriSpatialRelWithin indiqu´ comme relation spatiale e examin´e. Ensuite on utilise l’identifiant FID du carr´ incluant le point pour e e chercher le labelpoint correspondant. Le champ « FID » des labelpoints est consid´r´ comme cl´ ´trang`re r´f´renciant le carr´ dans lequel l’entit´ spaee ee e ee e e

CHAPITRE 5. MISE EN PRATIQUE

75

Fig. 5.10 – Cr´ation du raster d’interpolation e tiale est situ´. Ayant trouv´ le labelpoint on y projette le point de mesure e e et on marque qu’il y s’agit d’un point non calcul´ mais mesur´ en stockant e e « 1 » comme valeur dans un nouveau champ nomm´ « original ». e Le volume ´chantillonn´ est calcul´ pour tous les points de mesure proe e e jet´s ` partir de sa surface attenante, stock´e dans le champ « surface m2 » e a e et ` partir de la profondeur du labelpoint sur lequel le point de mesure est a projet´ (cf. § 4.1). e A partir du volume et du poids indiqu´ dans le champ « poids tot » de la e table de la couche qui contient les filets pos´s (cf. § 5.2), on calcule la densit´ e e du filet f ilet(x|y) en g/m3 et en kg/ha Le commanditaire a ordonn´ de cale culer la densit´ en kg/ha, car c’est l’unit´ standard pour des mesures dans e e des plans d’eaux. Pour calculer la densit´ en kg/ha, on ne comprend pas la e profondeur dans le calcul. « On fait comme si tout le volume de chaque unit´ e cartographique ´tait compress´ sur sa surface : c’est un regard de ’pˆcheur’, e e e qui regarde le lac ’vu d’avion’, en pensant que tous les poissons, quelle que soit leur profondeur, sont accessibles et capturables. » (Nadou Cadic) g kg On suppose que 1 m2 = 10 ha . Pour inclure la troisi`me dimension, on mule tiplie la surface par la profondeur pour obtenir la densit´ en g/m3 . e densite[g/m3 ] = poids(f ilet(x|y)) A ∗ z(label(x|y)) (5.2)

CHAPITRE 5. MISE EN PRATIQUE poids(f ilet(x|y)) ∗ 10 A

76

densite[kg/ha] =

(5.3)

avec : poids(f ilet(x|y)) : poids pes´ dans le filet pos´ dans le point (x|y) e e z(label(x|y)) : la profondeur du labelpoint dans le point (x|y) en m`tres e 2 (pour les donn´es des filets : 336m2 ) A : surface attenante en m e S’il y a plusieurs points de mesure qui tombent dans un carr´, on calcule e la moyenne des densit´s. e Il y a une faible inexactitude dans le calcul des densit´s qui provient du fait e qu’on ne prend pas la profondeur ` l’endroit o` le filet est pos´, mais celle a u e du point sur lequel le point de mesure est projet´. Ces deux profondeurs e peuvent diff´rer faiblement. e On a donc projet´ les points de mesure sur des points du raster d’interpolae tion et on a transmis leurs poids. On pourrait avoir ´galement non seulement e projet´, mais transmis toute l’entit´ des points de mesure dans ce raster. e e Ayant consid´r´ comme impr´cise la localisation des filets dans le mod`le ee e e num´rique du lac, cette possibilit´ ne semblait pas donner de r´sultats plus e e e pr´cis. En outre on a travaill´ avec un raster de grande pr´cision, qui empˆche e e e e de d´placer un filet ` un endroit trop ´loign´. e a e e Le code B.1 dans l’annexe montre la proc´dure de la cr´ation du raster. e e Une fois cr´e le raster d’interpolation, il s’agit de calculer les coordonn´es e e curvilignes de toutes les entit´s et de les stocker dans le table attributaire e du raster. Pour calculer le y on se sert des Proximity Operators qui sont impl´ment´s ˜ e e dans les classes de g´om´trie (cf. § 3.2.2). Comme on voit dans l’extrait du e e code 5.15, on cherche le point se trouvant sur la ligne du thalweg le plus proche du point du raster (pPointSnap) et calcule ensuite sa distance ` ce a dernier. Ce qui donne la valeur du y sans signe. On pourrait avoir ´galement ˜ e appliqu´ la m´thode ReturnDistance sur la g´om´trie du thalweg avec le e e e e point du raster comme entr´e. Cette possibilit´ calculerait directement la e e distance la plus courte entre le point du raster et le thalweg. Elle donne le mˆme r´sultat. On peut supposer que la m´thode ReturnDistance sur une e e e polyligne avec un point comme entr´e est impl´ment´e en cherchant toujours e e e d’abord le point le plus proche sur la ligne et en calculant ensuite la distance entre les deux points. Comme on a encore besoin du point sur la ligne du thalweg pour calculer le x, j’ai choisi la premi`re solution. ˜ e

CHAPITRE 5. MISE EN PRATIQUE Listing 5.15 – Calcul du y ˜ ’ pPointStart is the input point Dim p F e a t u r e S p l i t As I F e a t u r e Dim pGeometry As IGeometry Dim pPointSnap As I P o i n t Dim pProximity As I P r o x i m i t y O p e r a t o r Dim pMinimalDistance As Double ’ the thalweg Set p F e a t u r e S p l i t = p F e a t u r e C l a s s L i n e s . GetFeature ( 0 ) Set pGeometry = p F e a t u r e S p l i t . Shape Set pProximity = pGeometry ’ f i n d and r e t u r n t h e n e a r e s t p o i n t on t h e p o l y l i n e ’ to the input point Set pPointSnap = pProximity . R e t u r n N e a r e s t P o i n t ( pPointStart , 0 ) Set pProximity = pPointSnap ’ g e t t h e minimum d i s t a n c e b e t w e e n t h e n e a r e s t p o i n t ’ and t h e i n p u t p o i n t pMinimalDistance = pProximity . R e t u r n D i s t a n c e ( pPointStart )

77

Pour pouvoir distinguer entre les points se trouvant ` gauche du thalweg a et ceux ` la droite, on cr´e une nouvelle couche, en coupant le polygone du a e lac selon le thalweg. Les g´om´tries r´sultantes repr´sentent la partie gauche e e e e et la partie droite du lac : Listing 5.16 – Coupage de la g´om´trie du lac e e ’ Splitting features Dim p o l y F e e a t u r e As I F e a t u r e Dim l i n e F e a t u r e As I F e a t u r e Dim pGeometry As IGeometry Dim p T o p o l o g i c a l O p e r a t o r As I T o p o l o g i c a l O p e r a t o r Dim p P o l y l i n e As I P o l y l i n e ’ output features Dim leftGeom As IGeometry Dim rightGeom As IGeometry ’ perfom t h e s p l i t t i n g o p e r a t i o n Set p o l y F e e a t u r e = p F e a t u r e C l a s s P o l y g o n s . GetFeature ( 0 ) Set l i n e F e a t u r e = p F e a t u r e C l a s s L i n e s . GetFeature ( 0 )

CHAPITRE 5. MISE EN PRATIQUE Set pGeometry = p o l y F e e a t u r e . Shape Set p T o p o l o g i c a l O p e r a t o r = pGeometry Set p P o l y l i n e = l i n e F e a t u r e . Shape p T o p o l o g i c a l O p e r a t o r . Cut p P o l y l i n e , leftGeom , rightGeom

78

Ensuite on utilise la couche de sortie pour d´terminer les points se e trouvant ` l’int´rieur de l’entit´ «gauche» et ceux ` l’int´rieur de l’entit´ a e e a e e «droite». On dit que la valeur x de tous les points qui se trouvent ` gauche ˜ a du thalweg sera not´e n´gativement et les points ` la droite sont not´s poe e a e sitivement. Cela est r´alis´ dans le code suivant : e e Listing 5.17 – Assignation d’une notation pour le y ˜ ’ pFeature i s the current point Dim p S i d e S p a t i a l F i l t e r As I S p a t i a l F i l t e r Dim pFeatureCursorWithin As I F e a t u r e C u r s o r Dim pOutPoly As Boolean Dim s i d e As String Dim p H a l f F e a t u r e As I F e a t u r e Dim p H a l f F l d s As I F i e l d s Dim s i d e I n d e x As Long ’ l o o k , on which s i d e o f t h e l i n e t h e p o i n t i s Set p S i d e S p a t i a l F i l t e r = New S p a t i a l F i l t e r ’ s e t t i n g t h e Geometry , GeometryField and ’ S p a t i a l R e l parameters With p S i d e S p a t i a l F i l t e r Set . Geometry = pFeature . Shape . GeometryField = ”SHAPE” . SpatialRel = esriSpatialRelWithin End With Set pFeatureCursorWithin = Nothing ’ Featureclass of s p l i t t e d polygon Set pFeatureCursorWithin = p F e a t u r e C l a s s H a l f s . S e a r c h ( pSideSpatialFilter , False ) Set p H a l f F e a t u r e = pFeatureCursorWithin . NextFeature ’ r e t r i e v e t h e r e s u l t s , o n l y one −> ’ p o l y g o n h a l f which i n c l u d e s t h e c u r r e n t p o i n t Do U n t i l p H a l f F e a t u r e I s Nothing ’ set indexes to f e t c h the f i e l d values

CHAPITRE 5. MISE EN PRATIQUE Set p H a l f F l d s = p H a l f F e a t u r e . F i e l d s sideIndex = pHalfFlds . FindField ( ” side ” ) ’ print the distance I f Not ( p H a l f F e a t u r e I s Nothing ) Then ’ fetch fields I f p H a l f F e a t u r e . Value ( s i d e I n d e x ) = ” l e f t ” Then pFeature . Value ( Y Inde x F iel d ) = pMinimalDistance ∗ −1 E l s e I f p H a l f F e a t u r e . Value ( s i d e I n d e x ) = ” r i g h t ” Then pFeature . Value ( Y Inde x F iel d ) = pMinimalDistance ∗ 1 Else side = ” null ” End I f End I f Set p H a l f F e a t u r e = pFeatureCursorWithin . NextFeature Loop

79

L’assignation d’une notation positive ou n´gative aux valeurs de la dise tance au thalweg pourrait ˆtre ´galement r´alis´e avec les vertex de la ligne e e e e du thalweg. On aurait pu prendre un point du raster d’interpolation P, le point projet´ sur la ligne du thalweg T (en abaissant la perpendiculaire) et e un vertex de la ligne qui se trouve direction extr´mit´ nord V. A partir de e e ces trois points P, T, V on peut calculer l’angle. On consid`re le point ` e a examiner et le vertex de la ligne comme deux vecteurs (p et t) qui se croisent dans le point projet´ T. A partir de ces vecteurs on calcule le produit scae laire (´quation 5.4). Si le r´sultat est sup´rieur ` z´ro, le point examin´ se e e e a e e trouve ` droite du thalweg et s’il est inf´rieur ` z´ro le point se trouve ` la a e a e a gauche. (Le sens du thalweg ´tant donn´e de l’extr´mit´ sud ` l’extr´mit´ e e e e a e e nord.) XP XT p= − YP YT t= XV YV − XT YT (5.4)

p∗t avec : P : point ` examiner a V : vertex sur la ligne du thalweg T : point d’aplomb (sur la ligne du thalweg)

CHAPITRE 5. MISE EN PRATIQUE Pour mieux illustrer ce calcul, veuillez regarder les figures suivantes.

80

Fig. 5.11 – Le point ` examiner et un vertex de la ligne consid´r´s comme a ee deux vecteurs qui se rencontre dans le point T La possibilit´ de calcul d´crit ci-dessus aurait permis de d´terminer la e e e cote d’un point sans passer par une couche interm´diaire. J’ai d´cid´ quand e e e mˆme de passer par la couche du lac coup´ en deux, car il semble ˆtre diffie e e cile d’acc´der aux vertex de la ligne et le calcul pourrait ˆtre lent. e e Pour calculer le x des points, on se sert du point projet´ sur la ligne du ˜ e thalweg pour couper cette polyligne exactement ` ce point donn´. Une des a e lignes de sortie sera utilis´e pour obtenir le x en calculant sa longueur. Il e ˜ s’agit de bien faire attention ` prendre le bon segment. Ceci est r´alis´ en a e e regardant le sens de la polyligne. Il est d´termin´ par le point de d´part et le e e e point de fin. On peut connaˆ ces deux points en demandant les propri´t´s ıtre ee FromPoint et ToPoint de la polyligne, comme montr´ ci-sessous. e Dim Dim Dim Dim Listing 5.18 – Trouver le sens du thalweg t h a l w e g As ICurve z e r o P o i n t As I P o i n t z e r o x As Double z e r o y As Double

’ store the point of origin of the thalweg Set z e r o P o i n t = t h a l w e g . FromPoint zerox = zeroPoint . x zeroy = zeroPoint . y Dans le cas pr´sent, le point de d´part ´tait ´gal ` l’extr´mit´ nord du e e e e a e e thalweg. Mais on veut que le point de d´part ou le point z´ro soit l’extr´mit´ e e e e sud. Par cons´quent on a invers´ le sens de la polyligne en utilisant la e e

CHAPITRE 5. MISE EN PRATIQUE

81

m´thode ReverseOrientation sur l’objet polyligne. e Ayant v´rifi´ cette propri´t´, on coupe la ligne avec la m´thode split. Cette e e ee e commande coupe une g´om´trie en deux au point donn´ et stocke les sege e e ments r´sultants directement comme des nouvelles entit´s spatiales dans la e e couche (cf. listing 5.19). Des essais ont montr´ que ce n’est pas possible de e sauvegarder les segments r´sultants comme variables sans les stocker direce tement. Il fallait supprimer les nouvelles entit´s apr`s avoir calcul´ le x. e e e ˜ Ensuite on obtient la longueur du segment en demandant la propri´t´ length ee impl´ment´e dans l’interface ICurve. Cette longueur sera stock´e comme vae e e leur de la coordonn´e x. e ˜ Une op´ration inverse ` split existe seulement dans ArcView mais pas dans e a les ArcObjects. Il fallait donc cr´er une copie de la g´om´trie du d´part et e e e e ex´cuter l’op´ration de coupage avec la copie. Apr`s avoir obtenu la valeur e e e du x, on supprime les entit´s cr´es, pour r´it´rer la mˆme op´ration pour un ˜ e e e e e e autre point. Listing 5.19 – Coupage de la ligne du thalweg Dim Dim Dim Dim p F e a t u r e E d i t As I F e a t u r e E d i t pSegFeat As I F e a t u r e Segment As ICurve l e n g t h As Double

Set p F e a t u r e E d i t = p F e a t u r e C l a s s L i n e s . GetFeature ( 1 ) p F e a t u r e E d i t . S p l i t pPointSnap ’ measure l e n g t h o f l i n e t o p o i n t Set pSegFeat = p F e a t u r e C l a s s L i n e s . GetFeature ( 3 ) Set Segment = pSegFeat . Shape l e n g t h = Segment . l e n g t h Comme on ne veut pas int´grer toutes les valeurs de mesures dans l’intere polation, mais seulement celles qui se trouvent dans la zone ` examiner, on a cherche la zone dans laquelle un point est situ´ et on la stocke comme nouvel e attribut. On trouve la zone correspondante en appliquant un Relational Operator ` a la g´om´trie d’une zone par rapport ` tous les points. A cause des perfore e a mances, on construit une seule « g´om´trie » ` partir des g´om´tries qui e e a e e font une zone (les entit´s polygones, qui contiennent la mˆme valeur dans le e e champ « zone »). Ensuite on utilise le Relational Operator « contains » de l’interface IRelationalOperator sur les g´om´tries zones pour regarder dans e e laquelle des g´om´tries cr´´es auparavant se trouve un point. L’extrait du e e ee code 5.20 montre la d´termination des zones correspondantes. e

CHAPITRE 5. MISE EN PRATIQUE Listing 5.20 – D´termination de la zone e ’ f i n d t h e zone where t h e p o i n t i s w i t h i n and ’ r e t u r n t h e zone as s t r i n g Private Function g e t z o n e ( b a s e F e a t u r e C l a s s As I F e a t u r e C l a s s , p o i n t F e a t u r e As I F e a t u r e ) As String ’ c o n s t r u c t i o n o f a s i n g l e ” geometry ” b a s e d on ’ the geometries of reference Dim pEnumGeom As IEnumGeometry Set pEnumGeom = New EnumFeatureGeometry Dim p Q u e r y F i l t e r As I Q u e r y F i l t e r Dim pEnumGeometryBind As IEnumGeometryBind Set pEnumGeometryBind = pEnumGeom Dim pGeomFactory As IGeometryFactory Dim pGeom As IGeometry Dim pRelOp As I R e l a t i o n a l O p e r a t o r ’ zones Dim zone As String Dim temp As String Dim i As I n t e g e r zone = ”” i = 0 temp = ”Not d e f i n e d ” ’ loop a l l three zones : 0 − > l i t t o r a l , ’ 1 −> s u b l i t t o r a l , 2 − > c e n t r a l For i = 0 To 2 ’ Output F i l t e r t o b u i l d t h e geometry Set p Q u e r y F i l t e r = New Q u e r y F i l t e r

82

’ S e t t i n g t h e WhereClause : I f i = 0 Then zone = ” l i t t o r a l ” p Q u e r y F i l t e r . WhereClause = ” zone = ’ l i t t o r a l ’ ” E l s e I f i = 1 Then zone = ” s u b l i t t o r a l ” p Q u e r y F i l t e r . WhereClause = ” zone = ’ s u b l i t t o r a l ’ ” E l s e I f i = 2 Then zone = ” c e n t r a l ” p Q u e r y F i l t e r . WhereClause = ” zone = ’ c e n t r a l ’ ” End I f

CHAPITRE 5. MISE EN PRATIQUE pEnumGeometryBind . BindGeometrySource p Q u e r y F i l t e r , baseFeatureClass ’ C r e a t i o n o f a s i n g l e geometry b a s e d on t h e ’ ensemble of e n t i t i e s ” zones ” Set pGeomFactory = New GeometryEnvironment Set pGeom = pGeomFactory . CreateGeometryFromEnumerator (pEnumGeom) Set pRelOp = pGeom I f ( pRelOp . C o n t a i n s ( p o i n t F e a t u r e . Shape ) ) Then temp = zone End I f Next g e t z o n e = temp End Function

83

La derni`re ´tape consiste en l’impl´mentation de l’algorithme d’interpoe e e lation. Comme mentionn´ avant, l’algorithme d’inverse des distances IDW e sera utilis´. L’impl´mentation permettra de limiter le nombre de valeurs e e d’influence sous forme d’un tampon dont le rayon est choisi par l’utilisateur. Ce param`tre d´finit la taille du rayon de recherche autour de chaque point e e de la couche, ` l’int´rieur duquel les points de mesure seront s´lectionn´s et a e e e inclus dans le calcul d’interpolation. L’indication de la puissance p par contre sera obligatoire. Le programme est s´par´ en deux parties. Dans la premi`re partie les e e e valeurs d’entr´e seront r´cup´r´es et sauvegard´es dans un tableau en deux e e ee e dimensions. Ces sont les valeurs de mesures, qui seront interpol´es. Dans e l’autre partie on parcourt tous les points du raster d’interpolation pour calculer ses valeurs. Pour le calcul on utilise les valeurs d’influence stock´es e dans le tableau. Dans ce cas si l’utilisateur a choisit d’utiliser un tampon on ne peux pas utiliser un tableau. Des nouvelles g´om´tries circulaires seront cr´´es par e e ee un Topological Operator (cf. § 3.2.2 ITopologicalOperator ). Ces cercles sont construits autour de tous les points de mesure. Le rayon est celui indiqu´ e sur l’interface de la macro. Ensuite on applique un filtre spatial sur chaque point ` calculer. On y sp´cifie la nouvelle g´om´trie comme g´om´trie de a e e e e e r´f´rence. La relation spatiale ` v´rifier est appel´e «intersects» («contains» ee a e e marche ´galement). Grˆce ` l’h´ritage d’interface, on peut en mˆme temps e a a e e sp´cifier la clause where et des Subfields. Les Subfields sont des membres e qui font partie de l’interface IQueryFilter. Dans la clause where on indique que la macro ne doit chercher que des valeurs de mesures (dont la valeur «original» est ´gale ` 1) qui se trouvent dans la zone sp´cifi´e. Les Subfields e a e e sont utilis´s pour gagner en performance. e

CHAPITRE 5. MISE EN PRATIQUE

84

Ensuite on calcule la distance curviligne en utilisant le th´or`me de Pythae e gore et on interpole les valeurs de la densit´ (cf. listing 5.21). e Listing 5.21 – Routine d’interpolation avec un tampon ’ l o o p a l l p o i n t s , whose d e n s i t y −v a l u e s ’ are to i n t e r p o l a t e ’ u p d a t e o n l y t h e s e which a r e not ” o r i g i n a l ” Set p Q u e r y F i l t e r = New Q u e r y F i l t e r p Q u e r y F i l t e r . WhereClause = ” o r i g i n a l = 0 and zone = ’ ” & zone & ” ’ ” Set pF e at u r e C u r s o r = p F e a t u r e C l a s s P o i n t s . Update ( pQueryFilter , False ) Set pFeature = p F e a t u r e C u r s o r . NextFeature Do U n t i l pFeature I s Nothing denumerator = 0 numGMc = 0 numKgHa = 0 ’ i f search radius specified , loop o r i g i n a l ’ points in the s p e c i f i e d search radius I f chk Radius . Value = True Then ’ c r e a t i o n o f a b u f f e r around t h e p o i n t ’ with the radius tolerance Set pGeometry = pFeature . Shape Set pPoint = pGeometry Set p T o p o l o g i c a l O p e r a t o r = pGeometry Set pGeometry = p T o p o l o g i c a l O p e r a t o r . B u f f e r ( t x t D i s t a n c e . Value ) Set p F i l t e r = New S p a t i a l F i l t e r With p F i l t e r Set . Geometry = pGeometry . GeometryField = ”SHAPE” ’ . SpatialRel = esriSpatialRelContains . SpatialRel = esriSpatialRelIntersects . S u b F i e l d s = ”FID , xcurv , ycurv , d e n s k g h a , dens g m3 ” . WhereClause = ” o r i g i n a l = 1 and zone =’” & zone & ” ’” End With Set p I n s i d e F e a t u r e C u r s o r = Nothing Set p I n s i d e F e a t u r e C u r s o r = p F e a t u r e C l a s s P o i n t s . Search ( p F i l t e r , False )

CHAPITRE 5. MISE EN PRATIQUE

85

Set p O r i g F e a t u r e = p I n s i d e F e a t u r e C u r s o r . NextFeature Do U n t i l p O r i g F e a t u r e I s Nothing ’ the curvilinear distance d i s t a n c e C u r v = Sqr ( ( pFeature . Value ( x c u r v I n d e x F i e l d ) − p O r i g F e a t u r e . Value ( x c u r v I n d e x F i e l d ) ) ˆ 2 + ( pFeature . Value ( y c u r v I n d e x F i e l d ) − p O r i g F e a t u r e . Value ( y c u r v I n d e x F i e l d ) ) ˆ 2 ) ’ the value of the user s e l e c t e d a t t r i b u t , ’ f o r which v a l u e s s h o u l d be i n t e r p o l a t e d interpolGMc = p O r i g F e a t u r e . Value ( dens g m3IndexField ) interpolKgHa = p O r i g F e a t u r e . Value ( dens kg haIndexField ) ’ numerator and denumerator o f IDW e s u l t −r denumerator = denumerator + ( ( 1 / d i s t a n c e C u r v ) ˆ cbo power . Value ) numGMc = numGMc + ( ( ( 1 / d i s t a n c e C u r v ) ˆ cbo power . Value ) ∗ interpolGMc ) numKgHa = numKgHa + ( ( ( 1 / d i s t a n c e C u r v ) ˆ cbo power . Value ) ∗ interpolKgHa ) Set p O r i g F e a t u r e = p I n s i d e F e a t u r e C u r s o r . NextFeature Loop resultIDWGMc = numGMc / denumerator resultIDWKgHa = numKgHa / denumerator ’ i f no s e a r c h r a d i u s i s s p e c i f i e d Else ’ s i m p l e i n t e r p o l a t i o n r o u t i n e w i t h no b u f f e r ’ loop a l l input data ( stored in the array ) EndIf A la fin le programme rafraˆ ıchit l’affichage de la couche du raster d’interpolation. Les entit´s sont repr´sent´es par des carr´s en couleur d´grad´e e e e e e e allant du jaune clair au marron fonc´ en fonction de valeur stock´e dans le e e champ « dens kg ha » (la densit´ en kg/ha). La classification est effectu´e e e en choisissant le nombre de classes et la m´thode de classification. Il existe e plusieurs m´thodes de classification : seuils naturels 5 , classes personnalis´es, e e effectifs ´gaux, intervalles ´gaux et ´cart type. Ici, la densit´ est classifi´e e e e e e par des seuils naturels en dix classes.
5

Natural Break en englais

CHAPITRE 5. MISE EN PRATIQUE

86

La carte 5.12 montre la densit´ en g/m3 interpol´e avec p ´gale ` 2 et e e e a sans avoir sp´cifi´ un tampon. Dans le sud la densit´ piscicole varie beaue e e coup. Pour mieux illustr´ ce fait, on voie les mˆmes valeurs avec un autre e e d´grad´ de couleurs dans la carte 5.13. e e Dans l’annexe on trouvera d’autres cartographies qui sont obtenues par d’autre param´trage. e

Fig. 5.12 – Donn´es filets interpol´es avec p=2 et sans tampon e e

CHAPITRE 5. MISE EN PRATIQUE

87

Fig. 5.13 – Donn´es filets interpol´es avec p=2 et sans tampon e e Les donn´es acoustiques (cf. § 5.1.3) sont interpol´es de la mˆme fa¸on. e e e c Apr`s avoir obtenu les cartographies r´sultant des densit´s de poisson, on e e e voyait une grande diff´rence entre les valeurs calcul´es ` partir des donn´es e e a e filets et celles des donn´es acoustiques. Cela r´sulte du fait que la densit´ e e e piscicole dans les points de mesure n’´tait pas bien calcul´e. Le volume e e attenante en est la raison. On a suppos´ qu’il correspond ` la surface ate a tenante qui est ´gale ` 238m2 multipli´e par la profondeur du lac (cf. § e a e 5.3.1) dans ce point. On a suppos´ que le volume attenant serait un pae rall´l´pip`de rectangle. Mais en fait le volume sond´ s’apparente ` un cˆne, ee e e a o

CHAPITRE 5. MISE EN PRATIQUE

88

d’angle d´termin´, dont le sommet est situ´ sur l’´cho-sondeur. e e e e La carte 5.14 montre la cartographie r´sultant des donn´es acoustiques e e (avec p=2 et sans tampon). Mˆme si les valeurs n’ont pas ´t´ bien calcul´es, e ee e le traitement des donn´es n’a pas ´t´ inutile. Grˆce ` cette cartographie e ee a a on voit quels r´sultats l’algorithme d’interpolation curviligne donne avec un e grand nombre de valeurs d’entr´e. Une fois que l’on sait comment calculer e le bon volume attenant, on peut facilement appliquer la mˆme proc´dure e e d’interpolation sur ces donn´es suivant les indications du guide d’utilisateur e (cf. § 5.4). Il faut seulement trouver comment exprimer le volume sond´ en e une surface attenante et une profondeur. La surface sera stock´e dans le e champ « surface » de la couche des valeurs des mesures et la profondeur sera obtenue ` partir du raster qui repr´sente la bathym´trie du lac. a e e

CHAPITRE 5. MISE EN PRATIQUE

89

Fig. 5.14 – Donn´es acoustiques interpol´es avec p=2 et sans tampon e e

CHAPITRE 5. MISE EN PRATIQUE

90

Outre l’interpolation, il s’agit de calculer la densit´ de poisson moyenne e de toutes les zones. Pour obtenir la moyenne on pourrait prendre la mˆme e proc´dure qui sert ` interpoler les valeurs. On l’ex´cute avec p ´gale ` 0, ce e a e e a qui assignerait aux points la moyenne de tous les points de mesure d’une zone, comme montr´ ci-dessous : e z(x) = avec p = 0 : z(x) =
n 1 0 i=0 ( di ) ∗ z(i) n 1 0 i=0 ( di ) n 1 p i=0 ( di ) ∗ z(i) n 1 p i=0 ( di )

(5.5)

= z(x) =
n i=0 1 ∗ z(i) n i=0 1

= z(x) = avec : z(x) : la valeur du point x ` interpol´e a e n : nombre de valeurs de mesure z(i) : la valeur de mesure du point i di : la distance du point x au point i Etant donn´ la longueur du calcul, j’ai programm´ une autre macro, qui e e prend toutes les valeurs interpol´es de la densit´ et calcule la densit´ moyenne e e e de toutes les zones (en kg/ha et en g/m3). Ce calcul est beaucoup plus rapide. La macro calcule la densit´ de chaque zone et la stocke dans la table e d’attribut de la couche des zones. Apr`s, elle affiche les densit´s moyennes de e e chaque zone avec les couleurs suivantes : jaune clair, marron clair et marron fonc´. e La figure 5.15 montre la couche r´sultante cr´´e ` partir des donn´es filets e ee a e interpol´es. e
n i=0 z(i)

n

CHAPITRE 5. MISE EN PRATIQUE

91

Fig. 5.15 – Densit´ piscicole moyenne e

CHAPITRE 5. MISE EN PRATIQUE

92

5.4
5.4.1

Guide d’utilisateur
Avant-propos

Le projet est r´alis´ en collaboration avec la Maison de la T´l´d´tection e e ee e en mars, avril, mai 2004 par Claudia Dittrich (claudia dittrich@gmx.de), ´tudiante allemande en informatique. Le sujet ´tait donn´ par Dr. Nadou e e e Cadic, ancien chercheur au sein de l’unit´ de recherche RIPE6 , actuellement e d´l´gu´ r´gional du Conseil Sup´rieur de la Pˆche. ee e e e e Ce guide explique comment utiliser les macros, que j’ai d´velopp´es pene e dant mon stage. Je l’ai ´crit pour des non-informaticiens, pour ceux qui e veulent utiliser les programmes. Par cons´quent, il n’explique pas le code e source. Pour plus d’informations sur la programmation, veuillez consulter le rapport final (« Diplomarbeit », r´dig´ en fran¸ais). e e c

5.4.2

Objet

Les macros que j’ai programm´es servent ` interpoler les densit´s de poise a e sons en tout point d’une ´chelle choisie sous ArcMap (` partir de version e a 8.0). La proc´dure d’interpolation prend en compte l’orientation curviligne e du lac et les diff´rentes zones d’habitats. Pour plus d’informations sur la e fa¸on d’interpoler les valeurs (l’interpolation curviligne), veuillez consulter c le rapport final. On peut imaginer d’appliquer la mˆme proc´dure pour un autre lac, pour e e la densit´ des autres points d’entr´e ou pour interpoler un autre attribut e e que celui de la densit´. Dans les explications suivantes je ferai r´f´rence ` ce e ee a qu’il faut respecter dans ces cas-l` (remarques cursives). a Les macros sont toutes programm´es en Visual Basic for Applications en utie lisant l’environnement de programmation propre ` ArcGIS « ArcObjects ». a La proc´dure d’interpolation est impl´ment´e de fa¸on modulaire, pour poue e e c voir mieux comprendre les ´tapes en d´tail et pour pouvoir les modifier si e e n´cessaire. e Par cons´quent, j’ai d´velopp´ plusieurs macros auxquelles il faut fournir les e e e bonnes entr´es et les lancer dans le bon ordre. Je pr´senterai le d´tail de ces e e e entr´es grˆce ` des impressions d’´crans dans la prochaine section. e a a e Pour obtenir une carte qui montre l’attribut interpol´, il faut donc suivre un e chemin. Sinon, j’ai d´j` cr´´ des cartographies de la densit´ de poissons du lac e a ee e Eguzon, qu’on peut analyser. Ces couches de r´sultats sont stock´es dans le e e r´pertoire « Interpolation/output/ » du projet d’ArcMap « Eguzon.mxd », e qui sont obtenues par la mˆme proc´dure d’interpolation. e e Les diff´rentes ´tapes pour obtenir une carte comme celles-ci sont d´crites e e e dans la prochaine section L’utilisation.
6

RIPE : Ressources Ichtyologiques en Plans d’Eau

CHAPITRE 5. MISE EN PRATIQUE

93

5.4.3

L’utilisation

Toutes les macros ne sont accessibles que dans le document « Eguzon.mxd », car elles sont stock´es directement avec le projet. Si on ouvre un e autre projet ou si on cr´e un nouveau sous ArcMap, elles n’existent pas. e Quand on ouvre le document « Eguzon.mxd », on voit une barre d’outils qui s’appelle « Interpolation curviligne ». Par les boutons de cette barre on lance la proc´dure d’interpolation. Il y a six macros accessibles, dont deux e pour la cr´ation des couches d’entr´e, deux pour la pr´paration des donn´es e e e e a ` interpoler, une pour l’interpolation elle-mˆme et une suppl´mentaire pour e e calculer la moyenne. La figure 5.16 montre cette barre d’outil.

Fig. 5.16 – Access aux macros pour l’interpolation

Cr´er des couches d’entr´e e e Comme entr´e pour la proc´dure il nous faut les couches suivantes : e e 1. La surface du lac comme polygon-feature-layer (ici : « lac ») 2. Le thalweg comme polyline-feature-layer (ici : « thalweg ») 3. Les valeurs de mesures comme point-feature-layer (ici : « filets ») 4. Un raster layer repr´sentant les profondeurs du lac (ici : « lakegridlin ») e 5. Les zones comme polygon-feature-layer (ici : « zones ») Toutes ces couches sont d´j` cr´´es ` partir des donn´es d’Excel en utilisant e a ee a e les fonctions d’ArcMap. Elle sont disponibles dans le projet « Eguzon.mxd ». Pour plus d’informations comment elles sont cr´´es consultez le rapport fiee nal. A partir de ces couches, on cr´e deux autres couches qui sont n´cessaires e e pour l’interpolation. L’une repr´sente le lac coup´ en deux selon le thalweg e e et l’autre repr´sente le lac coup´ en carr´s. e e e On cr´e la premi`re avec la macro « splitPoly ». La figure 5.17 montre quelles e e couches il faut lui passer comme entr´e. e Apr`s avoir ex´cut´ l’op´ration, la macro cr´e une nouvelle couche dont le e e e e e nom a ´t´ sp´cifi´ sur l’interface. Cette couche contient deux features 7 de ee e e type polygone : la partie gauche et la partie droite du lac. Remarque : Notez bien que le nom de la couche de sortie est limit´ ` 13 e a lettres.
7

terme technique : objet g´ographique avec une g´om´trie e e e

CHAPITRE 5. MISE EN PRATIQUE

94

Fig. 5.17 – Macro : Split polygon Maintenant on cr´e la deuxi`me couche ; celle qui contient le lac coup´ en e e e carr´s. Cette op´ration peut ˆtre r´alis´e dans ArcView. J’ai trouv´ une e e e e e e macro, qui convient exactement ` ce besoin. C’est pour cela que je n’ai pas a reprogramm´ la proc´dure. e e La macro s’appelle « Square your polygon ». Je l’ai trouv´ sur le site e web d’ESRI : http ://arcscripts.esri.com/details.asp ?dbid=11893. Elle est d´velopp´e dans Avenue par Birgit Rasmussen et Eva Overby Bach. Je l’ai e e impl´ment´e dans ArcView. Elle est accessible dans le projet «cares.apr» e e stock´ dans le r´pertoire « Eguzon/ArcView » en cliquant sur le bouton e e « Square » dans ArcView. L’impression d’´cran 5.18 montre l’affichage dans e ArcView. Remarque : Si on travaille avec un autre lac ou le projet « cares.apr » n’est pas disponible, il faut ajouter cette macro dans ArcView pour pouvoir utiliser sa fonctionnalit´. e Voici les ´tapes ` suivre dans ArcView, pour cr´er la deuxi`me couche e a e e n´cessaire pour l’interpolation : e 1. Ouvrez le projet « cares.apr » stock´ dans le r´pertoire « Eguzon/Arce e View ». Vous voyez deux couches. 2. Commencez une session d’´dition sur la couche « Carre.shp », pour e pouvoir l’´diter : Theme -> Start Editing. e 3. Lancez la macro « Square your polygon », en cliquant sur le bouton « Square ». 4. Choisissez la taille des carr´s de sortie. Attention : La taille du carr´ e e que vous choisissez ici d´termine la r´solution de votre carte de sortie e e et la dur´e de calcul. Elle n’influence pas la pr´cision de calcul, mais e e la qualit´ de l’affichage des r´sultats sous forme d’une carte. 10 ou 15 e e sont des bonnes valeurs. L’unit´ est en m`tres. e e 5. Lancez l’op´ration : bouton « OK » -> La macro coupe le polygone e de la couche « carre » en carr´s de la taille d´finie pr´c´mment. (La e e e e

CHAPITRE 5. MISE EN PRATIQUE

95

Fig. 5.18 – La proc´dure de d´coupage dans ArcView e e proc´dure peut prendre quelques minutes selon la taille choisie.) e 6. Stoppez la session d’´dition et saufgardez l’´dition : Theme -> Stop e e Editing ; « Save Edits to Carre.shp » ? : « Yes ». 7. D´coupez la couche des carr´s avec la forme du lac : e e (a) Ajouter l’extension « XTools » : File -> Extension, cochez «XtoolsExtensions» (b) Param´trage de d´coupe : Xtools -> Clip With Polygon(s) avec : e e Input Theme = « Carre.shp » et Clip Theme = « lac entier.shp ». Donnez un nom au fichier de sortie. (c) D´coupe : La proc´dure prend quelques secondes. Apr`s il ajoute e e e la nouvelle couche dans la vue. 8. Ajoutez la nouvelle couche dans le projet ArcMap : File -> Add Data Remarque : Si on travaille avec un autre lac, il faut cr´er une nouvelle couche e avec seulement un feature, qui est celui d’un polygone recouvrant toute la

CHAPITRE 5. MISE EN PRATIQUE

96

surface du lac avant ex´cuter les pas d´crits en haut. En plus il faut ajouter e e la couche contenant la surface du lac dans ArcView. Pr´paration des donn´es filets pour l’interpolation e e Ayant cr´´ les deux couches d’entr´e, on pr´pare les donn´es points qu’on ee e e e veut interpoler. La pr´paration est r´alis´e avec les deux macros : « calcIne e e put » et « calculateCo ». Avant les indications d’utilisation, j’expliquerai d’abord la fonctionnalit´ de ces macros. e La premier macro, « calcInput » cr´e une couche avec des points distribu´s e e r´guli`rement (le raster d’interpolation). e e La macro prend les label points de tous les carr´s de la couche des carr´s du e e lac et les stocke dans une nouvelle couche. En plus, il transmet les points de mesure dans ce raster et calcule l’attribut densit´ qui d´pend du poids e e mesur´ et du volume ´chantillonn´. Le poids est indiqu´ dans le champ e e e e «poids tot» de la couche des points de mesure. Le volume ´chantillonn´ sera e e calcul´ ` partir de la surface attenante indiqu´e dans le champ « surface m2 » ea e de la couche des points de mesure et ` partir de la profondeur du lac ` l’ena a droit o` le filet ´tait pos´ (plus pr´cis´ment : la profondeur du label point u e e e e sur lequel le point de mesure sera projet´). e Voici la formule de calcul de la densit´ : e dens = avec : dens : densit´ e p : poids A : surface attenante h : profondeur du lac Remarque : Il faut tenir compte que l’unit´ du volume d´pend de l’unit´ e e e dans laquelle la surface attenante et la profondeur du lac dans le raster-layer du lac est indiqu´e. e La figure 5.19 montre quelles couches il faut choisir comme entr´e. e Apr`s avoir lanc´ la macro il faut ˆtre patient, car il faut du temps pour e e e calculer tous les label points et la densit´ des points de mesure. La dur´e e e d´pend fortement de la taille choisie pour les carr´s et du nombre de points e e de mesure dont on dispose (environ 22 minutes pour une r´solution de 10 e m et 28 points de mesure). On voit l’avancement de calcul dans la barre de progr`s en bas, qui affiche la tˆche qui est en cours d’ex´cution. (« Genee a e rating raster » et « Calculating density »). N’arrˆtez pas le calcul, car cela e terminerait tout le programme ArcMap. Apr`s avoir ex´cut´ l’op´ration, la macro cr´e une nouvelle couche dont le e e e e e p A∗h (5.6)

CHAPITRE 5. MISE EN PRATIQUE

97

Fig. 5.19 – Macro : Calculate Input nom a ´t´ sp´cifi´ sur l’interface. Cette couche contient des points distribu´s ee e e e r´guli`rement : le raster d’interpolation. Quelques points ont une valeur de e e densit´ indiqu´e dans les champs « dens g m3 » et « dens kg ha ». Ce sont e e les densit´s des points de mesure. On les trouve aussi en regardant la valeur e du champ « original ». Si c’est « 1 », il s’agit d’un point de mesure (d’un point original). Ne soyez pas ´tonn´ si vous trouvez moins de points origie e naux dans la couche cr´´e juste avant que des points de mesure. Cela peut ee arriver s’il y a plusieurs points de mesure qui tombent dans un label point. Dans ce cas elle prend la moyenne des poids. La deuxi`me macro, « calculateCo » calcule les coordonn´es du rase e ter d’interpolation dans le syst`me de coordonn´es curvilignes. En plus elle e e marque dans quelle zone un point se trouve. Elle ne cr´e pas une nouvelle couche de sortie, mais stocke les coordonn´es e e curvilignes dans des nouveaux champs « xcurv » et « ycurv » du raster d’interpolation et marque dans quelle zone un point se trouve (champ « zone »). Pour cette op´ration il y a besoin de la ligne de r´f´rence (ici : le thalweg), e ee des zones et du lac coup´ en deux (pour pouvoir d´terminer de quel cot´ de e e e la ligne de r´f´rence un point se trouve). ee La figure 5.20 montre quelles couches il faut choisir comme entr´e. e Ce calcul prend environ 36 minutes pour la mˆme r´solution que la pr´c´dente e e e e a ` cause de la lenteur de Visual Basic. La barre de progr`s montre l’avancee ment du calcul de la tˆche « Calculating coordinates ». a Il faut savoir, que tous les points du raster d’interpolation se trouvant en dehors du lac seront supprim´s. e Maintenant les donn´es sont prˆtes pour l’interpolation. e e

CHAPITRE 5. MISE EN PRATIQUE

98

Fig. 5.20 – Macro : calculateCo L’interpolation L’interpolation est r´alis´e en utilisant l’algorithme IDW. e e L’algorithme IDW (Inverse Distance Weighted) suppose que le poids des points voisins diminue en fonction de la distance. Il faut sp´cifier la puise sance p, qui indique l’influence des points voisins. Plus p est haut, plus le poids des points ´loign´s diminue et les points voisins d´terminent la valeur e e e interpol´e. e Comme option l’utilisateur peut sp´cifier un tampon dans lequel il doit s´lece e tionner toutes les valeurs d’influence. Ce buffer est d´fini sur le rayon (la e distance) que l’utilisateur choisi. Cette option n’a de sens que si on a un grand nombre de points de mesure et s’il s’agit d’une haute d´pendance e r´gionale de l’attribut interpol´. Pour les donn´es de filet par exemple, dont e e e le nombre de points de mesure est tr`s faible, il vaut mieux ne pas choisir e un tampon pour inclure tous les points de mesure dans l’interpolation. Remarque 1 : Si on a un grand nombre de points de mesure (> 1600), il faut entrer dans le code source et agrandir le tableau, qui contient tous les points originaux. Remarque 2 : Si on a une autre ´chelle ou si on travaille avec un lac de e taille diff´rente, il faut ´ventuellement changer la distance maximale pour le e e tampon dans le code source. Le calcul interpole les valeurs s´par´ment pour chaque zone. Par exemple e e pour un point situ´ dans la zone littorale, il ne prend que les valeurs des e points de mesure de cette zone, pour d´terminer sa valeur. e Comme distance entre des points il calcule la distance curviligne avec les coordonn´es curvilignes calcul´es juste avant. Elle est calcul´e avec le th´or`me e e e e e

CHAPITRE 5. MISE EN PRATIQUE

99

de Pythagore. Voici on voit comment les densit´s seront calcul´es avec la formule de l’ale e gorithme d’IDW : z(x) =
n 1 p i=0 ( di ) ∗ z(i) ˜ n 1 p i=0 ( di ) ˜

(5.7)

avec : z(x) : la valeur du point x ` interpol´e a e n : nombre de valeurs de mesure z(i) : valeur de mesure du point i ˜ di : la distance curviligne du point x au point i p : puissance La figure 5.21 montre quelles couches il faut choisir en entr´e : e

Fig. 5.21 – Macro : Interpolate Lanc´ la macro, elle calcule la densit´ de tous points « non originaux » e e du raster d’interpolation en interpolant les valeurs des points de mesure stock´es dans les champs « dens g m3 » et « dens kg ha ». e La vitesse du calcul d´pend de si on a choisi un tampon ou pas. L’interpoe lation sans tampon est tr`s rapide. L’interpolation avec tampon peut ˆtre e e assez lente, d´pendant du nombre de points de mesure, de la r´solution du e e raster d’interpolation et du rayon sp´cifi´. Pour 12 valeurs de mesure, une e e r´solution de 10 m`tres et un rayon de 2000 m`tres, le calcul prend 37 mie e e nutes par exemple. A la fin il rafraˆ ıchit l’affichage de la couche du raster d’interpolation. Elle repr´sente le champ « dens kg ha » (la densit´ en kg/ha) classifi´ en diff´e e e e rentes couleurs d´grad´es allant du jaune clair au marron fonc´. La densit´ e e e e est classifi´e par « Natural Breaks » en dix classes. e Mais il est facile de changer la symbolisation de ce champ ou de choisir un autre champ, ci qui est d´crit dans la prochaine section Changer l’affichage. e

CHAPITRE 5. MISE EN PRATIQUE

100

5.4.4

Changer l’affichage

Pour symboliser un autre attribut de la couche (notamment celui de la densit´ en g/m3) ou pour changer l’affichage actuel, il suffit d’aller dans e le menu « Layer Properties » -> Symbology et d’y choisir un autre Color Ramp, Classification Method ou Classification. Remarque : Si ArcMap affiche le message d’erreur suivant : « Maximum sample size reached. Not all records are being used. Use this sample or change maximum sample size. » augmentez le Maximum sample size dans Classification -> Sampling. Cela peut arriver, si on a plus de 10 000 valeurs a ` classifier (des features). C’est le cas, si la r´solution choisie est tr`s grande e e (ici : si la taille de pixel est inf´rieur ` 12 m`tres). e a e

5.4.5

Compl´ment : Calculer la moyenne e

En outre j’ai programm´ une macro qui offre la possibilit´ de calculer e e la densit´ moyenne de toutes les zones. Cette macro s’appelle « average ». e Elle prend toutes les valeurs interpol´es de la densit´ (celles du raster d’ine e terpolation) et calcule la densit´ moyenne de toutes les zones (en kg/ha et e en g/m3). Elle les stocke dans la couche qui contient les zones. La figure 5.22 montre quelles couches il faut choisir comme entr´e : e

Fig. 5.22 – Macro : Average Le calcul est tr`s rapide. La macro calcule la densit´ de chaque zone et la e e stocke dans la table d’attribut de la couche des zones. Apr`s, elle affiche les e densit´s moyennes de chaque zone avec les couleurs suivantes : jaune clair, e marron clair et marron fonc´. e La figure 5.23 montre une cartographie de la densit´ cr´´e grˆce ` cette e ee a a proc´dure (avec power ´gale ` 2, sans tampon). e e a

CHAPITRE 5. MISE EN PRATIQUE

101

Fig. 5.23 – Cartographie de la densit´ (couche de sortie) e

Chapitre 6

Conclusion et perspective
6.1 R´sultats atteints e

L’objectif premier de ce travail d’´tude ´tait de traiter les donn´es r´sule e e e tant des ´chantillonnages dans un SIG et de pr´senter les r´sultats visuellee e e ment. Dans le cadre de ce projet les possibilit´s de rentrer des donn´es et e e d’acc´der aux donn´es spatiales du SIG ont ´t´ ´tudi´es. En outre il s’agissait e e e ee e de trouver une solution pour interpoler les donn´es d’entr´e de fa¸on approe e c pri´e. J’ai d´velopp´ une m´thode d’interpolation qui prend en compte les e e e e caract´ristiques naturelles de l’objet examin´. Elle est pr´sent´e dans cette e e e e ´tude. Le mod`le de repr´sentation et le traitement spatial des donn´es proe e e e venant des ´chantillonnages pouvaient ˆtre mis en pratique. Le but final de e e cartographier les r´sultats obtenus du traitement pouvait aussi ˆtre atteint. e e Le projet a demand´ des connaissances dans plusieurs domaines, comme e l’informatique, les math´matiques, la g´ologie et la biologie. Le savoir en e e l’informatique et les math´matiques provient de mes ´tudes. Les connaise e sances n´cessaires dans la g´ologie et la biologie, je les ai assimil´es pendant e e e la courte p´riode du stage. Certainement on peut ´largir et am´liorer le e e e projet en se fondant sur les r´sultats obtenus. e

6.2

Perspective

On peut appliquer la mˆme proc´dure pour interpoler un autre attribut e e que celui de la densit´ ou pour faire des ´tudes sur un autre lac ou un autre e e ph´nom`ne naturel (cf. § 6.2.2). e e La proc´dure d’interpolation est impl´ment´e d’une mani`re g´n´rale qui e e e e e e permet de facilement faire des modifications, pour remplacer les algorithmes par exemple. On pourrait ´changer l’algorithme d’interpolation, la projece tion des points dans le syst`me de coordonn´es curvilignes ou le calcul de e e distance. On trouvera des id´es d’´volution de ma solution dans la section e e 102

CHAPITRE 6. CONCLUSION ET PERSPECTIVE Ouverture du projet.

103

6.2.1

Ouverture du projet

La mani`re dont est interpol´e la densit´ piscicole est innovante et je e e e pense qu’il serait int´ressant d’impl´menter d’autres algorithmes d’interpoe e lation pour regarder s’ils donnent de meilleurs r´sultats. e L’algorithme g´ostatistique de cartographie « le krigeage » est ´ventuellement e e mieux adapt´ au probl`me, car il permet de prendre en compte le come e portement spatial sp´cifique de la r´partition des poissons. Grˆce ` l’autoe e a a corr´lation du krigeage, on pourrait obtenir une carte plus repr´sentative e e de la r´alit´. Il s’agit de bien choisir les param`tres. D’autres algorithmes e e e d’interpolation peuvent aussi ˆtre envisag´s. e e En outre on pourrait donner une puissance plus forte ` l’axe de r´f´rence a ee qu’` sa perpendiculaire en choisissant un poids plus fort pour le x que le a ˜ y. Cela peut ˆtre r´alis´ simplement en multipliant le x par une valeur ˜ e e e ˜ constante. Le calcul de distance peut aussi ˆtre am´lior´. On pourrait choisir une e e e autre m´thode que celle de Pythagore qui tient compte des angles diff´rents e e ˜ des abscisses Y. Une autre solution serait de calculer le y d’un point en ˜ ˜ prenant compte de l’angle de son abscisse Y et de celui des autres points. Ceci permettrait d’utiliser l’algorithme de Pythagore pour calculer les distances. On pourrait ´galement envisager d’additionner les y de deux points, dont la e ˜ distance est ` calculer, plus la longueur du segment de la ligne du thalweg a entre les deux points pour obtenir leur distance.

6.2.2

Application des r´sultats e

Il est bien possible d’ajouter d’autres points de mesure pour inclure plus de points dans l’interpolation. Cela peut se faire simplement en posant les points au bons endroits du mod`le num´rique du lac sans modifier le code e e source. La proc´dure d’interpolation obtenue peut aussi ˆtre appliqu´e sur d’autres e e e probl´matiques. On pourrait imaginer d’interpoler de la mˆme mani`re des e e e attributs d’autres ph´nom`nes naturels dont la g´om´trie est le facteur e e e e ´cologique d´terminant la r´partition spatiale. Une interpolation curviligne e e e pourrait ˆtre effectu´e sur les plantes aquatiques des lacs ou des rivi`res ou e e e sur la v´g´tation des forˆts ou des montagnes, par exemple. Il suffit d’avoir e e e une ligne de r´f´rence qui est d´riv´e de la caract´ristique naturelle de l’objet ee e e e examin´. e

Bibliographie
[AODH03] ESRI : ArcObjects Developer Help, ArcGIS Version 8.3 [Bo02] [Co04] Patricia Bordin : SIG : concept, outils et donn´es. Herm`s e e Science Publications, Paris 2002 Gildas Le Corre - IFREMER, S`te, : Outil d’analyse par Krie geage : http ://www.faocopemed.org/vldocs/0000028/ publi15.pdf, Atelier SIG COPEMED, Malaga 15-19/12/1998 ESRI - France : S´minaire ArcGIS pour le Mast`re SILAT, e e D´cembre 02 e

[EF02]

[ENSG02] Ecole Nationale des Sciences G´ographiques - Centre d’Etudes et e de Recherche en SIG : ArcGIS 8.1 Fonctionnalit´s, Juillet 2002 e - v1.0 [ENSG03] Ecole Nationale des Sciences G´ographiques - Centre d’Etudes e et de Recherche en SIG : Introduction ` la programmation en a VBA sur ArcGIS, Juillet 2003 [ESRI00] [ESRI02] [ESW04] [FAQ04] ESRI : Developing Applications with ArcInfo : An Overview of ArcObjects, An ESRI White Paper, Avril 2000 ESRI : Getting Started With ArcGIS, New York 2002 ESRI - site web : http ://www.ESRI.com/software/arcgis/ arcgisxtensions/spatialanalyst/faqs.html/#q12, Avril 04 ESRI - site web : http ://www.ESRI-suisse.ch/news/ ESRI/ news/articles/n0301301/ m.html, 30.01.03

[HaAn03] John E. Harmon, Steven J. Anderson : The Design and Implementation of Geographic Information Systems. John Wiley & Sons, Hoboken, New Jersey 2003 [HE02] [IGN04] [Li99] CD de M. Heintz : Eguzon, 2002 IGN - site web : http ://www.ign.fr/affiche rubrique.asp ?rbr ¯ id¯ 1068&lng idFR, Mai 04 Dr. Dr.-Ing. Wilfried Linder : Geo-Informations-systeme. Springer Verlag, Berlin Heidelberg 1999

[OFPU96] R´seaux et territoires - Significations crois´es, sous la direction e e de Jean-Marc Offner et Denise Pumain, Editions de l’aube, 1996 104

BIBLIOGRAPHIE [ON03]

105

´ Benoit St-Onge - GEO7531 STRUCTURES DES DONNEES ´ APPLIQUEES AUX SIG : http ://www.unites.uqam.ca/dgeo/ geo7531/recueil.pdf, D´partement de g´ographie Universit´ du e e e Qu´bec ` Montr´al, 2003 e a e Birgit Rasmussen et Eva Overby Bach : Macro : Square your polygon, http ://arcscripts.esri.com/details.asp ?dbid=11893 Philippe Rigaux, Michel Scholl, Agn`s Voisard : Spatial Datae bases With Application to GIS. Academic Press, USA 2002 Shashi Shekhar, Sanjay Chawla : Spatial Databases : A Tour. Prentice Hall, New Jersey 2003

[RO00] [RSV02] [ShCh03]

Annexe A

106

ANNEXE A.

107

A.1

Class Diagram Key

Fig. A.1 – Class Diagram Key

ANNEXE A.

108

A.2

Cartographies

Fig. A.2 – Interpolation lin´aire de la densit´ piscicole des donn´es filets en e e e kg/ha

ANNEXE A.

109

Fig. A.3 – Interpolation curviligne de la densit´ piscicole des donn´es filets e e en kg/ha avec p=2 et sans tampon

ANNEXE A.

110

Fig. A.4 – Interpolation curviligne de la densit´ piscicole des donn´es filets e e en kg/ha avec p=2 et avec tampon=2000m

ANNEXE A.

111

Fig. A.5 – Interpolation curviligne de la densit´ piscicole des donn´es filets e e en g/m3 avec p=2 et avec tampon=2000m

ANNEXE A.

112

Fig. A.6 – Interpolation curviligne de la densit´ piscicole des donn´es filets e e en g/m3 avec p=2 et sans tampon

ANNEXE A.

113

Fig. A.7 – Interpolation curviligne de la densit´ piscicole des donn´es filets e e en g/m3 avec p=2 et avec tampon=2000m

ANNEXE A.

114

Fig. A.8 – R´partition de la densit´ en [g/m3] interpol´e ` partir des donn´es e e e a e filets avec p=2 et avec tampon=2000m

Fig. A.9 – R´partition de la densit´ [kg/ha] interpol´e ` partir des donn´es e e e a e filets avec p=2 et sans tampon

Annexe B

115

ANNEXE B.

116

B.1

User Tips « Create Contours »
Create Contours : Functionality

About This program was written using Visual Basic for Applications in ArcGIS 8.3. To use, simply import the form into the Visual Basic Editor in ArcMap and run. This macro was developed at Maison de la T´l´d´tection, Montpellier (France) ee e in March ’04. Developer : Claudia Dittrich (claudia dittrichgmx.de) Supervisors : Prof. Dr. Peinl, Dr. Nadou Cadic, Dr. Jean-Pierre Ch´ry, Dr. e Jean-St´phane Bailly e Description This program derives the contours of a surface based on given elevation values. It functions in a similar way to Contour of Spatial Analyst, but differs from the latter in that it generates contours on specified elevation values rather than basing them on a specified interval. The macro presents a user interface with a dropdown list of all raster layers in the current data frame, a listbox of possible elevation values and a textbox for the output file. Before launching the program, select the input raster layer for which you wish the contours to be calculated. Then specify the elevation value(s). You can select as many values as required. Finally select the output file. The contours will appear as 2D polylines in a new shapefile in the specified folder. The height of each contour is stored in the attributed field elevation. The created shapefile will be assigned the same coordinate system as the Map’s SpatialReference and will be added as a new layer to the current map. User Tips You must have added a raster layer to the current map. WorkspaceEdit must be turned off as this member needs to add a field to the feature class. The elevation values presented in the listbox may be changed by editing the code line N °68 lb elevation.AddItem i, if you want values other than the default settings.

ANNEXE B.

117

B.2

Code source
Listing B.1 – Calcul de la densit´ e

’ loop a l l nets Dim pGeomFilet As IGeometry Dim p F i l t e r As I S p a t i a l F i l t e r Dim pF e at u r e C u r s o r As I F e a t u r e C u r s o r Dim p R e s u l t F e a t C u r s o r As I F e a t u r e C u r s o r Dim p R e s u l t F e a t As I F e a t u r e Dim squareID As Long Dim p o i n t C o n t a i n e d As Boolean Dim Dim Dim Dim Dim Dim Dim Dim Dim Dim Dim Dim Dim Dim pFeature As I F e a t u r e r a s t e r S u r f a c e As I S u r f a c e pGeometry As IGeometry p o i n t As I P o i n t x As Double y As Double z As Double s u r f a c e As I n t e g e r w e i g h t As Double oldWeight As Double newWeight As Double d e n s i t y As Double o l d D e n s i t y As Double newDensity As Double

Dim w e i g h t I n d e x F i e l d As Long Dim s u r f a c e I n d e x F i e l d As Long Set pF e at u r e C u r s o r = p F e a t u r e C l a s s F i l e t s . Update ( Nothing , F a l s e ) Set pFeature = p F e a t u r e C u r s o r . NextFeature ’ Point feature surface = 0 pointContained = False Do U n t i l pFeature I s Nothing ’ o r i g i n a l weight weightIndexField = pFeatureClassFilets . FindField ( ” poids tot ”) ’ s u r f a c e o f t h e c a l c u l a t e d w e i g h t i n t h e a rea

ANNEXE B.

118

surfaceIndexField = pFeatureClassFilets . FindField ( ” surface m2 ” ) s u r f a c e = pFeature . V a l u e ( surfaceIndexField ) ’ l o o k i n which s q u a r e c u r r e n t p o i n t i s l o c a t e d Set pGeomFilet = pFeature . Shape Set p F i l t e r = New S p a t i a l F i l t e r ’ s e t t i n g t h e Geometry , GeometryField and ’ S p a t i a l R e l parameters With p F i l t e r Set . Geometry = pGeomFilet . GeometryField = ”SHAPE” . SpatialRel = esriSpatialRelWithin End With ’ execute the f i l t e r ’ o n l y one r e s u l t −> s q u a r e i n which c u r r e n t ’ point is located pointContained = False Set p R e s u l t F e a t C u r s o r = Nothing Set p R e s u l t F e a t C u r s o r = p F e a t u r e C l a s s C a r e s . S e a r c h ( pFilter , False ) Set p R e s u l t F e a t = p R e s u l t F e a t C u r s o r . NextFeature ’ Square f e a t u r e Do U n t i l p R e s u l t F e a t I s Nothing p o i n t C o n t a i n e d = True ’ t h e i d o f t h e s q u a r e which c o n t a i n s ’ current point squareID = p R e s u l t F e a t . OID Set p R e s u l t F e a t = p R e s u l t F e a t C u r s o r . NextFeature Loop I f p o i n t C o n t a i n e d = True Then ’ u p d a t e l a b e l p o i n t −t a b l e w i t h c a l c u l a t e d d e n s i t y Set u p d a t e Q u e r y F i l t e r = New Q u e r y F i l t e r u p d a t e Q u e r y F i l t e r . WhereClause = ”FID = ” & squareID Set u p d a t e F e a t u r e C u r s o r = p F e atu r e C l as s L p . Update ( updateQueryFilter , False ) Set updateFeat = u p d a t e F e a t u r e C u r s o r . NextFeature

ANNEXE B. While Not updateFeat I s Nothing I f d e n s i t y I n d e x F i e l d <> −1 Then ’ Field verification ’ get depth z of l a b e l p o i n t Set r a s t e r S u r f a c e = GetSurfaceFromLayer ( pRa s ter La y er ) Set pGeometry = updateFeat . Shape Set p o i n t = pGeometry x = point . x y = point . y z = rasterSurface . z (x , y)

119

’ t a k e o r i g i n a l w e i g h t o f n e t and ’ c a l c u l a t e the density in t h i s point ’ i f t h e r e i s more than one n e t i n one and t h e ’ same squ a r e , c a l c u l a t e h i s a v e r a g e I f ( updateFeat . Value ( d e n s i t y I n d e x F i e l d ) < > 0 And updateFeat . Value ( p o i d s I n d e x F i e l d ) < > 0) Then oldWeight = updateFeat . Value ( p o i d s I n d e x F i e l d ) newWeight = pFeature . Value ( w e i g h t I n d e x F i e l d ) w e i g h t = ( oldWeight + newWeight ) / 2 o l d D e n s i t y = updateFeat . Value ( densityIndexField ) newDensity = ( w e i g h t / ( s u r f a c e ∗ z ∗ ( − 1 ) ) ) ’ −1 , b e c a u s e t h e d e p t h z i s s m a l l e r than zero d e n s i t y = ( newDensity + o l d D e n s i t y ) / 2 Else w e i g h t = pFeature . Value ( w e i g h t I n d e x F i e l d ) d e ns i t y = ( weight / ( s u r f a c e ∗ z ∗ ( −1) ) ) ’ −1 , b e c a u s e t h e d e p t h z i s s m a l l e r than zero End I f ’ print t o t a l weight updateFeat . Value ( p o i d s I n d e x F i e l d ) = w e i g h t ’ print boolean updateFeat . Value ( O r i g I n d e x F i e l d ) = 1 ’ p r i n t d e n s i t y i n [ g /m3 ] updateFeat . Value ( d e n s i t y I n d e x F i e l d ) = d e n s i t y ’ p r i n t d e n s i t y i n [ kg / ha ]

ANNEXE B. updateFeat . Value ( d e n s k g h a I n d e x F i e l d ) = density ∗ 1 0 ∗ z ∗ ( −1) u p d a t e F e a t u r e C u r s o r . UpdateFeature updateFeat

120

End I f Set updateFeat = u p d a t e F e a t u r e C u r s o r . NextFeature Wend Set u p d a t e F e a t u r e C u r s o r = Nothing End I f Set pFeature = p F e a tu r e Cu r s or . NextFeature Loop

Table des figures
3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 3.20 3.21 3.22 3.23 4.1 4.2 4.3 5.1 5.2 5.3 5.4 5.5 Principe des images raster [Bo02] . . . . . . . . . . . . . Geometrie dans une geodatabase [ENSG03] . . . . . . . Triangulation de Delaunay [ENSG02] . . . . . . . . . . . Principes des MNT [Bo02] . . . . . . . . . . . . . . . . . ArcMap . . . . . . . . . . . . . . . . . . . . . . . . . . . ArcCatalog . . . . . . . . . . . . . . . . . . . . . . . . . Les shapefiles . . . . . . . . . . . . . . . . . . . . . . . . Table d’attributs d’une coverage . . . . . . . . . . . . . Les coverage . . . . . . . . . . . . . . . . . . . . . . . . . Le rˆle d’ArcSDE . . . . . . . . . . . . . . . . . . . . . . o La geodatabase . . . . . . . . . . . . . . . . . . . . . . . Acces aux donn´es par des applications [EF02] . . . . . e Sauvegarde des personnalisations [ENSG03] . . . . . . . Vue simplifi´e sur ArcInfo [ESRI00] . . . . . . . . . . . . e Abstract Class : Geometry [ENSG03] . . . . . . . . . . . Class Diagram Key . . . . . . . . . . . . . . . . . . . . . extrait de Geodatabase, sch´ma simplifi´ par [ENSG03] e e L’interface IRelationalOperator, [AODH03] . . . . . . . . L’interface IProximiyOperator, [AODH03] . . . . . . . . Calculs de distance [AODH03] . . . . . . . . . . . . . . . M´thode : ReturnNearestPoint [AODH03] . . . . . . . . e M´thode : Simplify de ITopologicalOperator, [AODH03] e L’interface ITopologicalOperator [AODH03] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 15 16 17 18 19 21 22 23 24 25 26 27 28 30 31 35 38 40 40 41 42 43 47 50 51 58 59 61 62 64

Algorithme d’interpolation standard . . . . . . . . . . . . . . Syst`me de coordonn´es conventionnel . . . . . . . . . . . . . e e Syst`me de coordonn´es curvilignes . . . . . . . . . . . . . . . e e Points GPS . . . . . . . . . . Projection Lambert, [IGN04] Carte : TIN . . . . . . . . . . Carte : Raster . . . . . . . . . Carte : Filets pos´s . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

121

TABLE DES FIGURES 5.6 5.7 5.8 5.9 5.10 5.11 5.12 5.13 5.14 5.15 5.16 5.17 5.18 5.19 5.20 5.21 5.22 5.23

122

MxDocument . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Zoom dans la couche des contours . . . . . . . . . . . . . . . 71 Contours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Centro¨ des g´om´tries [AODH03] . . . . . . . . . . . . . . 73 ıds e e Cr´ation du raster d’interpolation . . . . . . . . . . . . . . . . 75 e Le point ` examiner et un vertex de la ligne consid´r´s comme a ee deux vecteurs qui se rencontre dans le point T . . . . . . . . 80 Donn´es filets interpol´es avec p=2 et sans tampon . . . . . . 86 e e Donn´es filets interpol´es avec p=2 et sans tampon . . . . . . 87 e e Donn´es acoustiques interpol´es avec p=2 et sans tampon . . 89 e e Densit´ piscicole moyenne . . . . . . . . . . . . . . . . . . . . 91 e Access aux macros pour l’interpolation . . . . . . . . . . . . . 93 Macro : Split polygon . . . . . . . . . . . . . . . . . . . . . . 94 La proc´dure de d´coupage dans ArcView . . . . . . . . . . . 95 e e Macro : Calculate Input . . . . . . . . . . . . . . . . . . . . . 97 Macro : calculateCo . . . . . . . . . . . . . . . . . . . . . . . 98 Macro : Interpolate . . . . . . . . . . . . . . . . . . . . . . . . 99 Macro : Average . . . . . . . . . . . . . . . . . . . . . . . . . 100 Cartographie de la densit´ (couche de sortie) . . . . . . . . . 101 e 107 108 109 110 111 112 113 114 114

A.1 Class Diagram Key . . . . . . . . . . . . . . . . . . . . . . . . A.2 Interpolation lin´aire de la densit´ piscicole des donn´es filets e e e en kg/ha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.3 Interpolation curviligne de la densit´ piscicole des donn´es e e filets en kg/ha avec p=2 et sans tampon . . . . . . . . . . . . A.4 Interpolation curviligne de la densit´ piscicole des donn´es e e filets en kg/ha avec p=2 et avec tampon=2000m . . . . . . . A.5 Interpolation curviligne de la densit´ piscicole des donn´es e e filets en g/m3 avec p=2 et avec tampon=2000m . . . . . . . A.6 Interpolation curviligne de la densit´ piscicole des donn´es e e filets en g/m3 avec p=2 et sans tampon . . . . . . . . . . . . A.7 Interpolation curviligne de la densit´ piscicole des donn´es e e filets en g/m3 avec p=2 et avec tampon=2000m . . . . . . . A.8 R´partition de la densit´ en [g/m3] interpol´e ` partir des e e e a donn´es filets avec p=2 et avec tampon=2000m . . . . . . . . e A.9 R´partition de la densit´ [kg/ha] interpol´e ` partir des donn´es e e e a e filets avec p=2 et sans tampon . . . . . . . . . . . . . . . . .

Listings
3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 5.12 5.13 5.14 5.15 5.16 5.17 5.18 5.19 5.20 5.21 B.1 Exemple pour une CoClass . . . . . . . . . . . . . . . . . . . Cr´ation d’une classe . . . . . . . . . . . . . . . . . . . . . . . e L’interface par default . . . . . . . . . . . . . . . . . . . . . . L’interface IPoint . . . . . . . . . . . . . . . . . . . . . . . . . Query Interface . . . . . . . . . . . . . . . . . . . . . . . . . . Enchaˆ ınement des interfaces . . . . . . . . . . . . . . . . . . . Mˆme r´sultat sans l’enchaˆ e e ınement . . . . . . . . . . . . . . . QueryFilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . Spatial Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . Construction d’une g´om´trie ` partir de plusieurs g´om´tries e e a e e Relational Operator . . . . . . . . . . . . . . . . . . . . . . . Op´ration topologique . . . . . . . . . . . . . . . . . . . . . . e Requˆte : Profondeur minimale . . . . . . . . . . . . . . . . . e Requˆte : Calcul de poids . . . . . . . . . . . . . . . . . . . . e Requˆte : Calcul du poids total . . . . . . . . . . . . . . . . . e Requˆte : Groupement des filets . . . . . . . . . . . . . . . . . e Requˆte : Poids total plus profondeur moyenne . . . . . . . . e Recalcule le poids . . . . . . . . . . . . . . . . . . . . . . . . . Variables globales : « Application » et « ThisDocument » . . Focus Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . Acc`s ` la couche s´lectionn´e par le document [ENSG03] . . e a e e Acc`s ` une couche par le bloc de donn´es [ENSG03] . . . . . e a e Acc`s aux entit´s spatiales d’une couche . . . . . . . . . . . . e e M´thode pour cr´er des contours . . . . . . . . . . . . . . . . e e Feature ferm´ ? . . . . . . . . . . . . . . . . . . . . . . . . . . e Cr´ation du raster d’interpolation . . . . . . . . . . . . . . . . e Calcul du y . . . . . . . . . . . . . . . . . . . . . . . . . . . . ˜ Coupage de la g´om´trie du lac . . . . . . . . . . . . . . . . . e e Assignation d’une notation pour le y . . . . . . . . . . . . . . ˜ Trouver le sens du thalweg . . . . . . . . . . . . . . . . . . . . Coupage de la ligne du thalweg . . . . . . . . . . . . . . . . . D´termination de la zone . . . . . . . . . . . . . . . . . . . . e Routine d’interpolation avec un tampon . . . . . . . . . . . . Calcul de la densit´ . . . . . . . . . . . . . . . . . . . . . . . . e 123 30 30 32 32 33 33 33 34 36 38 39 43 53 54 55 55 56 56 65 66 67 67 68 69 70 74 77 77 78 80 81 82 84 117

Index
abstract classes, 29 adaption, 26 analyse spatiale, 35–43 ArcCatalog, 18 ArcGIS, 17–31 ArcMap, 18 ArcObjects, 28–31 ArcToolbox, 18 bathym´trie, 9, 46 e cr´ation, 60 e classes, 30 coclasses, 30 coordonn´es curvilignes, 76–81 e coverage, 21–23 curseur, 34 echo-sondeur, 9, 48, 55, 88 Eguzon, 9 ESRI, 17 fill sink, 63 flowaccumulation, 63 flowdirection, 63 Gauß-Kr¨ger, 60 u geodatabase, 23–25 GPS, 9 point, 48 IDW, 44 ´quation, 45, 99 e impl´mentation, 83 e IGN, 48 interpolation algorithmes, 44–45 curviligne, 51, 83–85 124 IProximityOperator, 39 IRelationalOperator, 37 ITopologicalOperator, 41 kriging (krigeage), 45 lac Chambon, 9 Lambert, 59–60 mode raster, 12–14 mode TIN, 16–17 mode vectoriel, 14–16 Natural Neighbour, 45 Niveau Document, 28 Niveau Normal template, 27 Niveau Project template, 28 notation positive, n´gative, 78 e pose, 55 Pythagore, 50 impl´mentation, 84 e Query Interface (QI), 32 QueryFilter, 34 raster d’interpolation, 51 cr´ation, 72–74 e RIPE, 5 shapefile, 20 SpatialFilter, 34 Spline, 45 stockage, 19 strates, 10 streamshape, 63 syst`me de coordonn´es curvilignes, e e 49–50

INDEX thalweg, 46 cr´ation, 62 e TIN cr´ation, 60 e Visual Basic for Applications (VBA), 31–33 WGS84, 9 zone attenante donn´es acoustiques, 57 e donn´es filets, 48 e zones, 10 cr´ation, 69 e d´termination, 81 e

125