Hi Johannes,
On Friday 14 Jun 2013 11:03:04 Johannes Radinger wrote:
> Hi,
>
> as I am not very familiar with GRASS' vector capabilities maybe someone of
> you has some ideas. Is there the concept of directed vector networks e.g
> describing river networks with flow direction implemented in GRASS?
Each line in GRASS is just an array of points, therefore for each line you
have a direction from the first point to the last.
If the direction is not correct you can change with reverse.
A possible way to check the right direction using pygrass is (note, not
tested, and pygrass is only available in grass7):
{{{
from grass.pygrass.vector import VectorTopo
from grass.pygrass.raster import RasterRow
from grass.pygrass.gis.region import Region
def check_line(line, elevation, region):
first = elevation.get_value(line[0], region)
last = elevation.get_value(line[-1], region)
if first < last:
line.reverse()
return line
def check_direction(vectorname, elevname, outputname):
"""Check if the direction of a river network is correct"""
river = VectorTopo(vectorname)
river.open()
newriver = VectorTopo(outputname)
newriver.open('w', tab_cols=river.table.columns.items())
elevation = RasterRow(elevname)
elevation.open()
region = Region()
for line in river:
newline = check_line(line, elevation, region)
newriver.write(newline, attrs=line.attrs.values())
newriver.table.conn.commit()
river.close()
newriver.close()
elevation.close()
check_direction('river', 'elevation', 'river_checked')
}}}
Of course you can implement the same in C.
For the other questions I'm not sure which is the best way to follow.
All the best.
Pietro
_______________________________________________
grass-user mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/grass-user