[GRASS5] v.buffer problems...

Hi, list!

I guess that this is a known issue, but when doing v.buff on lines that
form a closed shape v.buffer will extend the buffer to the whole
"inside" as well. Has anyone had time to investigate why this happens?
Is there anything I can do to help? I tried to peek at the v.buffer
code, but I didn't spot the correct place yet.

--W

--

<:3 )---- Wolf Bergenheim ----( 8:>

On 12/7/05, Wolf Bergenheim <wolf+grass@bergenheim.net> wrote:

Hi, list!

I guess that this is a known issue, but when doing v.buff on lines that
form a closed shape v.buffer will extend the buffer to the whole
"inside" as well.

That is correct in my opinion, buffer for a line is created for both sides.
If the lines represent closed polygons you should convert them to areas.

Radim

Has anyone had time to investigate why this happens?
Is there anything I can do to help? I tried to peek at the v.buffer
code, but I didn't spot the correct place yet.

--W

--

<:3 )---- Wolf Bergenheim ----( 8:>

_______________________________________________
grass5 mailing list
grass5@grass.itc.it
http://grass.itc.it/mailman/listinfo/grass5

On 07/12/05 10:23, Radim Blazek wrote:

On 12/7/05, Wolf Bergenheim <wolf+grass@bergenheim.net> wrote:

Hi, list!

I guess that this is a known issue, but when doing v.buff on lines that
form a closed shape v.buffer will extend the buffer to the whole
"inside" as well.

That is correct in my opinion, buffer for a line is created for both sides.
If the lines represent closed polygons you should convert them to areas.

not if they are roads and form a grid. In this case I'd like to form a
buffer zone around a road network, but I also get the areas in between
the roads, which is something I don't want, and is perhaps not quite
right? When I convert the road vectors to raster maps and run r.buffer
on them I get the correct result, however when I convert this raster to
a vector area I get the same weird filling effect. This got me
thinking... perhaps it is not v.buff that does wrong, but perhaps d.vect
is broken instead. Next I opened the buffered vectors in qgis, and there
they appear properly. So the filling is done by d.vect, or is it
something else? Anyway there is some error somewhere ):

I'll put some examples on te web soon to ilustrate what I mean.

--

<:3 )---- Wolf Bergenheim ----( 8:>

d.vect fills also areas (islands) without category.
Try d.vect cats=1-10000.

Radim

On 12/7/05, Wolf Bergenheim <wolf+grass@bergenheim.net> wrote:

On 07/12/05 10:23, Radim Blazek wrote:
> On 12/7/05, Wolf Bergenheim <wolf+grass@bergenheim.net> wrote:
>
>>Hi, list!
>>
>>I guess that this is a known issue, but when doing v.buff on lines that
>>form a closed shape v.buffer will extend the buffer to the whole
>>"inside" as well.
>
>
> That is correct in my opinion, buffer for a line is created for both sides.
> If the lines represent closed polygons you should convert them to areas.
>

not if they are roads and form a grid. In this case I'd like to form a
buffer zone around a road network, but I also get the areas in between
the roads, which is something I don't want, and is perhaps not quite
right? When I convert the road vectors to raster maps and run r.buffer
on them I get the correct result, however when I convert this raster to
a vector area I get the same weird filling effect. This got me
thinking... perhaps it is not v.buff that does wrong, but perhaps d.vect
is broken instead. Next I opened the buffered vectors in qgis, and there
they appear properly. So the filling is done by d.vect, or is it
something else? Anyway there is some error somewhere ):

I'll put some examples on te web soon to ilustrate what I mean.

--

<:3 )---- Wolf Bergenheim ----( 8:>

I guess that this is a known issue, but when doing v.buff on lines
that form a closed shape v.buffer will extend the buffer to the whole
"inside" as well. Has anyone had time to investigate why this happens?
Is there anything I can do to help? I tried to peek at the v.buffer
code, but I didn't spot the correct place yet.

Change the lines to boundaries if you want to buffer an area, not
distance from a line.

v.type type=line,boundary

Hamish