[GRASS-dev] [bug #2793] (grass) v.segment: side offset is ignored

Markus Neteler neteler at itc.it
Thu May 3 08:24:06 EDT 2007


On Fri, May 04, 2007 at 12:08:02AM +1200, Hamish wrote:
> > > Markus Neteler via RT wrote:
> > > > https://intevation.de/rt/webrt?serial_num=2793
> > > > 
> > > > Apparently Vect_point_on_line() lacks support for side offset.
> > > > Indeed, it doesn't even have such a parameter.
> > 
> > Hamish:
> > > if we know the slope of the line at the point (angle*), it is easy
> > > enough to calculate a point perpendicular to it (in the x,y plane)
> > > offset by a certain distance with a little trig.
> 
> now functional in CVS. please test.

Excellent:

d.vect myrailroads disp=shape,dir
echo "P 1 1 5000 -100" | v.segment myrailroads out=myrailroads_segp2
d.vect myrailroads_segp2 col=blue
-> works (to the right of vector direction with negative side offset)

echo "L 1 1 400 5000 -100" | v.segment myrailroads out=myrailroads_segl2
d.vect myrailroads_segl2 disp=shape,dir
-> works (to the right of vector direction with negative side offset)


> Backport to 6.2 or comment out references to offset in the help page?

+1 for backport.
 
> > > shift offset to the left or right?
> 
> I have set it to shift to the left as you go along the line, for little
> reason other than I had to pick something and that's the side of the
> road we drive on here. If there is a reason to have positive offsets
> shift to the right (e.g. v.lrs or vector topology side 1,2 conventions;
> Cartesian axes make +x go to the right; electro-magnetic interactions;
> other..) let me know and I'll swap it.

At least it should be consistent within GRASS.

> Untested on 3D points & lines. Right now it outputs in the xy plane, but
> full 3D points would be possible using Vect_point_on_line(...,slope);
> (probably reuse Lat/lon code for that!) but offset is only 1D right now.
> Vect_line_parallel() is only 2D AFAICT, so lines would require more
> work, but would be a cool feature to have. (but again with the 1D offset)

Indeed:

with vertical offset we could easily approximate powerlines and
such for trams in the city (cable over a street). On the other
hand, v.transform with z shift already does this.

> 
> still open:
> > can anyone compose a nice example (x2) for the v.segment help page?
...

Markus




More information about the grass-dev mailing list