[R-sig-Geo] spgrass6 and initGRASS

Roger Bivand Roger.Bivand at nhh.no
Mon Dec 7 13:57:15 CET 2009


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.Bivand at nhh.no


More information about the R-sig-Geo mailing list