[GRASS-user] get vector table with unique feature id

Paulo van Breugel p.vanbreugel at gmail.com
Fri Apr 3 07:51:35 PDT 2015


On Fri, Apr 3, 2015 at 3:22 PM, Paulo van Breugel <p.vanbreugel at gmail.com>
wrote:

>
>
> On Fri, Apr 3, 2015 at 3:11 PM, Moritz Lennert <
> mlennert at club.worldonline.be> wrote:
>
>> On 03/04/15 14:42, Paulo van Breugel wrote:
>>
>>> I have a shapefile with overlapping polygons. After importing I thus
>>> end up with a vector layer with for each unique polygon (feature) one
>>> or more category values (i.e., one to many relationship).
>>>
>>> Now I want to create a second attribute table linked to layer 2 with
>>> a cat column with for each polygon (for each internal feature id) an
>>>  unique category.
>>>
>>> Next, I want to use this to count the number of categories linked to
>>>  each unique feature id.
>>>
>>
>> If you have overlapping polygons, after running v.in.ogr your map
>> already has layer 2 categories which represent for each feature where
>> there is overlap the number of overlapping polygons in that space. IIUC,
>> this is what you are looking for, or ?
>>
>
> Yes, sorry, I was just about to write that this is indeed the case; you
> were just ahead of me. In my initial attempt something went wrong, I should
> have checked better, but was focused on getting a column with the unique
> values per polygon (which as you write below does not seem to work?).
>
>
>>
>>
>>> I know this has been asked and answered before, but the solutions
>>> (copied below) do not work for me.
>>>
>>> This worked, I think, in GRASS 6, but it doesn't in G7 because a new
>>>  vector map needs to be defined
>>>
>>>> /v.category op=add layer=2 type=centroid/ /v.to.db type=centroid
>>>> option=cat/
>>>>
>>>
>> And what is the problem with defining a new vector map. This new vector
>> map will contain all existing layers plus the new layer. But in this
>> case it should be:
>>
>> v.category map op=add layer=3 type=centroid out=map2
>>
>> You can then create a table for layer 3 with v.db.addtable:
>>
>> v.db.addtable map2 layer=3 columns="cat2 integer"
>>
>> and should be able to load the cat values of layer 2 into the table of
>> layer 3 with v.to.db,
>
>
> I knew (ok, I hoped) this should be simple. Thanks
>
>
>> but this does not seem to work at the moment:
>>
>> v.to.db map22 layer=3 query_layer=2 op=cat columns=cat2
>>
>> (there seems to be confusion between map layers, but I don't have time to
>> check. Definitely worth a bug report.)
>>
>
> I'll create one
>

Created a ticket: Ticket #2641


>
>>
>>  The below does not create an attribute table with unique attributes
>>> for each unique feature. /> v.in.ogr dsn=test_polygones.shp
>>> out=polygons
>>> v.db.addtable polygons layer=2
>>>
>> > v.category polygons option=add
>>
>>> layer=2 type=centroid out=polygons_tmp
>>>>
>>> v.to.db polygons_tmp
>>>
>>>> type=centroid option=cat layer=2 col=cat/
>>>>
>>>
>> For those features where there is overlap, this will not create new
>> categories, but upload to the table the existing category which is the
>> number of overlapping features.
>>
>
> OK, I was confused here, thanks for the explanation
>
>>
>>
>>
>> Moritz
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-user/attachments/20150403/282a8f93/attachment-0001.html>


More information about the grass-user mailing list