[GRASS-dev] another not quiet GRASS command

Michael Barton michael.barton at asu.edu
Tue Sep 4 11:19:15 EDT 2007


Thanks much for the explanation. I'll try this out with the wxPython
georectifier I'm working on now.

Michael 


On 9/4/07 3:32 AM, "Glynn Clements" <glynn at gclements.plus.com> wrote:

> 
> Michael Barton wrote:
> 
>>> I'm not questioning whether it's necessary to switch mapsets. I'm
>>> questioning whether modifying the existing $GISRC is the right
>>> approach, or whether gis.m should create a new $GISRC solely for use
>>> by the georectifier.
>>> 
>>> Personally, I'd suggest the latter.
>> 
>> OK. I see what you're getting at now. I'm not sure how to accomplish it.
>> 
>> The active GISRC is a tempfile ( /tmp/grass6-cmbarton-6824/gisrc on my
>> machine). 
>> 
>> Will simply creating a new temporary file with different values for
>> LOCATION_NAME and MAPSET have the effect of 'switching' to a different
>> working location/mapset?
> 
> You also need to change $GISRC to refer to the new file.
> 
>> If so, how to get the current GRASS session to
>> recognize this? 
> 
> You don't want the "current GRASS session" to recognise it. What you
> want is for the commands run from the georectifier (and nothing else)
> to recognise it.
> 
> In gis.m, "set env(GISRC) $tmp_gisrc" before calling such commands,
> then set it back afterwards.
> 
> In Python, change GISRC in the environment passed to Popen() for such
> commands, e.g.:
> 
> env = os.environ.copy()
> env["GISRC"] = tmp_gisrc
> child = subprocess.Popen(cmd, env = env, ...)
> 
>> Does it even have to be a text file on disk somewhere or can it simply be
>> set to a variable (e.g., Python data object) with the appropriate values?
> 
> It needs to be a text file.
> 
>> Can I just make a minimal GISRC with only location and mapset, or is it
>> safer to copy whatever is in the currently active one and then modify
>> location and mapset.
> 
> I suggest the latter. If creating a new one, you need at least
> GISDBASE, LOCATION_NAME and MAPSET for all commands. The others should
> be optional.
> 
>> My active one currently contains...
>> 
>> DIGITIZER: none
>> GISDBASE: /Users/Shared/grassdata
>> GRASS_DB_ENCODING: utf-8
>> GRASS_ADDON_PATH:
>> /Applications/Grass/GRASS-6.3.app/Contents/Resources/etc/gm/script
>> MONITOR: x0
>> LOCATION_NAME: xy
>> MAPSET: test
>> GRASS_RENDER_IMMEDIATE: TRUE
>> GRASS_GUI: wx
> 
> [I don't know how the GRASS_RENDER_IMMEDIATE setting got there; that's
> an environment variable.]
> 
> I have:
> 
> GISDBASE: /opt/grass-data
> LOCATION_NAME: spearfish57
> MAPSET: glynn
> GRASS_DB_ENCODING: ascii
> GRASS_GUI: text
> 
> GRASS_DB_ENCODING is only used by the form library. GRASS_GUI is used
> to remember the -text/-gui/etc setting between sessions and to
> determine whether --ui uses Tcl/Tk or wxPython. Neither of these are
> relevant for non-interactive commands.

__________________________________________
Michael Barton, Professor of Anthropology
Director of Graduate Studies
School of Human Evolution & Social Change
Center for Social Dynamics & Complexity
Arizona State University

phone: 480-965-6213
fax: 480-965-7671
www: http://www.public.asu.edu/~cmbarton





More information about the grass-dev mailing list