Thanks Sotiris,
I’ve tried your suggestion but converted it to Python because I’m on Windows.
This is my script:
grass.run_command(‘g.mremove’, rast = (‘out*’))
grass.mapcalc(‘sun=global1’, quiet=False, verbose=False, overwrite=True)
for x in range(2, 10, 1):
exp = ‘out=sun+global’ + str(x)
print exp
grass.mapcalc(exp, quiet=False, verbose=False, overwrite=True)
grass.run_command(‘g.rename’, flag=‘o’, rast = (‘out’,‘sun’))
This doesn’t result in the expected outcome.
sun is equal to global1 and no values are added
out is global1+global2 but is no more values are added. But mapcalc is called several times.
I’ve tested this with:
r.what --v -f -n input=global1 east_north=156287.225281,383024.737026
r.what --v -f -n input=sun east_north=156287.225281,383024.737026
r.what --v -f -n input=out east_north=156287.225281,383024.737026
Not only am I a new user to GRASS but I’m also still a novice in Python. Most likely it is something in my script.
If somebody has a different approach to get the solar radiation of a whole year I’m happy to try that.
Thanks,
Paul
···
Date: Fri, 28 Dec 2012 14:36:15 +0200
From: “S. Koukoulas (lists)” <sotkouklistes@gmail.com>
To: grass-user@lists.osgeo.org
Subject: Re: [GRASS-user] Grass, Python, mapcalc
Message-ID: <50DD923F.806@gmail.com>
Content-Type: text/plain; charset=windows-1252To my experience with r.mapcalc you cannot do what yo do with
programming languages… e.g. i=i+1 will not work directly. Instead you
could try a more indirect way, something like (here is an example with
bash shell script):#g.mremove rast=out* (to remove previous stuff, if needed)
r.mapcalc sun=global1
for a in ?seq 2 10?; do
r.mapcalc out = sun + global$a
g.rename --o rast=out,sun
donebasically the main idea is to use an intermediate map and then before
the loop ends, pass it (with g.rename) to the map variable you want.
There might be a more elegant way with python, but hopefully this shell
script example might help you.
HTH,
sotiris