[GRASS-user] converting lines to polygons

Bryan Keith bryan at ideotrope.org
Mon Sep 27 15:34:55 EDT 2010


> Micha Silver wrote:
>> Bryan Keith wrote:
>>>>
>>>>     Orange boundaries are duplicates - overlapping lines - that GRASS
>>>> topology doesn't allow.
>>>> You should be able to get rid of these with:
>>>> "v.clean in=... out=... tool=break,bpol,rmdupl"
>>>> But I've never had good luck with this.
>>>> The alternative that might work better for you:
>>>> Re-import the layer from the original shapefiles (or where ever they
>>>> came from) but use the "type=line" option to v.in.ogr. (No centroids
>>>> will be created)
>>>> Now do v.clean on this new GRASS vector, using tool=snap,break,rmdupl.
>>>> Next use
>>>> "v.type ... type=line,boundary"
>>>> to convert the (cleaned) lines to boundaries, and then
>>>> "v.centroids ... opt=add"
>>>> to create area centroids inside each closed boundary.
>>>>
>>>
>>> Micha,
>>>
>>> Yes, thank you, that worked!  Here's what I did:
>>>
>>>
>>
>> Cheers.
>> Although I think I misled you a bit. I was mistaken about the orange
>> line
>> color in the digitizer. It simply indicates a boundary that is wholly
>> shared
>> by two adjacent areas. *Not* a topological error.
>> In any case, importing polygon shapefiles first as lines (not
>> boundaries),
>> doing the topology cleanup, and then convert to boundaries and add
>> centroids
>> seems to be the smoother way to go.
>
> I object because
>
> 1. you would need to replicate the cleaning steps done by v.in.ogr
> which has, amongst others, a snapping option
>
> 2. adding centroids will add centroids to all areas, also those that
> where holes in polygons provided by OGR, e.g. a waterbodies shapefile
> with lakes and islands in lakes: the islands are not waterbodies and
> should not get a centroid
>
> 3.  you will loose attributes because there is no (easy) way to link
> any attributes coming with the shapefile to newly generated centroids,
> e.g. land cover/land use shapefiles
>

Markus,

I agree with you regarding #1.

However, in my case I had a line shapefile, not polygons, so #2 and #3 did
not apply.  I haven't tried to import a polygon shapefile as areas into
GRASS.  Importing as lines and fixing attributes does not seem like the
desired approach.

Bryan

> Markus M
>
>>>
>>> v.in.ogr -o dsn=C:\path\to\shapefile\test_ln.shp output=testm_ln
>>> type=line
>>> v.clean input=testm_ln output=testmclean_ln tool=snap,break,rmdupl
>>> thresh=0.2,0,0
>>> v.type input=testmclean_ln output=testmclean_bnd type=line,boundary
>>> v.centroids input=testmclean_bnd output=testmclean_py option=add
>>>
>>> Thanks for all the help.
>>>
>>> Bryan
>>> --
>>>
>>
>> Micha Silver
>> Arava Development Co. +972-52-3665918
>> http://surfaces.co.il
>>
>>
>> _______________________________________________
>> grass-user mailing list
>> grass-user at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/grass-user
>>
>




More information about the grass-user mailing list