| Grass Tutorial | ||
|---|---|---|
| <<< Previous | Next >>> | |
Les principaux aspects de la programmation en C sont abord�s dans le manuel du programmeur GRASS 5.0 (PDF, 2.3MB). Cette section vous donnera juste un aper�u de la fa�on dont les mod�les GRASS sont structur�s. En g�n�ral, il est bon de regarder quelques uns des 350 modules existants afin de d'apprendre (et de comprendre) comment ils fonctionnent (vous pouvez parcourir le code source par l'int�m�diaire de notre interface CVS web). Seul un SIG en code ouvert tel que GRASS permet d'examiner ainsi les ��entrailles�� d'un SIG. La structure g�n�rale des modules esttoujours la m�me, chaque module est stock� dans un r�pertoire � l'int�rieur du code source.
Le code source actuel est structur� de la fa�on suivante :[1]
Biblioth�que du SIG GRASS (fonctions les plus pertinentes uniquement) :
descriptions des modules
scripts internes pour la compilation
en-t�tes de fichier
routines des biblioth�ques de fonctions SIG
pilote d'affichage
polices de caract�re
routines internes pour le mode interactif de modules
Modules (arborescence standard):
modules pour l'affichage de couches de donn�es dans le moniteur GRASS
modules de gestion de fichier
modules de traitement d'image
modules vecteurs
modules divers
pilote paint (PPM)
pilote postscript
modules raster
scripts
modules sites
Interface Graphique (GUI) Tcl/Tk
Autres modules:
contributions de diverses institutions (bien que la majorit� d'entre elles soient aussi dans l'arborescence principale)
modules li�es � des mod�les de simulation et � diverses interfaces
Les modules de GRASS existants sont construits � partir de la ��biblioth�que de programmation GRASS�� qui offre une multitude fonctions SIG. Elle est structur�e comme suit (les crochets encadrent les traditionnels pr�fixes de noms de fonction pour chacune des routines consid�r�e)
routines de base de donn�es (gestion de fichiers GRASS), gestion de la m�moire, parser (analyse de cha�nes), projection, etc.database routines (GRASS file management), memory management, parser (string analysis), projections, etc. [G_]
gestion des objets vectoriels (surfaciques, lin�aires et sites)[Vect_, V2_, dig_]
gestion de donn�es raster [R_]
gestion de donn�es sites [G_sites_]
sortie graphique du moniteur [D_]
pilote d'impression
gestion de fonction de traitement d'image [I_]
gestion de donnn�es segment�es [segment_] [segment_]
contr�le des touches de curseur etc [V_]
pour l'analyse parall�le des lignes d'une couche raster [rowio_]
Certaines des routines propos�es sont tr�s solides. Par exemple, elles permettent de calculer des distances g�od�siques � partir de coordonn�es donn�es, d'autres permettent de faire des requ�tes sur des surfaces vectorielles (par exemple : est-ce qu'un point se trouve � l'int�rieur d'un polygone?).
Les modules sont compos�s de programmes C (*.c), d'en-t�tes de fichier (*.h) et d'un Gmakefile. GRASS poss�de sa propre routine ��make�� : gmake5. Le fichier Gmakefile contient des instructions � propos des fichiers � compiler et aux biblioth�ques de fonctions � utiliser(biblioth�ques GRASS et UNIX). Il a une composition sp�cifique qui doit �tre respect�e. Un simple exemple (important : les indentations doivent �tre faites avec tabulation, et non avec espace!) vous montrera la structure typique. [2]
La ligne "\$(HOME)/\$(PGM)..." et la suivante contiennent les instructions du compilateur, au dessus de cette section on trouve les assignations de variables. Les variables qui ne sont pas fix�es � cet endroit l� sont param�tr�es automatiquement dans
grass5/src/CMD/head/head.$ARCH
o� $ARCH est le nom de l'architecture syst�me. A partir de GRASS 5.0 cet en-t�te de fichier est cr�e autometiquement en fonction de la plate-forme par le script "configure", qui doit �tre ex�cut� avant la premi�re compilation. La variable $(HOME) indique o� le fichier binaire (c'est-�-dire le module) sera copi� : dans cet exemple, c'est le chemin standard pour les modules qui offre une interface en ligne de commande (sans limitation � la seule utilisation interactive) : grass5/etc/bin/cmd/. grass5/etc/bin/cmd/.
Le programme C lui-m�me doit �tre divis� en (sous-) fonctionnalit�s en diff�rents fichiers qui doivent �tre list�s respectivement comme liste d'objets dans le Gmakefile. Pour plus de d�tails veuillez vous r�f�rer au manuel du Programmeur GRASS �tant donn� que ce tutoriel ne peut contenir une introduction compl�te � la programmation en C. Les commandes de biblioth�ques de fonctions GRASS peuvent �tre utilis�es directement dans le code source. La r�cup�ration interactive de param�tres est possible gr�ce � la programmation de param�tres propre � GRASS. Voici un court exemple pour un module raster..
Le calcul se fait en fonction des lignes et des colonnes (voir la boucle ��for��). Comme indiqu� plus haut, il est vivement conseill� de diviser le module complet en fichiers distincts, organis�s de fa�on th�matique de fa�on � faciliter la maintenance du programme.
| [1] | Cela changera dans les nouvelles versions de GRASS, avec plus de routines courantes dans les biblioth�ques et l'int�gration d'un tout nouveau moteur vectoriel (voir manuel du programmeur GRASS 5.7). |
| [2] | L'exemple de ce code de ce chapitre appartient � M. Neteler, H. Mitasova, 2002. Open Source GIS: A GRASS GIS Approach. |
| <<< Previous | Home | Next >>> |
| Scripts sous GRASS | Up | Special Topics |