[GRASS-user] Updating v.net-report results directly to attribute table

Hi all,

is there an easy way to transfer the information reported by v.net (operation=report)
directly to the attribute table of the vector network (arc-table)?

The approach I am using so far is to create an temporary database table (using python)
where I store the output from v.net operation=report, and then use a SQL statement to update the original arc-table from the temporary table:

###########

fidimo_db.execute(‘’‘CREATE TEMP TABLE arcs_temp
(cat INTEGER, from INTEGER, to INTEGER)’‘’)

Get for each arc the orig cat for the start (from) and end point (to)

e = [(int(x.split()[0]),int(x.split()[1]),int(x.split()[2])) for x in grass.read_command(“v.net”,
quiet=True,
input=“my_net”,
operation=“report”,
arc_layer=3).splitlines()]
my_db.executemany(“INSERT INTO arcs_tmp (cat, from, to) VALUES (?,?,?)”, e)

my_db.execute(‘’‘UPDATE arcs SET
from = (SELECT from FROM arcs_tmp WHERE cat=arcs.cat),
to = (SELECT to FROM arcs_tmp WHERE cat=arcs.cat)
WHERE EXISTS (SELECT cat FROM arcs_tmp WHERE cat=arcs.cat)’‘’)

##########

That approach works for me, but I was wondering if there is something easier/more direct? However it seems a direct update of the attribute table is not included in v.net. The module v.db.update has an option for adding start/end points of lines, however this refers to coordinate pairs rather than to category values of nodes in a network.

Any other ideas?

Best,
Johannes