[GRASS-user] Connect additional dbf file based on layer 1
attribute column
Luigi Ponti
lponti at infinito.it
Mon Mar 31 18:06:45 EDT 2008
Dear Moritz: that's a lot of options -- thanks!!!
Moritz Lennert wrote:
> On 31/03/08 16:04, Luigi Ponti wrote:
>> Dear list,
>>
>> I am trying to import the European Vector Database (ESDB) version 2
>> to GRASS
>> [...]
>> Is it possible to connect those .dbf files to the imported GRASS
>> vector based on an attribute column (not the 'cat' column) that is
>> present both in layer 1 of the vector and in those additional (not
>> connected) .dbf files?
>
> Several options:
>
> 1) Use a real database backend (sqlite, postgresql), import the other
> dbf files with db.in.ogr, then either
> a) link to the map attribute table with v.db.join
> b) create a view combining the cat column from the map attribute
> with the other table and use v.db.connect to link to that table
I suspected that joins and views were the way to go, because I had been
reading philosophical threads some time ago about whether or not grass
was supposed to support those. However, I am not a database expert, so
thanks for indicating this path that may be a good primer to get more
into real database backends for GRASS.
>
> 2) If the columns linking your map to the other tables are integer,
> you can also do
> - v.reclasse with 'column' option
> - v.db.connect the result of the reclass to the relevant dbf table
Yes, the link columns are integers, luckily. I tried this -- easy and
elegant. It works fine with DBF. Does the GRASS DBF engine has a size
limitation for some operations? I got an error while trying the following:
GRASS 6.2.2 (SoilEurope2):~ >d.vect -c sgdbe4_0_reclass display=attr
attrcol=EAWC_TOP
DBMI-DBF driver error:
SQL parser error in statement:
select EAWC_TOP from smu_ptrdb.dbf where cat = 330677
Error in db_open_select_cursor()
ERROR: Cannot select attributes:
select EAWC_TOP from smu_ptrdb.dbf where cat = 330677
Note that cat=330677 is 2572th row of the .dbf table (if I change
attribute column, I always get an error on the same cat).
>
> 3 More complicated:
> - in your existing map create a new layer of cats with e.g.
> v.category map=sgdbe4_0 option=add layer=2
> - find the correspondance of the newly created cats with the cats
> in layer 1 with v.build sgbde4_0 option=cdump
> - use that information to create a new table which contains the
> layer 2 cat and the key column needed to link to the other dbf tables
> - then proceed as in 1)
This one is a bit out of my range: I need to do some homework. Of the
three options, this was the hardest for me to understand.
>
>
> We really could do with an enhancement to v.category to allow the
> creation of a second layer of categories based on a column value of
> the attributes linked to the first...
>
> Moritz
>
Thanks again for a great GRASS-database seminar.
Kind regards,
Luigi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/grass-user/attachments/20080401/f88c6924/attachment.html
More information about the grass-user
mailing list