[GRASSLIST:10121] Re: v.to.db option=query: issue with 2 layers and multiple categories

Radim Blazek radim.blazek at gmail.com
Thu Feb 2 03:41:10 EST 2006


Hi,
I am satisfied to read that people are using and understand these
more complex features in GRASS vector model.

I think (I hope) that the problem is that you have more cats
(1,2) in the layer 1 on the point. If you use qcolumn=height
v.to.db queries the database for this point with
  select height from testing_pt_nodupl2_1 where cat=1 or cat=2
The result is 2 rows (100.5 twice). It is impossible to upload
2 values into one row in layer 2. If you have more cats in queried
layer on the same geometry it is necessary to use an aggregate
function, for example qcolumn=avg(height).

Does it work?

Radim


On 2/1/06, Maciek Sieczka <werchowyna at epf.pl> wrote:
>         The problem:
>
>
>
>         In case when a vector in layer 2 has more than one categories
>         assigned, and in layer 1 it has only one category, v.to.db
>         option=query fails to copy attributes from layer 1 to layer 2,
>         due to "Multiple query results, output value set to NULL". Is
>         this a bug in v.to.db? I would expect both layer 2 datatables to
>         be populated with the same value, not NULL.
>
>
>
>
>         The whole story. I hope you will make it to read it:
>
>
>
>         I had a vector line made of two parts, connected with a node. I
>         have converted it to points (v.to.points). As a result 2 points
>         were created at that node. So I removed one duplicate with
>         v.clean. Now this point attributes look like this (d.what.vect):
>
>
> 598394.0625(E) 5681271.65625(N)
>
> testing_pt_nodupl2 in melio  Point
> Layer: 1
> category: 2
> driver: dbf
> database: //home/grassdata/caves_utm33/melio/dbf/
> table: testing_pt_nodupl2_1
> key column: cat
> cat : 2
> height : 100.500000
> Layer: 2
> category: 11
> driver: dbf
> database: //home/grassdata/caves_utm33/melio/dbf/
> table: testing_pt_nodupl2_2
> key column: cat
> cat : 11
> lcat : 2
> along : 0.000000
> Layer: 1
> category: 1
> driver: dbf
> database: //home/grassdata/caves_utm33/melio/dbf/
> table: testing_pt_nodupl2_1
> key column: cat
> cat : 1
> height : 100.500000
> Layer: 2
> category: 10
> driver: dbf
> database: //home/grassdata/caves_utm33/melio/dbf/
> table: testing_pt_nodupl2_2
> key column: cat
> cat : 10
> lcat : 1
> along : 890.245313
>
>
>
>         I wanted to populate the "height" from layer 1 to layer 2.
>         First I'll create a column to be populated with "height" values:
>
>
>
> v.db.addcol map=testing_pt_nodupl layer=2 col="z double"
>
>
>
>         Now, when I tried to populate all the "height" attributes from
>         layer 1 to "z" in layer 2 a problem occured:
>
>
>
> v.to.db map=testing_pt_nodupl2 type=point layer=2 qlayer=1 option=query
> column=z qcolumn=height Reading data trom the map ...
>
> Querying database ...
>
> Multiple query results, output value set to NULL (category 11)
>
>
> Multiple query results, output value set to NULL (category 10)
> Updating database ...
>
> 17 categories read from map
> 17 records selected from table
> 17 categories read from map exist in selection from table
> 0 categories read from map don't exist in selection from table
> 17 records updated/inserted
> 0 update/insert errors
>
>
>
>         In spite of "0 update/insert errors" actually there _are_
>         errors, due to "Multiple query results". Only 16 points have
>         their "z" populated with "height" as needed. The vector point
>         having the both 10 and 11 category (due to v.clean), has the
>         attribute "z" not set, as d.what.vect says:
>
>
>
> 598394.0625(E) 5681271.65625(N)
>
> testing_pt_nodupl2 in melio  Point
> Layer: 1
> category: 2
> driver: dbf
> database: //home/grassdata/caves_utm33/melio/dbf/
> table: testing_pt_nodupl2_1
> key column: cat
> cat : 2
> height : 100.500000
> Layer: 2
> category: 11
> driver: dbf
> database: //home/grassdata/caves_utm33/melio/dbf/
> table: testing_pt_nodupl2_2
> key column: cat
> cat : 11
> lcat : 2
> along : 0.000000
> z :
> Layer: 1
> category: 1
> driver: dbf
> database: //home/grassdata/caves_utm33/melio/dbf/
> table: testing_pt_nodupl2_1
> key column: cat
> cat : 1
> height : 100.500000
> Layer: 2
> category: 10
> driver: dbf
> database: //home/grassdata/caves_utm33/melio/dbf/
> table: testing_pt_nodupl2_2
> key column: cat
> cat : 10
> lcat : 1
> along : 890.245313
> z :
>
>
>
>         Is this a bug in v.to.db? I would expect both categories 10 and
>         11 to be assinged the same "z", not none.
>
>         I might be simply not getting something here. I will appreciate
>         any comments.
>
> Maciek
>
> --------------------
> W polskim Internecie s? setki milion?w stron. My przekazujemy Tobie tylko najlepsze z nich!
> http://katalog.panoramainternetu.pl/
>
>




More information about the grass-user mailing list