Am 6. Dezember 2017 19:45:49 MEZ schrieb Peter Tittmann <ptittmann@gmail.com>:
Moritz,
v.db.connect -p c34_patch
Vector map <c34_patch> is connected by:
layer <1/c34_patch> table <c34_patch> in database
</Users/pete/grassdata/<FOO>/project_area/sqlite/sqlite.db> through
driver <sqlite> with key <cat>
So it seems that only layer 1 is connected.
When try to connect layer 2:
v.db.connect map=c34_patch@project_area table=c34_patch layer=2
ERROR: Use -o to overwrite existing link for layer <2>
This is weird. This message normally only comes when there really is a connection defined for this layer:
GRASS 7.2.2 (nc_spm_08):~ > g.copy v=hospitals,test
Copy vector <hospitals@PERMANENT> to current mapset as
<test>
GRASS 7.2.2 (nc_spm_08):~ > v.db.connect -p test
Vector map <test> is connected by:
layer <1/hospitals> table <test> in database </data/home/mlennert/GRASSDATA/nc_spm_08/user1/sqlite/sqlite.db>
through driver <sqlite> with key <cat>
GRASS 7.2.2 (nc_spm_08):~ > v.db.connect test layer=2 table=test
The table <test> is now part of vector map <test> and may be deleted or
overwritten by GRASS modules
Select privileges were granted on the table
GRASS 7.2.2 (nc_spm_08):~ > v.db.connect -p test
Vector map <test> is connected by:
layer <1/hospitals> table <test> in database </data/hom
e/mlennert/GRASSDATA/nc_spm_08/user1/sqlite/sqlite.db>
through driver <sqlite> with key <cat>
layer <2/test> table <test> in database </data/home/mlennert/GRASSDATA/nc_spm_08/user1/sqlite/sqlite.db> through driver <sqlite> with key <cat>
GRASS 7.2.2 (nc_spm_08):~ > v.db.connect test layer=2 table=test
ERROR: Use -o to overwrite existing link for layer <2>
So I don't really understand why you get the error message...
I’m little unclear on the ‘table’ argument, maybe that should be a now
table?
Although there might be situations where one could want to connect two layers to the same table, generally each layer is connected to a different table.
In your original post you said the vector had two layers with attributes. This does not seem to be the case when I see the v.db.connect -p output. Maybe if you go a bit back and explain to us in what format the original data is and how you imported it, this might help us help you.
Moritz
Thanks very much.
Peter
On Dec 6, 2017, at 10:27 AM, Moritz Lennert
<mlennert@club.worldonline.be> wrote:
Am 6. Dezember 2017 18:42:22 MEZ schrieb Peter Tittmann
<ptittmann@gmail.com <mailto:ptittmann@gmail.com>>:
Thank you, Moritz.
I'm pretty familiar with SQL but can’t figure out how layer 2 is
stored
in the database. When I `pragma table_info(<vector>)` I only see the
layer 1 attributes.
v.db.connect -p (or grass.script.vector_db() )will show you all
connections between the map and database tables.
Moritz
I’ll work with the GRASS approach you suggested.
Best,
Peter
On Dec 1, 2017, at 11:53 PM, Moritz Lennert
<mlennert@club.worldonline.be> wrote:
On 02/12/17 02:03, Peter Tittmann wrote:
Hi,
I have a vector (`POINT`) which has two layers containing relevant
attributes (’strata’ and ’stand’). I would like to concatenate the
two
values into a new attribute for Layer 1 (’<STRATA>_<STAND>’). I’ve
been
struggling to sort this out for too long and am tapping out. Its
probably blatantly obvious but it has escaped me.
Probably the easiest way if your not very familiar with SQL:
- Create a new column in layer 1 where you can put the info from
layer 2
- Fill this column with v.to.db option=query query_layer=2, etc
- Create a second new column to hold the concatenation
- v.db.update to update this new column with the concatenation of
the
two others (something like qcol = "STRATA || '_' || STAND")
Otherwise, if there is a common key in both tables, you can just
create a new column and use db.execute to launch a UPDATE TABLE
directly, grabbing the info from the two table and concatenating it
directly in the query.
Moritz
Thank you!
Here are some specifics.
east, north: 651849.842735, 6604949.78485
c34_patch@project_area:
Type: Point
Id: 21622
Layer: 1
Category: 21623
Driver: sqlite
Database:
/Users/pete/grassdata/PortGraham/project_area/sqlite/sqlite.db
Table: c34_patch
Key_column: cat
Attributes:
cat: 21623
*strata: 3 — STRATA*
c34_patch@project_area:
Type: Point
Id: 21622
Layer: 2
*Category: 10 — STAND*
_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org <mailto:grass-user@lists.osgeo.org>
<mailto:grass-user@lists.osgeo.org>
https://lists.osgeo.org/mailman/listinfo/grass-user
<https://lists.osgeo.org/mailman/listinfo/grass-user>
<https://lists.osgeo.org/mailman/listinfo/grass-user
<https://lists.osgeo.org/mailman/listinfo/grass-user>>