[GRASS-user] Grass, Python, mapcalc

Daniel Lee lee at isi-solutions.org
Fri Dec 28 03:21:45 PST 2012


Hi there,

I'm now trying to use r.sun and r.mapcalc with Python to create my annual
> solar radiation map.
> I'm using the Python shell inside GRASS.
>
> For testing purposes I start with 9 days.
> The r.sun part seems to be working:
> for x in range(1, 10, 1):
>     print "Working on day %d" % (x)
>     glob_rad = 'global' + str(x)
>     grass.run_command('r.sun', flags = 's', elevin = 'w001001 at temp',
> aspin = 'aspect at temp', slopein = 'slope at temp', glob_rad = glob_rad, day =
> x)
> I do have a question about parsing the --overwrite flag. How to do that.
> Adding flags='s, --overwrite' or flags='s, -overwrite' gives a compile
> error.
>

I believe you overwrite by setting:
flags="s, o"


>
> Now I try to combine the results of r.sun into 1 raster.
> This is working:
> for x in range(1, 10, 1):
>     if x == 2:
>       exp = 'sun = global1 at temp + global2 at temp'
>       print exp
>       grass.mapcalc(exp, quiet=False, verbose=False, overwrite=True)
>
> This is also working:
> for x in range(1, 10, 1):
>     if x == 2:
>       exp = 'sun = global1 at temp + global2 at temp'
>       print exp
>       grass.mapcalc(exp, quiet=False, verbose=False, overwrite=True)
>     elif x > 2:
>       exp = 'sun = sun at temp + global' + str(x) + '@temp'
>       print exp
> and produces this output:
> sun = sun at temp + global3 at temp
> sun = sun at temp + global4 at temp
> sun = sun at temp + global5 at temp
> sun = sun at temp + global6 at temp
> sun = sun at temp + global7 at temp
> sun = sun at temp + global8 at temp
> sun = sun at temp + global9 at temp
> But when I execute this using
> grass.mapcalc(exp, quiet=False, verbose=False, overwrite=True)
>  Grass crashes completely.
>
> Has this something to do with having the output file is the input file as
> well?
> If this is not allowed how can I combine all output files from r.sun into
> 1 raster?
>

GRASS doesn't care what you're combining, when you use the map calculator
it just sees numbers so that shouldn't be a problem.
I don't know why the map calculator to overwrite the input map would be a
problem either. I'm not familiar with your syntax though. What happens when
you just enter the expression on the "normal" command line?

r.mapcalc "sun = sun + global3"

That should work.

Best,
Daniel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-user/attachments/20121228/24f83943/attachment.html>


More information about the grass-user mailing list