#1 Tue 27 December 2011 15:38
- Squid
- Participant actif
- Date d'inscription: 2 Apr 2010
- Messages: 109
Buffer sous grass sans fusion des éléments
Bonjour,
Je viens de découvrir que grass propose de faire des flat buffers sur des polylines (buffer sans les arrondis en fin de polyligne).
Cependant, je souhaiterais éviter la fusion automatique des buffers (dissolve?) et au lieu d'obtenir un polygne avec un unique enregistrement, avoir autant de buffers que de segments dans ma polyligne.
Aurriez-vous des suggestions ?
Merci
Bonnes fêtes
Hors ligne
#2 Tue 27 December 2011 21:40
- Sylvain_M
- Membre
- Lieu: Lyon
- Date d'inscription: 3 Aug 2009
- Messages: 298
Re: Buffer sous grass sans fusion des éléments
Bonjour,
à priori si vous faites un buffer sur une polyligne, le résultat sera un polygone englobant tous les segments ... pour avoir un buffer par segment, il faut commencer par couper la polyligne, et créer les buffers sur chaque segment !
Hors ligne
#3 Wed 28 December 2011 10:40
- Squid
- Participant actif
- Date d'inscription: 2 Apr 2010
- Messages: 109
Re: Buffer sous grass sans fusion des éléments
Bonjour,
Merci Yarma pour cette réponse. J'ai réussi à couper la polyligne avec la fonction split ( dans vector layer ) avec un champs de valeurs uniques (ID).
Reste à trouver la méthode pour faire un traitement par lot du dossier de shapes créé par Split.
Bonne journée.
Hors ligne
#4 Thu 29 December 2011 11:13
- Sylvain_M
- Membre
- Lieu: Lyon
- Date d'inscription: 3 Aug 2009
- Messages: 298
Re: Buffer sous grass sans fusion des éléments
Bonjour,
le plus simple est d'écrire un petit script qui va appliquer le traitement voulu sur chaque vecteur. Il s'agit en fait simplement de mettre toutes les commandes à la suite dans un fichier ...
il y a une explication sur le wiki (mais en anglais): http://grass.osgeo.org/wiki/GRASS_and_Shell
en fait, n'importe quel tutoriel sur les script bash (ou batch sous windows) fera l'affaire, il faut juste faire attention à le lancer depuis le terminal GRASS
un exemple pour créer tous les buffers :
###
for vect in `g.mlist type=vect mapset=your_mapset`
do
v.buffer input=${vect} output=${vect}_buf distance=x ;
done;
###
et pour assembler tous les vecteurs de buffers une seule ligne suffit :
###
v.patch -e input=`g.mlist -r type=vect mapset=your_mapset pattern="buf" separator=comma` output=buffer_complet
###
par contre comme je l'ai dis plus haut, le fichier généré contenant tous les buffers sera topologiquement incorrect (puisqu'il y aura des polygones qui se recouvrent), l'idéal serait de traiter tous les buffers un par un ...
Hors ligne
#5 Thu 29 December 2011 14:33
- Squid
- Participant actif
- Date d'inscription: 2 Apr 2010
- Messages: 109
Re: Buffer sous grass sans fusion des éléments
Bonjour,
Merci pour cette nouvelle réponse.
Je vais tester le début de script car je ne souhaite pas assembler les buffers qui constitueront des polygones ayant une action (ouvrir un pdf).
Bonne journée.
Hors ligne