#1 Wed 27 February 2008 10:36
- sfraisse
- Juste Inscrit !
- Date d'inscription: 14 Feb 2008
- Messages: 6
Fonctions d'interpolation GRASS
Bonjour à tous,
Je dois réaliser une carte sur le territoire a partir d'une couche vecteur de points couvrant l'ensemble du territoire avec des carres de 20 km par 20 km.
Je souhaite avoir une représentation des données par couleur en fonction de mes données.
Je réalise donc mon interpolation (r.surf.idw). Cela fonctionne néanmoins le résultat n'est pas très joli puisque les frontière entre les couches sont carrées (suivant le maillage de mes données)
[img=http://img89.imageshack.us/img89/3065/echantcarteli3.th.jpg]
Je souhaiterais plutôt avoir une ligne continue (approximation spatiale des frontières de valeur de données) entre mes différentes valeurs (pas de segment, mais plutôt une ligne sinueuse) mais quelle est la fonction a utiliser ?
Merci par avance
PS je suis débutant et autodidacte...
je travaille sous GRASS 6.2.2
Syl
Hors ligne
#2 Wed 27 February 2008 12:17
- Ludovic L
- Membre
- Lieu: Tours
- Date d'inscription: 23 Jun 2005
- Messages: 333
Re: Fonctions d'interpolation GRASS
J'ai pas la réponse précise, mais une piste. Vu que le côté carré provient de l'utilisation de données matricielle, tu pourrais peut-être tenté de convertir ta grille classifié en couche vectorielle ?
Bon courage
Conservatoire d'espaces naturels Centre-Val de Loire
Responsable SIG et informatique
Hors ligne
#3 Wed 27 February 2008 13:16
- sfraisse
- Juste Inscrit !
- Date d'inscription: 14 Feb 2008
- Messages: 6
Re: Fonctions d'interpolation GRASS
Merci pour ta réponse rapide.
En fait les données proviennent déja de données vectorielles (fichiers de point). Je vois ce que tu veux dire, il faudrait créer des surfaces à partir des classe de données (une surface par classe de données) puis remplir ces surfaces avec des couleurs différentes pour chaque classe.
Mais je t'avouerais que je ne sais pas comment définir une surface en vecteur à patir de données ponctuelles (relier les points entre eux...)
As tu une piste ?
Syl
Hors ligne
#4 Wed 27 February 2008 14:16
- Ludovic L
- Membre
- Lieu: Tours
- Date d'inscription: 23 Jun 2005
- Messages: 333
Re: Fonctions d'interpolation GRASS
la carte qu'il y a dans ton lien n'est pas issu d'une donnée matricielle, elle-meme issue d'une interpolation de point si j'ai bien compris ? Dans ce cas tu n'as plus ta problématique de passer des points en surface vecteur ?? Je ne comprends pas bien...
Logiquement, tu crées une seule couche vecteur qui stockera en attribut ta valeur qui a permis de colorier tes mailles dans ta carte.
Dernière modification par Ludovic L (Wed 27 February 2008 14:16)
Conservatoire d'espaces naturels Centre-Val de Loire
Responsable SIG et informatique
Hors ligne
#5 Wed 27 February 2008 14:18
Re: Fonctions d'interpolation GRASS
Hello,
Alors, plusieurs trucs :
1. A partir d'un fichier de points, tu interpoles une matrice de pixels dont la dimension est défini avec g.region (tape -? à la fin pour les détails). Le logiciel a donc "deviné" grâce à IDW les valeurs intermédiaires.
2. Ensuite avant de passer en vecteur comme le suggère Ludovic, tu peux classer ton image (visiblement on voit genre 6 classes) pour homogénéiser les pixels en régions de même classe. Pour ca tu peux utiliser r.reclass.
3. Une fois tes pixels regroupés en classe, tu peux passer tout en vecteur (r.to.vect).
Il doit y avoir de quoi lisser tout ca (à fouiller) mais voilà pour le principe.
Tu as un fichier sur lequel on peut faire des essais ?
Robin.
Hors ligne
#6 Wed 27 February 2008 14:22
Re: Fonctions d'interpolation GRASS
Ps :
Je dois réaliser une carte sur le territoire a partir d'une couche vecteur de points couvrant l'ensemble du territoire avec des carres de 20 km par 20 km....Je souhaiterais plutôt avoir une ligne continue
Il y a quelque chose de pas logique la dedans... Des carrés ou pas des carrés ?
Hors ligne
#7 Wed 27 February 2008 16:59
- sfraisse
- Juste Inscrit !
- Date d'inscription: 14 Feb 2008
- Messages: 6
Re: Fonctions d'interpolation GRASS
En fait je vais essayer d'être plus clair :
Voici ma démarche pour arriver à la carte jointe dans mon premier message :
1. J'ai un fichiers de points égalements réparti selon une trame de 20 km x 20 km avec pour chaque coordonnées X, Y une classe de donnée (fichier vecteur). je parle de classe de donnée car mes points sont déja classifiés à l'origine (donc je pense que je n'ais pas faire de r.reclass comme tu me l'a indiqué Robin)
2. je génère mes surfaces de couleur à partir de mon vecteur avec un nombre de point = 1 (donc pas d'interpolation) en utilisant v.surf.idw et j'obtiens ainsi mes "carrés" avec une couleur par classe
Ce résultat est correct mais en fait je souhaiterais lisser mes frontières entre classe sans avoir de carrés grossiers mais plutot des frontières curviligne. Il ne s"agit donc pas de créer des données intermédiaire à mes classes, ce que fait l'interpolation (je ne veux que 6 couleurs sur ma carte), mais de lisser mes coordonnées spatiales.
En fait ce que tu m'as dit m'a bien aider Robin, J'étais parti sur l'interpolation mais en fait il s'agit plus de convertir mes données de points en surface, je pourrais alors utiliser les cartes thématiques. je continu mes essais. Merci beaucoup pour vos réponses
Ca fait plaisir de pouvoir être aidé
Sylvain
Hors ligne
#8 Wed 27 February 2008 17:25
Re: Fonctions d'interpolation GRASS
2. je génère mes surfaces de couleur à partir de mon vecteur avec un nombre de point = 1 (donc pas d'interpolation) en utilisant v.surf.idw et j'obtiens ainsi mes "carrés" avec une couleur par classe
Si je comprend bien, tu pixellises tes points : maille vecteur de 20km entre chaque point en maille raster avec un pixel de 20km), en somme ?
Hors ligne
#9 Thu 28 February 2008 09:00
Re: Fonctions d'interpolation GRASS
Rebonjour,
Voilà, j'ai trouvé, ca me turlupinait depuis hier, je savais bien que ca existait :
A true vector tracing of the area edges might appear blocky, since the vectors outline the edges of raster data that are stored in rectangular cells. To produce a better-looking vector map, r.to.vect smoothes the corners of the vector data as they are being extracted. At each change in direction (i.e., each corner), the two midpoints of the corner cell (half the cell's height and width) are taken, and the line segment connecting them is used to outline this corner in the resultant vector map. (The cell's cornermost node is ignored.) Because vectors are smoothed by this program, the resulting vector map will not be "true" to the raster map from which it was created. The user should check the resolution of the geographic region (and the original data) to estimate the possible error introduced by smoothing.
En gros, cette notice de r.to.vect explique que comme les vecteurs produits par un raster peuvent apparaître un peu carrés (blocky), la fonction peut lisser les bords (option -s). La notice recommande aussi de bien vérifier la reolsution de la region et de la donnée originelle pour estimer les erreurs introduites par le lissage.
La commande donnera ainsi quelque chose comme ça :
Code:
r.to.vect input=monfichierraster output=monfichiervecteur feature=area -s
J'espère que ca te dépannera ! J'ai l'impression qu'on touche au but
Robin.
Hors ligne
#10 Thu 28 February 2008 18:07
- sfraisse
- Juste Inscrit !
- Date d'inscription: 14 Feb 2008
- Messages: 6
Re: Fonctions d'interpolation GRASS
Bonjour,
J'avais effectivement vu cette option, néanmoins cette option (-s) dépend de la résolution de la carte. Si on fait un zoom, on voit bien l'effet de lissage au niveau du carré qui a pour côté la résolution. Hors dans mon cas, mes carrés sont beaucoup plus gros et sont considérés comme contour à part entière.
La solution ne se situe pas ici sauf si je modifie la résolution à l'échelle de mes carrés de 20 kmX20km je continue de travailler.
Merci pour vos conseils, on va y arriver
Sylvain
Hors ligne
#11 Fri 28 March 2008 17:07
- mlennert
- Juste Inscrit !
- Date d'inscription: 10 Oct 2007
- Messages: 8
Re: Fonctions d'interpolation GRASS
Les carrés proviennent de la résolution assez basse de la région lors de l'interpolation.
Plusieurs options:
- augmenter la résolution de la région avant v.surf.idw avec g.region res=
- augmenter la résolution de la région après v.surf.idw et interpoler le raster résultant avec r.resample.*
- interpoler les points vectoriels originels avec v.surf.rst qui en jouant sur les paramètres "smooth" et "tension" qui permettent d'arriver à un résultat plus lisse (de nouveau: il vaut mieux augmenter la résolution avant)
Moritz
Hors ligne