Hi Laurent, Hi all!
Thank you very much for your valuable feedback! Im happy to share some part of the GRASS code below to show you how I did it, and what results I got, which are attached as PNG files.
Just some more details for you -
I defined my watershed by first using "r.watershed" to get streams, then using an add-on "r.stream.basins -l dir=dirs stream=streams basins=basin_main" to get basins in the chosen area.
Then I selected one of the bigger basins, which is automatically numbered by GRASS as "64" using the following code -
GRASS 7.8.2 (chennai2):~ > echo '64=64
> * = NULL' > tmp1
Then selected that basin only.
GRASS 7.8.2 (chennai2):~ > r.reclass input=streams output=sel_streams_1 rules=tmp1
Made that basin into a separate layer.
GRASS 7.8.2 (chennai2):~ > r.stream.basins dir=dirs stream=sel_streams_1 basins=basin1
Memory swap calculation (may take some time)...
Reading raster map <dirs>...
100%
Calculating basins using streams...
Reading raster map <sel_streams_1>...
100%
Finding nodes...
100%
Delineating basins for 1 outlets...
100%
Writing raster map <basin1>...
100%
Had a look at it, with d.mon it looked fine
GRASS 7.8.2 (chennai2):~ > d.mon wx1
GRASS 7.8.2 (chennai2):~ > d.rast basin1
Then converted that basin layer into a vector.
GRASS 7.8.2 (chennai2):~ > r.to.vect basin1 output=boundary3 type=area
Then using v.type converted it from area/boundary to line type, just did this to be sure that its a "line" type
GRASS 7.8.2 (chennai2):~ > v.type boundary3 output=boundary_1 to_type=boundary
GRASS 7.8.2 (chennai2):~ > v.type boundary_1 output=boundary_2 to_type=line
Then gave this as input parameter required for Itzi
GRASS 7.8.2 (chennai2):~ > v.to.rast input=boundary_2 type=line output=bctype use=val value=4
Writing raster map...
100%
v.to.rast complete.
[Raster MASK present]
GRASS 7.8.2 (chennai2):~ > v.to.rast input=boundary_2 type=line output=bcvalue use=val value=0
Writing raster map...
100%
v.to.rast complete.
[Raster MASK present]
GRASS 7.8.2 (chennai2):~ > r.mapcalc exp='rain=10'
100%
[Raster MASK present]
GRASS 7.8.2 (chennai2):~ > r.mapcalc exp='n=0.02'
Then went on with config file and ran simulation.
The results are attached below, I attached "_h_max", which is the last frame of simulation which was run for 24 hours with 20 min interval, for maximum height of water after 24 hours. Also attached the legend.
I actually have crowd sourced "flooded streets" of 2015 Chennai city flood event. Surely that may not also be accurate, but its the only good dataset available for validation, since SAR satellite based flood mapping is very coarse and very generalized.
When I overlay the flooded streets with itzi output as geotiff, it looks like a good match, visually I would say it 60-70% match. Surely I want it to be much better!
This is why I wanted your feedback whether this is a good way to proceed? and how to improve it. For Urban areas, yes the DSM will be less accurate due to buildings but I may not have access to LIDAR or some other 3D data for urban buildings. So I may have to proceed with this data for now.
Any input and feedback will be great!
Thanks a lot again for all your valuable feedback I will keep it in mind.
Sid