[GRASS-dev] G__getenv return different results from ctypes and from GRASS modules
Nikos Alexandris
nik at nikosalexandris.net
Sun Jun 2 05:40:58 PDT 2013
Pietro Zambelli wrote:
> > > > > Why the ctypes version return 'PERMANENT' instead of 'user1'?
Glynn Clements wrote:
> > > > The $GISRC file is read the first time that an environment lookup is
> > > > made. There is no way to force it to be re-read.
Nikos Alexandris wrote:
> > > This means that I can't use instructions like
> > [...]
> > > in a function (pasted below) which I call from within a "for" loop to go
> > > through Mapsets that potentially contain raster maps named differently?
Glynn Clements wrote:
> > You can modify the current process' environment with G_setenv().
Pietro Zambelli wrote:
> Or use the method
> current() => to set the mapset as current
Perfect, shorter!
Previously:
mapsets = grass.mapsets()
for scene_id in mapsets:
### some condition to catch "scene_id"s of interest here! ###
# enter in (a) Mapset of interest
grass.run_command("g.mapset",
mapset = scene_id,
verbose = False
)
print "Operating inside Scene-Mapset <%s>\n" % scene_id
Now:
mapsets = grass.mapsets()
for scene_id in mapsets:
### some condition to catch "scene_id"s of interest here! ###
# enter in (a) Mapset of interest
Mapset(scene_id).current()
print "\nOperating inside Scene-Mapset <%s>\n" % scene_id
This way I've seen (harmless) WARNINGS about matching same raster maps names
in other Mapsets. To be sure that only the "current" and the PERMANENT
Mapsets are accessed, I added the following
# grant access to current and PERMANENT Mapsets only
grass.run_command("g.mapsets",
operation = 'set',
mapset= '.,PERMANENT',
verbose = False
)
Thanks, that helped a lot.
Nikos
More information about the grass-dev
mailing list