On Mon, 7 Dec 2009, Patrick Giraudoux wrote:

Have tried the following:

initGRASS("C:\\OSGeo4W\\bin",home="U:\\Documents and Settings\\pgiraudo\\",override=T) initGRASS("C:\\Program Files\\Quantum GIS\\grass",home="U:\\Documents and Settings\\pgiraudo",override=T)
initGRASS("C:\\OSGeo4W\\bin",override=T)

with the same results...

initGRASS("C:\\OSGeo4W\\bin",home="U:\\Documents and
Settings\\pgiraudo\\",override=T)
Error in system(paste("g.dirseps.exe -g", shQuote(Sys.getenv("WINGISRC"))), :
g.dirseps.exe not found
initGRASS("C:\\Program Files\\Quantum GIS\\grass",home="U:\\Documents and
Settings\\pgiraudo",override=T)
Error in Sys.setenv(GISRC = gisrc) : wrong length for argument
initGRASS("C:\\OSGeo4W\\bin",override=T)
Error in Sys.setenv(GISRC = gisrc) : wrong length for argument

Quite puzzling since g.dirseps does not give a message "unknown command" when tried within grass (thus it is suppose to be in the GRASS programme)

That is because the GRASS environment variables have not been set at that point. Do you need to use GRASS in throw-away (initGRASS) mode, or with an existing location? If the latter, please use the interface in the regular way, starting R "within" GRASS. I'll try to reproduce the problem, but it is not easy to do, I'm afraid.

What is your sessionInfo()? Have you tried the WinGRASS stand-alone (I haven't trusted either QGIS GRASS used this way or OSGeo4W - I follow the bug-tracker for OSGEO4W, so stay away)?

Would you mind moving to the proper list - this is a GRASS question much more than an R one:

http://lists.osgeo.org/mailman/listinfo/grass-stats

Roger


Patrick



Roger Bivand a écrit :
On Mon, 7 Dec 2009, Patrick Giraudoux wrote:

Here is the result:

library(spgrass6)

debug(initGRASS)
initGRASS("C:/OSGeo4W/bin",home="U:/Documents and
Settings/pgiraudo/",override=T)

(...)

Browse[2]>
debug: gisrc <- system(paste("g.dirseps.exe -g", shQuote(Sys.getenv("WINGISRC"))),
  intern = TRUE)
Browse[2]> Sys.getenv("WINGISRC")
                                      WINGISRC
"U:/Documents and Settings/pgiraudo/\\.grassrc6"
Browse[2]> shQuote(Sys.getenv("WINGISRC"))
[1] "\"U:/Documents and Settings/pgiraudo/\\.grassrc6\""
Browse[2]> gisrc
Error: object 'gisrc' not found

Could you try both not setting home= (you get a temporary folder that is deleted when you exit R), or setting

home="U:\\Documents and Settings\\pgiraudo"

without the trailing forward slash?

This a problem connected to protecting spaces on the one hand and system specific directory separators on the other, I think.

Roger


Beforehand, the first time I run initGRASS("C:/OSGeo4W/bin",home="U:/Documents and Settings/pgiraudo/",override=T), I got:

initGRASS("C:/OSGeo4W/bin",home="U:/Documents and Settings/pgiraudo/",override=T) Error in system(paste("g.dirseps.exe -g", shQuote(Sys.getenv("WINGISRC"))), :
g.dirseps.exe not found

Then, if I try the same commande on QGIS Metis, I got:
initGRASS("C:/Program Files/Quantum GIS/grass",home="U:/Documents and Settings/pgiraudo",override=T)
Error in Sys.setenv(GISRC = gisrc) : wrong length for argument


Best,

Patrick







Roger Bivand a écrit :
On Sun, 6 Dec 2009, Patrick Giraudoux wrote:

Dear all,

I am trying to init a GRASS session from within R, using the function initGRASS from the package spgrass6. GRASS is installed in two ways on my computer (here, the OS is Windows XP): with QGIS metis (precompiled version including grass 6.3 (2008)) and grass 6.4.0svn, just freshly installed with the Osgeo4W installer.

In both cases I get the same result:

initGRASS("C:/Program Files/Quantum GIS/grass",home="U:/Documents and
Settings/pgiraudo",override=T)
Error in Sys.setenv(GISRC = gisrc) : wrong length for argument

initGRASS("C:/OSGeo4W/bin",home="U:/Documents and
Settings/pgiraudo",override=T)
Error in Sys.setenv(GISRC = gisrc) : wrong length for argument

Any idea about what happens ?

No, without the output of traceback(), it isn't obvious, although here traceback() might not help. Run under debug(initGRASS) to the step before, that is:

        gisrc <- system(paste("g.dirseps.exe -g",
            shQuote(Sys.getenv("WINGISRC"))), intern=TRUE)

then run:

Sys.getenv("WINGISRC")
shQuote(Sys.getenv("WINGISRC"))
gisrc

and try to see what is going on. At this stage, Sys.getenv("GISRC") should be "junk", assigned a couple of lines earlier.

Maybe the grass-stats list would have a higher proportion of users of both GRASS and R.

Hope this helps,

Roger


Patrick








--
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: roger.biv...@nhh.no
_______________________________________________
R-sig-Geo mailing list
R-sig-Geo@stat.math.ethz.ch
https://stat.ethz.ch/mailman/listinfo/r-sig-geo

Reply via email to