[GRASS-stats] spgrass6 and initGRASS

Patrick Giraudoux patrick.giraudoux at univ-fcomte.fr
Mon Dec 7 12:04:24 EST 2009


Dear Roger,

I have moved the thread and the answer below from 
qgis-user at lists.osgeo.org to this list as advised...
>
> 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.

I would like to be capable to read into GRASS locations from within R 
(so not from R started withing GRASS) -what is supposedly done with 
initGRASS; eg just to pick up a region definition into a "spgrass6" 
object and compute on that. I though that initGRASS was design for this 
task.

> 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)? 

I am trying this essentially on teaching purposes. Students are working 
under Windows XP and Vista. I have only a limited number of hours, and 
to board GIS concepts from QGIS then to GRASS is somehow easier for them 
than straight within GRASS (although it is just the reverse when you 
know GRASS). The QGIS Metis standalone version was excellent for that. 
You have seen that the updates to Kore and Mimas are done with no 
standalone version available on the QGIS official site. There the use of 
OSGeo4W is encouraged and I am trying to find out what could be best 
advisable for the students.

I did not tried WinGRASS yet, and I am interested in doing it, but have 
installed the OSGeo4W  GRASS 6.4svn version (works well - but definitely 
the unix/linux environment is more convenient for command lines), as 
well as OSGeo4W QGIS Kore and Mimas, and try and compare them.

> What is your sessionInfo()? 
sessionInfo()
R version 2.10.0 (2009-10-26)
i386-pc-mingw32

locale:
[1] LC_COLLATE=French_France.1252  LC_CTYPE=French_France.1252  
[3] LC_MONETARY=French_France.1252 LC_NUMERIC=C                 
[5] LC_TIME=French_France.1252   

attached base packages:
[1] grDevices datasets  splines   graphics  stats     tcltk     utils   
[8] methods   base    

other attached packages:
[1] spgrass6_0.6-12 XML_2.6-0       rgdal_0.6-22    sp_0.9-47     
[5] svSocket_0.9-48 TinnR_1.0.3     R2HTML_1.59-1   Hmisc_3.7-0   
[9] survival_2.35-7

loaded via a namespace (and not attached):
[1] cluster_1.12.1  grid_2.10.0     lattice_0.17-26 svMisc_0.9-56 
[5] tools_2.10.0  


Roger Bivand a écrit :
> 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
>>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>>
>



More information about the grass-stats mailing list