[GRASS-user] Unique IDs for network segments
Moritz Lennert
mlennert at club.worldonline.be
Thu Dec 3 06:04:23 PST 2015
On 03/12/15 14:19, Johannes Radinger wrote:
> Hi Moritz,
>
> The two-step v.category approach (del + add) and an additional v.to.db()
> was the
> right way. Now I have the problem that there are 3 categories reported for
> one single line that got split into to (1 old cat + 2 new cats). The old
> category is still
> associated with attributes but the two new rows are empty. How can
> I get an attribute table that contains only rows for the new cats with
> the attribute information
> of the old category?
>
[...]
> # Remove existing cats
> v.category --overwrite input=test_net type=line cat=-1
> output=test_net_nocat option=del
[...]
> # Add new cats
> v.category --overwrite input=test_net_nocat type=line
> output=test_net_newcat option=add
> v.to.db map=test_net_newcat type=line option=cat columns=cat
> #############
Instead of removing the existing cats, add new cats in a new layer and
transfer the info into that layer's attribute table:
v.category --overwrite input=test_net type=line output=test_net_newcat
option=add layer=3
v.db.addtable test_new_newcat layer=3
v.db.addcolumn test_net_newcat lay=3 col="col1 int, old_cat int"
v.to.db test_net_newcat layer=3 op=query col=col1 query_layer=1
query_colum=col1
v.to.db test_net_newcat layer=3 op=query col=old_cat query_layer=1
query_colum=cat
Just make sure to set arc_layer=3 in the network analysis modules.
If you really want to have arcs in layer 1, you can use v.category
op=transfer, but you will also have to change table connections of the
layers with v.db.connect.
Moritz
More information about the grass-user
mailing list