#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