[GRASS-user] mapcalc - formula

Maris Nartiss maris.gis at gmail.com
Tue Oct 20 07:19:59 EDT 2009


Hello,
I have no time to look into this issue right now. Please add a wish
ticket to trac "r.lake should support minimum water column depth" and
describe how it should work.

Thanks,
Maris.


2009/10/19, Martin Schweizer <schweizermartin at students.unibe.ch>:
> Hi
>
> I have the following problem: I have the following formula from
> http://grass.osgeo.org/gdp/raster/mapcalc-algebra.pdf on page 12.
>
> wasser = wasser+eval(x=elev+wasser,\
>
> if(x>(y=elev[-1,0]+wasser[-1,0]),\
> -.15*if(elev>y,wasser,x-y),\
> .15*if(elev[-1,0]>x,wasser[-1,0],y-x))+\
>
> if(x>(y=elev[1,0]+wasser[1,0]),\
> -.15*if(elev>y,wasser,x-y),\
> .15*if(elev[1,0]>x,wasser[1,0],y-x))+\
>
> if(x>(y=elev[0,-1]+wasser[0,-1]),\
> -.15*if(elev>y,wasser,x-y),\
> .15*if(elev[0,-1]>x,wasser[0,-1],y-x))+\
>
> if(x>(y=elev[0,1]+wasser[0,1]),\
> -.15*if(elev>y,wasser,x-y),\
> .15*if(elev[0,1]>x,wasser[0,1],y-x))+\
>
> if(x>(y=elev[-1,1]+wasser[-1,1]),\
> -.10*if(elev>y,wasser,x-y),\
> .10*if(elev[-1,1]>x,wasser[-1,1],y-x))+\
>
> if(x>(y=elev[1,1]+wasser[1,1]),\
> -.10*if(elev>y,wasser,x-y),\
> .10*if(elev[1,1]>x,wasser[1,1],y-x))+\
>
> if(x>(y=elev[1,-1]+wasser[1,-1]),\
> -.10*if(elev>y,wasser,x-y),\
> .10*if(elev[1,-1]>x,wasser[1,-1],y-x))+\
>
> if(x>(y=elev[-1,-1]+wasser[-1,-1]),\
> -.10*if(elev>y,wasser,x-y),\
> .10*if(elev[-1,-1]>x,wasser[-1,-1],y-x)))
>
> Now the problem is, that this formula just distribute a given portion of
> water over the land. So if you have a flat surface, you get values like
> 0,0000001... But what i want is, that the distribution of the water
> continues only, if the water has reached a certain level. I have a
> elev-raster with e range from -4 to 10000 and I would that the distribution
> only continue, if the water has reached the level 0.
> So, does anyone see a possiblilty, how i could do this? Could i perhaps
> somehow combine the formula above with the formula from r.lake the way I
> dont add or lose water (formula above) but only continue to distribute when
> a certain level is reached (formula below)?:
>
> ${seedmap} = if( ${dem}, \
> if( if( isnull(${seedmap}),0,${seedmap}>0), ${wlevel}-${dem}, \
>  if( \
>   if(isnull(${seedmap}[-1,0]),0, ${seedmap}[-1,0]>0 && ${wlevel}>${dem}) ||\
>   if(isnull(${seedmap}[-1,1]),0, ${seedmap}[-1,1]>0 && ${wlevel}>${dem}) ||\
>   if(isnull(${seedmap}[0,1]), 0, ${seedmap}[0,1]>0  && ${wlevel}>${dem}) ||\
>   if(isnull(${seedmap}[1,1]), 0, ${seedmap}[1,1]>0  && ${wlevel}>${dem}) ||\
>   if(isnull(${seedmap}[1,0]), 0, ${seedmap}[1,0]>0  && ${wlevel}>${dem}) ||\
>   if(isnull(${seedmap}[1,-1]),0, ${seedmap}[1,-1]>0 && ${wlevel}>${dem}) ||\
>   if(isnull(${seedmap}[0,-1]),0, ${seedmap}[0,-1]>0 && ${wlevel}>${dem}) ||\
>   if(isnull(${seedmap}[-1,-1]),0, ${seedmap}[-1,-1]>0 && ${wlevel}>${dem}),\
>  ${wlevel}-${dem}, null() )))
>
> Thanks a lot! And best regards
>
> Martin
>
> _______________________________________________
> grass-user mailing list
> grass-user at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/grass-user
>


More information about the grass-user mailing list