banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Thu 16 September 2004 20:03

Yannbeley
Invité

tampon disymetrique

De: yann beley
bonjour,
j'ai un polygone representant un bout du canal de provence et je souhaiterai faire un tampon de chaque cote, jusque la ca va, mais le probleme est que je voudrai un tampon different d'une rive a l'autre, plus precisement je voudrai faire un tampon de 10 metre sur la rive gauche et de 40 sur la droite. Est ce que quelqueun aurai une solution??
merci par avance.

yann

 

#2 Fri 17 September 2004 11:55

Christian Venet
Invité

Re: tampon disymetrique

Il existe un outil HALFBUFFER qui genere un tampon d'un seul cote d'une polyligne.
Je vous le transmet hors liste.
A+

 

#3 Fri 17 September 2004 11:55

Brice Hugault
Invité

Re: tampon disymetrique

Bonjour,

Tu as l'outil Halbufer qui permet de faire des tampons en choisisant le cote de la polyligne ??
Tu le trouveras ici :  http://www.paris-pc-gis.com/ppcc/gisprogs.htm

Cordialement

 

#4 Fri 17 September 2004 11:56

Christophe Jean
Invité

Re: tampon disymetrique

Une possibilite :
tu cree 2 tampon sur 2 couche differente de 10m et 40m

apres ca depend de la version de MapInfo
si version 7 :
1-tu copies la polyligne canal sur ue autre couche
2-tu allonges les extremites du canal pour qu'il sorte des tampons
3-tu decoupes chaque tampon par la polyligne allonge et ensuite tu fussionne les 2 moitie qui t'interesse

si version sans l'outil decouper par polyligne
il faut transformer le canal en polygone pour pouvoir decouper les tampon par un polygone

 

#5 Wed 22 September 2004 22:23

Francois Biju-Duval
Invité

Re: tampon disymetrique

Ce que je propose.
1. En MapBasic pour créer une table de points des extrémités de chaque voie :
Dim W_Numero as String
Dim W_X1 as Float
Dim W_Y1 as Float
Dim W_Xn as Float
Dim W_Yn as Float

Fetch First from Voie
Do until EOT(Voie)
     W_Numero = Voie.Numero
' nombre de segments de la voie
      For I = 1 to ObjectInfo(Voie.obj,OBJ_INFO_NPOLYGONS)
' nombre de noeuds du segment
For J = 1 to ObjectInfo(Voie.obj,OBJ_INFO_NPOLYGONS+I)
' 1ère extrémité dans le sens de numérisation de la voie               
If I = 1 and J = 1 then                   
W_X1 = ObjectNodeX(Voie.Obj,I,J)                 
W_Y1 = ObjectNodeY(Voie.Obj,I,J)             
End if

' dernière extrémité dans le sens de numérisationde la voie               
If I = ObjectInfo(Voie.obj,OBJ_INFO_NPOLYGONS) and J = ObjectInfo(Voie.obj,OBJ_INFO_NPOLYGONS+I) then                   
W_Xn = ObjectNodeX(Voie.Obj,I,J)               
W_Yn = ObjectNodeY(Voie.Obj,I,J)           
End if     
Next
Next
'
Insert into Extremites (Numero,Obj)           
Values (W_Numero,CreatePoint(W_X1,W_Y1))
Insert into Extremites (Numero,Obj)           
Values (W_Numero,CreatePoint(W_Xn,W_Yn))
Fetch Next from Voie
Loop
2. Pour croiser les extrémités avec les communes :
Select Commune.Code,Extremites.obj from Commune,Extremites where Extremites.obj Within Commune.obj

 

Pied de page des forums

Powered by FluxBB