[GRASS-user] RE: using GRASS in Emacs environment: msg#00039
Glynn Clements
glynn at gclements.plus.com
Thu Dec 18 13:01:10 EST 2008
Adam Wilson wrote:
> I use R and GRASS together and frequently switch back and forth to
> accomplish tasks (this is the main reason I've stopped using Arc products -
> it's difficult to interface with a powerful statistics program), so I wanted
> to find a way to use GRASS easily within the EMACS - ESS environment (where
> I do my R work). I found that this is as simple as starting an R process
> (see http://ess.r-project.org/index.php?Section=home), then switching to
> GRASS with a system() command and specifying the mapset. The send line
> function still works the same as in R, so the functionality is very
> similar.
>
> For example:
>
> 1. Open emacs and start R as described in the ess documentation
> http://ess.r-project.org/index.php?Section=home
> 2. run: system("grass63
> /media/Data/Work/grassdata/spearfish/PERMANENT") # or whatever grass
> version and location/mapset you want to open. This can be the first line of
> your script.
> 3. That's it, you now have an interactive GRASS session that you can send
> lines of code using the ess interface.
> 4. if you want to start a R process within GRASS, you can run "R" at the
> grass prompt and you start a new nested R process, where you can load
> library(spgrass6) and use all those powerful R functions
FWIW, I would suggest skipping the "grass63" startup altogether.
I source the following script from my ~/.bash_profile (which is
sourced by my ~/.xsession file, so the settings also apply to X
programs):
#export GISBASE=/opt/grass-7.0.svn
export GISBASE=/usr/local/src/grass/svn/dist.i686-pc-linux-gnu
export GRASS_GNUPLOT='gnuplot -persist'
export GRASS_WIDTH=640
export GRASS_HEIGHT=480
export GRASS_HTML_BROWSER=firefox
export GRASS_PAGER=cat
export GRASS_WISH=wish
export GRASS_PYTHON=python
export GRASS_MESSAGE_FORMAT=silent
export GRASS_TRUECOLOR=TRUE
export GRASS_TRANSPARENT=TRUE
export GRASS_PNG_AUTO_WRITE=TRUE
export PATH="$GISBASE/bin:$GISBASE/scripts:$PATH"
export LD_LIBRARY_PATH="$GISBASE/lib"
export GRASS_LD_LIBRARY_PATH="$LD_LIBRARY_PATH"
export PYTHONPATH="$GISBASE/etc/python:$PYTHONPATH"
export MANPATH=$MANPATH:$GISBASE/man
export GIS_LOCK=$$
export GRASS_VERSION="7.0.svn"
tmp=/tmp/grass6-"`whoami`"-$GIS_LOCK
export GISRC="$tmp/gisrc"
mkdir "$tmp"
cp ~/.grassrc6 "$GISRC"
This means that I can run GRASS commands anywhere, e.g. using M-! from
within XEmacs. You can use g.mapset to change database/location/mapset.
It should also allow you to use other packages which normally only work
"within GRASS".
Starting a login shell ("bash --login", which sources ~/.bash_profile)
will create a separate session with its own $GISRC file.
Many of the environment variables are optional. The ones which really
matter are GISBASE, GISRC, PATH and LD_LIBRARY_PATH. g.mapset requires
GIS_LOCK to be set, but it doesn't matter to what. The others are only
used by specific modules; see variables.html in the GRASS
documentation for an extensive list.
--
Glynn Clements <glynn at gclements.plus.com>
More information about the grass-user
mailing list