rgrass7 : Error in parseGRASS

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
15 messages Options
Reply | Threaded
Open this post in threaded view
|

rgrass7 : Error in parseGRASS

Michael DELORME
Dear list,

Using rgrass7 on Windows7 with GRASS 7.0.5 (OSGeo distribution), I get
the following error :

> execGRASS("v.db.addcolumn", map = "result_v", columns = "area_m2 double precision")
Error : XML content does not seem to be XML: 'Le chemin d'accés spécifié est introuvable.'
In addition: Warning message:
running command 'v.db.addcolumn.bat --interface-description' had status 1
Error in parseGRASS(cmd, legacyExec = legacyExec) :
  v.db.addcolumn not parsed


and a similar one for r.mask :

> execGRASS("r.mask", raster = "map")
Error : XML content does not seem to be XML: 'Le chemin d'accés spécifié est introuvable.'
In addition: Warning message:
running command 'r.mask.bat --interface-description' had status 1
Error in parseGRASS(cmd, legacyExec = legacyExec) : r.mask not parsed


whereas most other execGRASS command I tried work as expected.
Any idea ?
Thanks in advance

Here is my session info :

> sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

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

attached base packages:
[1] parallel  stats     graphics  grDevices utils     datasets  methods   base    

other attached packages:
[1] rgrass7_0.1-9     XML_3.98-1.4      beepr_1.2         raster_2.5-8      sp_1.2-3          RPostgreSQL_0.4-1 DBI_0.5-1        

loaded via a namespace (and not attached):
[1] magrittr_1.5    tools_3.3.1     audio_0.1-5     Rcpp_0.12.7     stringi_1.1.2   grid_3.3.1      stringr_1.1.0   lattice_0.20-34
[9] fortunes_1.5-3



        [[alternative HTML version deleted]]

_______________________________________________
R-sig-Geo mailing list
[hidden email]
https://stat.ethz.ch/mailman/listinfo/r-sig-geo
Reply | Threaded
Open this post in threaded view
|

Re: rgrass7 : Error in parseGRASS

Roger Bivand
Administrator
On Tue, 22 Nov 2016, Michael DELORME wrote:

> Dear list,
>
> Using rgrass7 on Windows7 with GRASS 7.0.5 (OSGeo distribution), I get
> the following error :

Please always try to provide a reproducible example using a standard data
set. In addition, the output of traceback() following the error would
be helpful. Are you running R inside GRASS, or using R to initiate GRASS?

Consider using the grass-stats list:

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

as it is more likely to yield results, but there also provide an example
that anyone can reproduce. The example should avoid loading other
packages, and should be run from the R console (not, say, RStudio).

Roger



>
>> execGRASS("v.db.addcolumn", map = "result_v", columns = "area_m2 double
>> precision")
> Error : XML content does not seem to be XML: 'Le chemin d'accés spécifié
> est introuvable.' In addition: Warning message: running command
> 'v.db.addcolumn.bat --interface-description' had status 1 Error in
> parseGRASS(cmd, legacyExec = legacyExec) :
>  v.db.addcolumn not parsed
>
>
> and a similar one for r.mask :
>
>> execGRASS("r.mask", raster = "map")
> Error : XML content does not seem to be XML: 'Le chemin d'accés spécifié est introuvable.'
> In addition: Warning message:
> running command 'r.mask.bat --interface-description' had status 1
> Error in parseGRASS(cmd, legacyExec = legacyExec) : r.mask not parsed
>
>
> whereas most other execGRASS command I tried work as expected.
> Any idea ?
> Thanks in advance
>
> Here is my session info :
>
>> sessionInfo()
> R version 3.3.1 (2016-06-21)
> Platform: x86_64-w64-mingw32/x64 (64-bit)
> Running under: Windows 7 x64 (build 7601) Service Pack 1
>
> locale:
> [1] LC_COLLATE=French_France.1252  LC_CTYPE=French_France.1252    LC_MONETARY=French_France.1252 LC_NUMERIC=C
> [5] LC_TIME=French_France.1252
>
> attached base packages:
> [1] parallel  stats     graphics  grDevices utils     datasets  methods   base
>
> other attached packages: [1] rgrass7_0.1-9 XML_3.98-1.4 beepr_1.2
> raster_2.5-8 sp_1.2-3 RPostgreSQL_0.4-1 DBI_0.5-1
>
> loaded via a namespace (and not attached): [1] magrittr_1.5 tools_3.3.1
> audio_0.1-5 Rcpp_0.12.7 stringi_1.1.2 grid_3.3.1 stringr_1.1.0
> lattice_0.20-34 [9] fortunes_1.5-3
>
>
>
> [[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-Geo mailing list
> [hidden email]
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
--
Roger Bivand
Department of Economics, Norwegian School of Economics,
Helleveien 30, N-5045 Bergen, Norway.
voice: +47 55 95 93 55; fax +47 55 95 91 00
e-mail: [hidden email]
http://orcid.org/0000-0003-2392-6140
https://scholar.google.no/citations?user=AWeghB0AAAAJ&hl=en
http://depsy.org/person/434412
_______________________________________________
R-sig-Geo mailing list
[hidden email]
https://stat.ethz.ch/mailman/listinfo/r-sig-geo
Roger Bivand
Department of Economics
Norwegian School of Economics
Helleveien 30
N-5045 Bergen, Norway
Reply | Threaded
Open this post in threaded view
|

Re: rgrass7 : Error in parseGRASS

Michael DELORME
Thanks for replying

Here is a reproducible example (change your GRASS directory of course) :

library(rgrass7)
library(sp)
initGRASS("C:/OSGeo4W64/apps/grass/grass-7.0.5", home = tempdir(),
override = TRUE)
data(meuse)
coordinates(meuse) <- ~x+y
writeVECT(meuse, "meuse")
execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2 double
precision")

I get :
Error : XML content does not seem to be XML: 'The specified path was not
found.'
In addition: Warning message:
running command 'v.db.addcolumn.bat --interface-description' had status 1
Error in parseGRASS(cmd, legacyExec = legacyExec) :
  v.db.addcolumn not parsed

Other execGRASS commands (like r.neighbors, r.mapcalc,..)  work fine,
but some other (r.mask) fail with a similar XML error.

All commands work fine when used from the GRASS shell...

What is this XML error ?
Thanks

Le 22/11/2016 09:34, Roger Bivand a écrit :

> On Tue, 22 Nov 2016, Michael DELORME wrote:
>
>> Dear list,
>>
>> Using rgrass7 on Windows7 with GRASS 7.0.5 (OSGeo distribution), I get
>> the following error :
>
> Please always try to provide a reproducible example using a standard
> data set. In addition, the output of traceback() following the error
> would be helpful. Are you running R inside GRASS, or using R to
> initiate GRASS?
>
> Consider using the grass-stats list:
>
> https://lists.osgeo.org/mailman/listinfo/grass-stats
>
> as it is more likely to yield results, but there also provide an
> example that anyone can reproduce. The example should avoid loading
> other packages, and should be run from the R console (not, say, RStudio).
>
> Roger
>
>
>
>>
>>> execGRASS("v.db.addcolumn", map = "result_v", columns = "area_m2
>>> double precision")
>> Error : XML content does not seem to be XML: 'Le chemin d'accés
>> spécifié est introuvable.' In addition: Warning message: running
>> command 'v.db.addcolumn.bat --interface-description' had status 1
>> Error in parseGRASS(cmd, legacyExec = legacyExec) :
>>  v.db.addcolumn not parsed
>>
>>
>> and a similar one for r.mask :
>>
>>> execGRASS("r.mask", raster = "map")
>> Error : XML content does not seem to be XML: 'Le chemin d'accés
>> spécifié est introuvable.'
>> In addition: Warning message:
>> running command 'r.mask.bat --interface-description' had status 1
>> Error in parseGRASS(cmd, legacyExec = legacyExec) : r.mask not parsed
>>
>>
>> whereas most other execGRASS command I tried work as expected.
>> Any idea ?
>> Thanks in advance
>>
>> Here is my session info :
>>
>>> sessionInfo()
>> R version 3.3.1 (2016-06-21)
>> Platform: x86_64-w64-mingw32/x64 (64-bit)
>> Running under: Windows 7 x64 (build 7601) Service Pack 1
>>
>> locale:
>> [1] LC_COLLATE=French_France.1252  LC_CTYPE=French_France.1252  
>> LC_MONETARY=French_France.1252 LC_NUMERIC=C [5]
>> LC_TIME=French_France.1252
>> attached base packages:
>> [1] parallel  stats     graphics  grDevices utils     datasets
>> methods   base
>> other attached packages: [1] rgrass7_0.1-9 XML_3.98-1.4 beepr_1.2
>> raster_2.5-8 sp_1.2-3 RPostgreSQL_0.4-1 DBI_0.5-1
>>
>> loaded via a namespace (and not attached): [1] magrittr_1.5
>> tools_3.3.1 audio_0.1-5 Rcpp_0.12.7 stringi_1.1.2 grid_3.3.1
>> stringr_1.1.0 lattice_0.20-34 [9] fortunes_1.5-3
>>
>>
>>
>>     [[alternative HTML version deleted]]
>>
>> _______________________________________________
>> R-sig-Geo mailing list
>> [hidden email]
>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>

--
*Michaël DELORME*
Administrateur de données, chargé de projet en géomatique
Service régional de l'information statistique, économique et territoriale
Direction régionale de l'alimentation, de l'agriculture et de la forêt
Auvergne-Rhône-Alpes
Site de Lyon
165 rue Garibaldi – BP 3202 – 69401 LYON cedex 03
04 78 63 34 21

Pour écrire au service :
DRAAF Auvergne-Rhône-Alpes – SRISET
16B rue Aimé Rudel – BP 45 – 63370 LEMPDES

http://www.draaf.auvergne-rhone-alpes.agriculture.gouv.fr/

        [[alternative HTML version deleted]]

_______________________________________________
R-sig-Geo mailing list
[hidden email]
https://stat.ethz.ch/mailman/listinfo/r-sig-geo
Reply | Threaded
Open this post in threaded view
|

Re: rgrass7 : Error in parseGRASS

Roger Bivand
Administrator
On Tue, 22 Nov 2016, Michael DELORME wrote:

> Thanks for replying
>
> Here is a reproducible example (change your GRASS directory of course) :
>
> library(rgrass7)
> library(sp)
> initGRASS("C:/OSGeo4W64/apps/grass/grass-7.0.5", home = tempdir(),
> override = TRUE)
> data(meuse)
> coordinates(meuse) <- ~x+y
> writeVECT(meuse, "meuse")
> execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2 double
> precision")
This appears to run correctly on Windows 7 with GRASS 7.0.5 Windows
stand-alone. Do you need to use OSGeo4W - the internal logic used for
finding out where the different versions keep their executables and batch
files varies?

What does traceback() say after the error? The error comes from
parseGRASS("v.db.addcolumn") - the XML error comes from not being able to
read the output of v.db.addcolumn<.ext> --interface-description where
<.ext> may be .exe or .bat I think.

Roger

>
> I get :
> Error : XML content does not seem to be XML: 'The specified path was not
> found.'
> In addition: Warning message:
> running command 'v.db.addcolumn.bat --interface-description' had status 1
> Error in parseGRASS(cmd, legacyExec = legacyExec) :
>  v.db.addcolumn not parsed
>
> Other execGRASS commands (like r.neighbors, r.mapcalc,..)  work fine,
> but some other (r.mask) fail with a similar XML error.
>
> All commands work fine when used from the GRASS shell...
>
> What is this XML error ?
> Thanks
>
> Le 22/11/2016 09:34, Roger Bivand a écrit :
>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>
>>> Dear list,
>>>
>>> Using rgrass7 on Windows7 with GRASS 7.0.5 (OSGeo distribution), I get
>>> the following error :
>>
>> Please always try to provide a reproducible example using a standard
>> data set. In addition, the output of traceback() following the error
>> would be helpful. Are you running R inside GRASS, or using R to
>> initiate GRASS?
>>
>> Consider using the grass-stats list:
>>
>> https://lists.osgeo.org/mailman/listinfo/grass-stats
>>
>> as it is more likely to yield results, but there also provide an
>> example that anyone can reproduce. The example should avoid loading
>> other packages, and should be run from the R console (not, say, RStudio).
>>
>> Roger
>>
>>
>>
>>>
>>>> execGRASS("v.db.addcolumn", map = "result_v", columns = "area_m2
>>>> double precision")
>>> Error : XML content does not seem to be XML: 'Le chemin d'accés
>>> spécifié est introuvable.' In addition: Warning message: running
>>> command 'v.db.addcolumn.bat --interface-description' had status 1
>>> Error in parseGRASS(cmd, legacyExec = legacyExec) :
>>>  v.db.addcolumn not parsed
>>>
>>>
>>> and a similar one for r.mask :
>>>
>>>> execGRASS("r.mask", raster = "map")
>>> Error : XML content does not seem to be XML: 'Le chemin d'accés
>>> spécifié est introuvable.'
>>> In addition: Warning message:
>>> running command 'r.mask.bat --interface-description' had status 1
>>> Error in parseGRASS(cmd, legacyExec = legacyExec) : r.mask not parsed
>>>
>>>
>>> whereas most other execGRASS command I tried work as expected.
>>> Any idea ?
>>> Thanks in advance
>>>
>>> Here is my session info :
>>>
>>>> sessionInfo()
>>> R version 3.3.1 (2016-06-21)
>>> Platform: x86_64-w64-mingw32/x64 (64-bit)
>>> Running under: Windows 7 x64 (build 7601) Service Pack 1
>>>
>>> locale:
>>> [1] LC_COLLATE=French_France.1252  LC_CTYPE=French_France.1252
>>> LC_MONETARY=French_France.1252 LC_NUMERIC=C [5]
>>> LC_TIME=French_France.1252
>>> attached base packages:
>>> [1] parallel  stats     graphics  grDevices utils     datasets
>>> methods   base
>>> other attached packages: [1] rgrass7_0.1-9 XML_3.98-1.4 beepr_1.2
>>> raster_2.5-8 sp_1.2-3 RPostgreSQL_0.4-1 DBI_0.5-1
>>>
>>> loaded via a namespace (and not attached): [1] magrittr_1.5
>>> tools_3.3.1 audio_0.1-5 Rcpp_0.12.7 stringi_1.1.2 grid_3.3.1
>>> stringr_1.1.0 lattice_0.20-34 [9] fortunes_1.5-3
>>>
>>>
>>>
>>>     [[alternative HTML version deleted]]
>>>
>>> _______________________________________________
>>> R-sig-Geo mailing list
>>> [hidden email]
>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>
>
> --
> *Michaël DELORME*
> Administrateur de données, chargé de projet en géomatique
> Service régional de l'information statistique, économique et territoriale
> Direction régionale de l'alimentation, de l'agriculture et de la forêt
> Auvergne-Rhône-Alpes
> Site de Lyon
> 165 rue Garibaldi – BP 3202 – 69401 LYON cedex 03
> 04 78 63 34 21
>
> Pour écrire au service :
> DRAAF Auvergne-Rhône-Alpes – SRISET
> 16B rue Aimé Rudel – BP 45 – 63370 LEMPDES
>
> http://www.draaf.auvergne-rhone-alpes.agriculture.gouv.fr/
>
> [[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-Geo mailing list
> [hidden email]
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
--
Roger Bivand
Department of Economics, Norwegian School of Economics,
Helleveien 30, N-5045 Bergen, Norway.
voice: +47 55 95 93 55; fax +47 55 95 91 00
e-mail: [hidden email]
http://orcid.org/0000-0003-2392-6140
https://scholar.google.no/citations?user=AWeghB0AAAAJ&hl=en
http://depsy.org/person/434412
_______________________________________________
R-sig-Geo mailing list
[hidden email]
https://stat.ethz.ch/mailman/listinfo/r-sig-geo
Roger Bivand
Department of Economics
Norwegian School of Economics
Helleveien 30
N-5045 Bergen, Norway
Reply | Threaded
Open this post in threaded view
|

Re: rgrass7 : Error in parseGRASS

Michael DELORME
Thanks for investigating.

I'll try a standalone version of GRASS if needed.

Here is the traceback

> traceback()
4: stop(paste(cmd, "not parsed"))
3: parseGRASS(cmd, legacyExec = legacyExec)
2: doGRASS(cmd, flags = flags, ..., parameters = parameters, echoCmd =
echoCmd, legacyExec = legacyExec)
1: execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2 double
precision")

My C:\OSGeo4W64\apps\grass\grass-7.0.5\bin lists *.exe or *.bat and
indeed the *.bat command are those which don't work (r.mask.bat,
v.db.addcolumn.bat,...). The batch calls Python scripts ; for example
v.db.addcolumn.bat is :

@"%GRASS_PYTHON%" "%GISBASE%/scripts/v.db.addcolumn.py" %*

So I guess something must be wrong in my Python installation... (it
works however from within a GRASS shell)

Cordially


Le 22/11/2016 14:30, Roger Bivand a écrit :

> On Tue, 22 Nov 2016, Michael DELORME wrote:
>
>> Thanks for replying
>>
>> Here is a reproducible example (change your GRASS directory of course) :
>>
>> library(rgrass7)
>> library(sp)
>> initGRASS("C:/OSGeo4W64/apps/grass/grass-7.0.5", home = tempdir(),
>> override = TRUE)
>> data(meuse)
>> coordinates(meuse) <- ~x+y
>> writeVECT(meuse, "meuse")
>> execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2 double
>> precision")
>
> This appears to run correctly on Windows 7 with GRASS 7.0.5 Windows
> stand-alone. Do you need to use OSGeo4W - the internal logic used for
> finding out where the different versions keep their executables and
> batch files varies?
>
> What does traceback() say after the error? The error comes from
> parseGRASS("v.db.addcolumn") - the XML error comes from not being able
> to read the output of v.db.addcolumn<.ext> --interface-description
> where <.ext> may be .exe or .bat I think.
>
> Roger
>
>>
>> I get :
>> Error : XML content does not seem to be XML: 'The specified path was not
>> found.'
>> In addition: Warning message:
>> running command 'v.db.addcolumn.bat --interface-description' had
>> status 1
>> Error in parseGRASS(cmd, legacyExec = legacyExec) :
>>  v.db.addcolumn not parsed
>>
>> Other execGRASS commands (like r.neighbors, r.mapcalc,..)  work fine,
>> but some other (r.mask) fail with a similar XML error.
>>
>> All commands work fine when used from the GRASS shell...
>>
>> What is this XML error ?
>> Thanks
>>
>> Le 22/11/2016 09:34, Roger Bivand a écrit :
>>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>>
>>>> Dear list,
>>>>
>>>> Using rgrass7 on Windows7 with GRASS 7.0.5 (OSGeo distribution), I get
>>>> the following error :
>>>
>>> Please always try to provide a reproducible example using a standard
>>> data set. In addition, the output of traceback() following the error
>>> would be helpful. Are you running R inside GRASS, or using R to
>>> initiate GRASS?
>>>
>>> Consider using the grass-stats list:
>>>
>>> https://lists.osgeo.org/mailman/listinfo/grass-stats
>>>
>>> as it is more likely to yield results, but there also provide an
>>> example that anyone can reproduce. The example should avoid loading
>>> other packages, and should be run from the R console (not, say,
>>> RStudio).
>>>
>>> Roger
>>>
>>>
>>>
>>>>
>>>>> execGRASS("v.db.addcolumn", map = "result_v", columns = "area_m2
>>>>> double precision")
>>>> Error : XML content does not seem to be XML: 'Le chemin d'accés
>>>> spécifié est introuvable.' In addition: Warning message: running
>>>> command 'v.db.addcolumn.bat --interface-description' had status 1
>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) :
>>>>  v.db.addcolumn not parsed
>>>>
>>>>
>>>> and a similar one for r.mask :
>>>>
>>>>> execGRASS("r.mask", raster = "map")
>>>> Error : XML content does not seem to be XML: 'Le chemin d'accés
>>>> spécifié est introuvable.'
>>>> In addition: Warning message:
>>>> running command 'r.mask.bat --interface-description' had status 1
>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) : r.mask not parsed
>>>>
>>>>
>>>> whereas most other execGRASS command I tried work as expected.
>>>> Any idea ?
>>>> Thanks in advance
>>>>
>>>> Here is my session info :
>>>>
>>>>> sessionInfo()
>>>> R version 3.3.1 (2016-06-21)
>>>> Platform: x86_64-w64-mingw32/x64 (64-bit)
>>>> Running under: Windows 7 x64 (build 7601) Service Pack 1
>>>>
>>>> locale:
>>>> [1] LC_COLLATE=French_France.1252  LC_CTYPE=French_France.1252
>>>> LC_MONETARY=French_France.1252 LC_NUMERIC=C [5]
>>>> LC_TIME=French_France.1252
>>>> attached base packages:
>>>> [1] parallel  stats     graphics  grDevices utils     datasets
>>>> methods   base
>>>> other attached packages: [1] rgrass7_0.1-9 XML_3.98-1.4 beepr_1.2
>>>> raster_2.5-8 sp_1.2-3 RPostgreSQL_0.4-1 DBI_0.5-1
>>>>
>>>> loaded via a namespace (and not attached): [1] magrittr_1.5
>>>> tools_3.3.1 audio_0.1-5 Rcpp_0.12.7 stringi_1.1.2 grid_3.3.1
>>>> stringr_1.1.0 lattice_0.20-34 [9] fortunes_1.5-3
>>>>
>>>>
>>>>
>>>>     [[alternative HTML version deleted]]
>>>>
>>>> _______________________________________________
>>>> R-sig-Geo mailing list
>>>> [hidden email]
>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>
>>
>> --
>> *Michaël DELORME*
>> Administrateur de données, chargé de projet en géomatique
>> Service régional de l'information statistique, économique et
>> territoriale
>> Direction régionale de l'alimentation, de l'agriculture et de la forêt
>> Auvergne-Rhône-Alpes
>> Site de Lyon
>> 165 rue Garibaldi – BP 3202 – 69401 LYON cedex 03
>> 04 78 63 34 21
>>
>> Pour écrire au service :
>> DRAAF Auvergne-Rhône-Alpes – SRISET
>> 16B rue Aimé Rudel – BP 45 – 63370 LEMPDES
>>
>> http://www.draaf.auvergne-rhone-alpes.agriculture.gouv.fr/
>>
>>     [[alternative HTML version deleted]]
>>
>> _______________________________________________
>> R-sig-Geo mailing list
>> [hidden email]
>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>

_______________________________________________
R-sig-Geo mailing list
[hidden email]
https://stat.ethz.ch/mailman/listinfo/r-sig-geo
Reply | Threaded
Open this post in threaded view
|

Re: rgrass7 : Error in parseGRASS

Roger Bivand
Administrator
On Tue, 22 Nov 2016, Michael DELORME wrote:

> Thanks for investigating.
>
> I'll try a standalone version of GRASS if needed.
>
> Here is the traceback
>
>> traceback()
> 4: stop(paste(cmd, "not parsed"))
> 3: parseGRASS(cmd, legacyExec = legacyExec)
> 2: doGRASS(cmd, flags = flags, ..., parameters = parameters, echoCmd =
> echoCmd, legacyExec = legacyExec)
> 1: execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2 double
> precision")
>
> My C:\OSGeo4W64\apps\grass\grass-7.0.5\bin lists *.exe or *.bat and
> indeed the *.bat command are those which don't work (r.mask.bat,
> v.db.addcolumn.bat,...). The batch calls Python scripts ; for example
> v.db.addcolumn.bat is :
>
> @"%GRASS_PYTHON%" "%GISBASE%/scripts/v.db.addcolumn.py" %*
>
> So I guess something must be wrong in my Python installation... (it
> works however from within a GRASS shell)
No, the logic for Windows and initGRASS has only ever been tested with
stand-alone GRASS. I would guess that in OSGeo4W the path variables are
wrong. I cannot even find out how to run initGRASS in R but outside the
OSGeo4W shell (doesn't find iconv.dll) or inside the OSGeo4W shell (cannot
create a temporary GRASS location). Unless you or others really need
OSGeo4W, I suggest asking others to implement that - very bulky and
fragile.

Roger

>
> Cordially
>
>
> Le 22/11/2016 14:30, Roger Bivand a écrit :
>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>
>>> Thanks for replying
>>>
>>> Here is a reproducible example (change your GRASS directory of course) :
>>>
>>> library(rgrass7)
>>> library(sp)
>>> initGRASS("C:/OSGeo4W64/apps/grass/grass-7.0.5", home = tempdir(),
>>> override = TRUE)
>>> data(meuse)
>>> coordinates(meuse) <- ~x+y
>>> writeVECT(meuse, "meuse")
>>> execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2 double
>>> precision")
>>
>> This appears to run correctly on Windows 7 with GRASS 7.0.5 Windows
>> stand-alone. Do you need to use OSGeo4W - the internal logic used for
>> finding out where the different versions keep their executables and
>> batch files varies?
>>
>> What does traceback() say after the error? The error comes from
>> parseGRASS("v.db.addcolumn") - the XML error comes from not being able
>> to read the output of v.db.addcolumn<.ext> --interface-description
>> where <.ext> may be .exe or .bat I think.
>>
>> Roger
>>
>>>
>>> I get :
>>> Error : XML content does not seem to be XML: 'The specified path was not
>>> found.'
>>> In addition: Warning message:
>>> running command 'v.db.addcolumn.bat --interface-description' had
>>> status 1
>>> Error in parseGRASS(cmd, legacyExec = legacyExec) :
>>>  v.db.addcolumn not parsed
>>>
>>> Other execGRASS commands (like r.neighbors, r.mapcalc,..)  work fine,
>>> but some other (r.mask) fail with a similar XML error.
>>>
>>> All commands work fine when used from the GRASS shell...
>>>
>>> What is this XML error ?
>>> Thanks
>>>
>>> Le 22/11/2016 09:34, Roger Bivand a écrit :
>>>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>>>
>>>>> Dear list,
>>>>>
>>>>> Using rgrass7 on Windows7 with GRASS 7.0.5 (OSGeo distribution), I get
>>>>> the following error :
>>>>
>>>> Please always try to provide a reproducible example using a standard
>>>> data set. In addition, the output of traceback() following the error
>>>> would be helpful. Are you running R inside GRASS, or using R to
>>>> initiate GRASS?
>>>>
>>>> Consider using the grass-stats list:
>>>>
>>>> https://lists.osgeo.org/mailman/listinfo/grass-stats
>>>>
>>>> as it is more likely to yield results, but there also provide an
>>>> example that anyone can reproduce. The example should avoid loading
>>>> other packages, and should be run from the R console (not, say,
>>>> RStudio).
>>>>
>>>> Roger
>>>>
>>>>
>>>>
>>>>>
>>>>>> execGRASS("v.db.addcolumn", map = "result_v", columns = "area_m2
>>>>>> double precision")
>>>>> Error : XML content does not seem to be XML: 'Le chemin d'accés
>>>>> spécifié est introuvable.' In addition: Warning message: running
>>>>> command 'v.db.addcolumn.bat --interface-description' had status 1
>>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) :
>>>>>  v.db.addcolumn not parsed
>>>>>
>>>>>
>>>>> and a similar one for r.mask :
>>>>>
>>>>>> execGRASS("r.mask", raster = "map")
>>>>> Error : XML content does not seem to be XML: 'Le chemin d'accés
>>>>> spécifié est introuvable.'
>>>>> In addition: Warning message:
>>>>> running command 'r.mask.bat --interface-description' had status 1
>>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) : r.mask not parsed
>>>>>
>>>>>
>>>>> whereas most other execGRASS command I tried work as expected.
>>>>> Any idea ?
>>>>> Thanks in advance
>>>>>
>>>>> Here is my session info :
>>>>>
>>>>>> sessionInfo()
>>>>> R version 3.3.1 (2016-06-21)
>>>>> Platform: x86_64-w64-mingw32/x64 (64-bit)
>>>>> Running under: Windows 7 x64 (build 7601) Service Pack 1
>>>>>
>>>>> locale:
>>>>> [1] LC_COLLATE=French_France.1252  LC_CTYPE=French_France.1252
>>>>> LC_MONETARY=French_France.1252 LC_NUMERIC=C [5]
>>>>> LC_TIME=French_France.1252
>>>>> attached base packages:
>>>>> [1] parallel  stats     graphics  grDevices utils     datasets
>>>>> methods   base
>>>>> other attached packages: [1] rgrass7_0.1-9 XML_3.98-1.4 beepr_1.2
>>>>> raster_2.5-8 sp_1.2-3 RPostgreSQL_0.4-1 DBI_0.5-1
>>>>>
>>>>> loaded via a namespace (and not attached): [1] magrittr_1.5
>>>>> tools_3.3.1 audio_0.1-5 Rcpp_0.12.7 stringi_1.1.2 grid_3.3.1
>>>>> stringr_1.1.0 lattice_0.20-34 [9] fortunes_1.5-3
>>>>>
>>>>>
>>>>>
>>>>>     [[alternative HTML version deleted]]
>>>>>
>>>>> _______________________________________________
>>>>> R-sig-Geo mailing list
>>>>> [hidden email]
>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>>
>>>
>>> --
>>> *Michaël DELORME*
>>> Administrateur de données, chargé de projet en géomatique
>>> Service régional de l'information statistique, économique et
>>> territoriale
>>> Direction régionale de l'alimentation, de l'agriculture et de la forêt
>>> Auvergne-Rhône-Alpes
>>> Site de Lyon
>>> 165 rue Garibaldi – BP 3202 – 69401 LYON cedex 03
>>> 04 78 63 34 21
>>>
>>> Pour écrire au service :
>>> DRAAF Auvergne-Rhône-Alpes – SRISET
>>> 16B rue Aimé Rudel – BP 45 – 63370 LEMPDES
>>>
>>> http://www.draaf.auvergne-rhone-alpes.agriculture.gouv.fr/
>>>
>>>     [[alternative HTML version deleted]]
>>>
>>> _______________________________________________
>>> R-sig-Geo mailing list
>>> [hidden email]
>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>
>
>
>
--
Roger Bivand
Department of Economics, Norwegian School of Economics,
Helleveien 30, N-5045 Bergen, Norway.
voice: +47 55 95 93 55; fax +47 55 95 91 00
e-mail: [hidden email]
http://orcid.org/0000-0003-2392-6140
https://scholar.google.no/citations?user=AWeghB0AAAAJ&hl=en
http://depsy.org/person/434412
_______________________________________________
R-sig-Geo mailing list
[hidden email]
https://stat.ethz.ch/mailman/listinfo/r-sig-geo
Roger Bivand
Department of Economics
Norwegian School of Economics
Helleveien 30
N-5045 Bergen, Norway
Reply | Threaded
Open this post in threaded view
|

Re: rgrass7 : Error in parseGRASS

Michael DELORME
Thanks for your insight.
I'll use a stand-alone GRASS install.

Cordially

Le 22/11/2016 15:13, Roger Bivand a écrit :

> On Tue, 22 Nov 2016, Michael DELORME wrote:
>
>> Thanks for investigating.
>>
>> I'll try a standalone version of GRASS if needed.
>>
>> Here is the traceback
>>
>>> traceback()
>> 4: stop(paste(cmd, "not parsed"))
>> 3: parseGRASS(cmd, legacyExec = legacyExec)
>> 2: doGRASS(cmd, flags = flags, ..., parameters = parameters, echoCmd =
>> echoCmd, legacyExec = legacyExec)
>> 1: execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2 double
>> precision")
>>
>> My C:\OSGeo4W64\apps\grass\grass-7.0.5\bin lists *.exe or *.bat and
>> indeed the *.bat command are those which don't work (r.mask.bat,
>> v.db.addcolumn.bat,...). The batch calls Python scripts ; for example
>> v.db.addcolumn.bat is :
>>
>> @"%GRASS_PYTHON%" "%GISBASE%/scripts/v.db.addcolumn.py" %*
>>
>> So I guess something must be wrong in my Python installation... (it
>> works however from within a GRASS shell)
>
> No, the logic for Windows and initGRASS has only ever been tested with
> stand-alone GRASS. I would guess that in OSGeo4W the path variables
> are wrong. I cannot even find out how to run initGRASS in R but
> outside the OSGeo4W shell (doesn't find iconv.dll) or inside the
> OSGeo4W shell (cannot create a temporary GRASS location). Unless you
> or others really need OSGeo4W, I suggest asking others to implement
> that - very bulky and fragile.
>
> Roger
>
>>
>> Cordially
>>
>>
>> Le 22/11/2016 14:30, Roger Bivand a écrit :
>>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>>
>>>> Thanks for replying
>>>>
>>>> Here is a reproducible example (change your GRASS directory of
>>>> course) :
>>>>
>>>> library(rgrass7)
>>>> library(sp)
>>>> initGRASS("C:/OSGeo4W64/apps/grass/grass-7.0.5", home = tempdir(),
>>>> override = TRUE)
>>>> data(meuse)
>>>> coordinates(meuse) <- ~x+y
>>>> writeVECT(meuse, "meuse")
>>>> execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2 double
>>>> precision")
>>>
>>> This appears to run correctly on Windows 7 with GRASS 7.0.5 Windows
>>> stand-alone. Do you need to use OSGeo4W - the internal logic used for
>>> finding out where the different versions keep their executables and
>>> batch files varies?
>>>
>>> What does traceback() say after the error? The error comes from
>>> parseGRASS("v.db.addcolumn") - the XML error comes from not being able
>>> to read the output of v.db.addcolumn<.ext> --interface-description
>>> where <.ext> may be .exe or .bat I think.
>>>
>>> Roger
>>>
>>>>
>>>> I get :
>>>> Error : XML content does not seem to be XML: 'The specified path
>>>> was not
>>>> found.'
>>>> In addition: Warning message:
>>>> running command 'v.db.addcolumn.bat --interface-description' had
>>>> status 1
>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) :
>>>>  v.db.addcolumn not parsed
>>>>
>>>> Other execGRASS commands (like r.neighbors, r.mapcalc,..)  work fine,
>>>> but some other (r.mask) fail with a similar XML error.
>>>>
>>>> All commands work fine when used from the GRASS shell...
>>>>
>>>> What is this XML error ?
>>>> Thanks
>>>>
>>>> Le 22/11/2016 09:34, Roger Bivand a écrit :
>>>>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>>>>
>>>>>> Dear list,
>>>>>>
>>>>>> Using rgrass7 on Windows7 with GRASS 7.0.5 (OSGeo distribution),
>>>>>> I get
>>>>>> the following error :
>>>>>
>>>>> Please always try to provide a reproducible example using a standard
>>>>> data set. In addition, the output of traceback() following the error
>>>>> would be helpful. Are you running R inside GRASS, or using R to
>>>>> initiate GRASS?
>>>>>
>>>>> Consider using the grass-stats list:
>>>>>
>>>>> https://lists.osgeo.org/mailman/listinfo/grass-stats
>>>>>
>>>>> as it is more likely to yield results, but there also provide an
>>>>> example that anyone can reproduce. The example should avoid loading
>>>>> other packages, and should be run from the R console (not, say,
>>>>> RStudio).
>>>>>
>>>>> Roger
>>>>>
>>>>>
>>>>>
>>>>>>
>>>>>>> execGRASS("v.db.addcolumn", map = "result_v", columns = "area_m2
>>>>>>> double precision")
>>>>>> Error : XML content does not seem to be XML: 'Le chemin d'accés
>>>>>> spécifié est introuvable.' In addition: Warning message: running
>>>>>> command 'v.db.addcolumn.bat --interface-description' had status 1
>>>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) :
>>>>>>  v.db.addcolumn not parsed
>>>>>>
>>>>>>
>>>>>> and a similar one for r.mask :
>>>>>>
>>>>>>> execGRASS("r.mask", raster = "map")
>>>>>> Error : XML content does not seem to be XML: 'Le chemin d'accés
>>>>>> spécifié est introuvable.'
>>>>>> In addition: Warning message:
>>>>>> running command 'r.mask.bat --interface-description' had status 1
>>>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) : r.mask not
>>>>>> parsed
>>>>>>
>>>>>>
>>>>>> whereas most other execGRASS command I tried work as expected.
>>>>>> Any idea ?
>>>>>> Thanks in advance
>>>>>>
>>>>>> Here is my session info :
>>>>>>
>>>>>>> sessionInfo()
>>>>>> R version 3.3.1 (2016-06-21)
>>>>>> Platform: x86_64-w64-mingw32/x64 (64-bit)
>>>>>> Running under: Windows 7 x64 (build 7601) Service Pack 1
>>>>>>
>>>>>> locale:
>>>>>> [1] LC_COLLATE=French_France.1252  LC_CTYPE=French_France.1252
>>>>>> LC_MONETARY=French_France.1252 LC_NUMERIC=C [5]
>>>>>> LC_TIME=French_France.1252
>>>>>> attached base packages:
>>>>>> [1] parallel  stats     graphics  grDevices utils     datasets
>>>>>> methods   base
>>>>>> other attached packages: [1] rgrass7_0.1-9 XML_3.98-1.4 beepr_1.2
>>>>>> raster_2.5-8 sp_1.2-3 RPostgreSQL_0.4-1 DBI_0.5-1
>>>>>>
>>>>>> loaded via a namespace (and not attached): [1] magrittr_1.5
>>>>>> tools_3.3.1 audio_0.1-5 Rcpp_0.12.7 stringi_1.1.2 grid_3.3.1
>>>>>> stringr_1.1.0 lattice_0.20-34 [9] fortunes_1.5-3
>>>>>>
>>>>>>
>>>>>>
>>>>>>     [[alternative HTML version deleted]]
>>>>>>
>>>>>> _______________________________________________
>>>>>> R-sig-Geo mailing list
>>>>>> [hidden email]
>>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>>>
>>>>
>>>> --
>>>> *Michaël DELORME*
>>>> Administrateur de données, chargé de projet en géomatique
>>>> Service régional de l'information statistique, économique et
>>>> territoriale
>>>> Direction régionale de l'alimentation, de l'agriculture et de la forêt
>>>> Auvergne-Rhône-Alpes
>>>> Site de Lyon
>>>> 165 rue Garibaldi – BP 3202 – 69401 LYON cedex 03
>>>> 04 78 63 34 21
>>>>
>>>> Pour écrire au service :
>>>> DRAAF Auvergne-Rhône-Alpes – SRISET
>>>> 16B rue Aimé Rudel – BP 45 – 63370 LEMPDES
>>>>
>>>> http://www.draaf.auvergne-rhone-alpes.agriculture.gouv.fr/
>>>>
>>>>     [[alternative HTML version deleted]]
>>>>
>>>> _______________________________________________
>>>> R-sig-Geo mailing list
>>>> [hidden email]
>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>
>>
>>
>>
>

_______________________________________________
R-sig-Geo mailing list
[hidden email]
https://stat.ethz.ch/mailman/listinfo/r-sig-geo
Reply | Threaded
Open this post in threaded view
|

Re: rgrass7 : Error in parseGRASS

Chris Reudenbach
Michael,


using GRASS from R is a bit cumbersome. GRASS (and this is for sure one
of it strength ) is extremely rigid with projections etc. Due to this
you should setup a correct structure. I use a setup that is similar to
the below snippet.

cheers Chris


library(rgrass7)
library(sp)

# setup a temp workingdir
working.dir<- "~/tmp/"

# get meuse data

data(meuse)
data(meuse.grid)

# georeference the meuse grid data
coordinates(meuse.grid) <- ~x+y
proj4string(meuse.grid) <- CRS("+init=epsg:28992")
gridded(meuse.grid) <- TRUE

# get a first cellsize/pixel resolution for GRASS
resolution <- meuse.grid@grid@cellsize[1]

# georeference the meuse data
coordinates(meuse) <- ~x+y
proj4string(meuse) <- as.character(CRS("+init=epsg:28992"))

# get projection, proj4 string and extent for GRASS
projection<-(strsplit(meuse@proj4string@projargs,split = " "))
proj4<- paste(projection[[1]][2:length(unlist(projection))], collapse = ' ')
xmax<-meuse@bbox[3]
xmin<-meuse@bbox[1]
ymax<-meuse@bbox[4]
ymin<-meuse@@bbox[2]

# create and set working directory
if (!file.exists(file.path(working.dir,"run"))){
   dir.create(file.path(working.dir,"run"),recursive = TRUE)
}
setwd(file.path( working.dir,"run"))


############ set up GRASS RUNTIME environment

# define the GRASS executable path
if(Sys.info()["sysname"] == "Windows"){
   grass.gis.base<-'C:/OSGeo4W64/apps/grass/grass-7.0.5'
}else {
   grass.gis.base<-'/usr/lib/grass72'
}

# set path for optional GRASS addons
Sys.setenv(GRASS_ADDON_PATH="~/.grass7/addons")

# create the TEMPORARY GRASS location
rgrass7::initGRASS(gisBase=grass.gis.base,
                    home=tempdir(),
                    mapset='PERMANENT',
                    override=TRUE
)

# assign GRASS projection according to data set
rgrass7::execGRASS('g.proj',
                    flags=c('c','quiet'),
                    proj4=proj4
)

# assign GRASS extent and resolution
rgrass7::execGRASS('g.region',
                    flags=c('quiet'),
                    n=as.character(ymax),
                    s=as.character(ymin),
                    e=as.character(xmax),
                    w=as.character(xmin),
                    res=as.character(resolution)
)


#############   now do GRASS STUFF

writeVECT(meuse,"meuse")
execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2 double
precision")


On 23.11.2016 07:38, Michael DELORME wrote:

> Thanks for your insight.
> I'll use a stand-alone GRASS install.
>
> Cordially
>
> Le 22/11/2016 15:13, Roger Bivand a écrit :
>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>
>>> Thanks for investigating.
>>>
>>> I'll try a standalone version of GRASS if needed.
>>>
>>> Here is the traceback
>>>
>>>> traceback()
>>> 4: stop(paste(cmd, "not parsed"))
>>> 3: parseGRASS(cmd, legacyExec = legacyExec)
>>> 2: doGRASS(cmd, flags = flags, ..., parameters = parameters, echoCmd =
>>> echoCmd, legacyExec = legacyExec)
>>> 1: execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2 double
>>> precision")
>>>
>>> My C:\OSGeo4W64\apps\grass\grass-7.0.5\bin lists *.exe or *.bat and
>>> indeed the *.bat command are those which don't work (r.mask.bat,
>>> v.db.addcolumn.bat,...). The batch calls Python scripts ; for example
>>> v.db.addcolumn.bat is :
>>>
>>> @"%GRASS_PYTHON%" "%GISBASE%/scripts/v.db.addcolumn.py" %*
>>>
>>> So I guess something must be wrong in my Python installation... (it
>>> works however from within a GRASS shell)
>> No, the logic for Windows and initGRASS has only ever been tested with
>> stand-alone GRASS. I would guess that in OSGeo4W the path variables
>> are wrong. I cannot even find out how to run initGRASS in R but
>> outside the OSGeo4W shell (doesn't find iconv.dll) or inside the
>> OSGeo4W shell (cannot create a temporary GRASS location). Unless you
>> or others really need OSGeo4W, I suggest asking others to implement
>> that - very bulky and fragile.
>>
>> Roger
>>
>>> Cordially
>>>
>>>
>>> Le 22/11/2016 14:30, Roger Bivand a écrit :
>>>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>>>
>>>>> Thanks for replying
>>>>>
>>>>> Here is a reproducible example (change your GRASS directory of
>>>>> course) :
>>>>>
>>>>> library(rgrass7)
>>>>> library(sp)
>>>>> initGRASS("C:/OSGeo4W64/apps/grass/grass-7.0.5", home = tempdir(),
>>>>> override = TRUE)
>>>>> data(meuse)
>>>>> coordinates(meuse) <- ~x+y
>>>>> writeVECT(meuse, "meuse")
>>>>> execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2 double
>>>>> precision")
>>>> This appears to run correctly on Windows 7 with GRASS 7.0.5 Windows
>>>> stand-alone. Do you need to use OSGeo4W - the internal logic used for
>>>> finding out where the different versions keep their executables and
>>>> batch files varies?
>>>>
>>>> What does traceback() say after the error? The error comes from
>>>> parseGRASS("v.db.addcolumn") - the XML error comes from not being able
>>>> to read the output of v.db.addcolumn<.ext> --interface-description
>>>> where <.ext> may be .exe or .bat I think.
>>>>
>>>> Roger
>>>>
>>>>> I get :
>>>>> Error : XML content does not seem to be XML: 'The specified path
>>>>> was not
>>>>> found.'
>>>>> In addition: Warning message:
>>>>> running command 'v.db.addcolumn.bat --interface-description' had
>>>>> status 1
>>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) :
>>>>>   v.db.addcolumn not parsed
>>>>>
>>>>> Other execGRASS commands (like r.neighbors, r.mapcalc,..)  work fine,
>>>>> but some other (r.mask) fail with a similar XML error.
>>>>>
>>>>> All commands work fine when used from the GRASS shell...
>>>>>
>>>>> What is this XML error ?
>>>>> Thanks
>>>>>
>>>>> Le 22/11/2016 09:34, Roger Bivand a écrit :
>>>>>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>>>>>
>>>>>>> Dear list,
>>>>>>>
>>>>>>> Using rgrass7 on Windows7 with GRASS 7.0.5 (OSGeo distribution),
>>>>>>> I get
>>>>>>> the following error :
>>>>>> Please always try to provide a reproducible example using a standard
>>>>>> data set. In addition, the output of traceback() following the error
>>>>>> would be helpful. Are you running R inside GRASS, or using R to
>>>>>> initiate GRASS?
>>>>>>
>>>>>> Consider using the grass-stats list:
>>>>>>
>>>>>> https://lists.osgeo.org/mailman/listinfo/grass-stats
>>>>>>
>>>>>> as it is more likely to yield results, but there also provide an
>>>>>> example that anyone can reproduce. The example should avoid loading
>>>>>> other packages, and should be run from the R console (not, say,
>>>>>> RStudio).
>>>>>>
>>>>>> Roger
>>>>>>
>>>>>>
>>>>>>
>>>>>>>> execGRASS("v.db.addcolumn", map = "result_v", columns = "area_m2
>>>>>>>> double precision")
>>>>>>> Error : XML content does not seem to be XML: 'Le chemin d'accés
>>>>>>> spécifié est introuvable.' In addition: Warning message: running
>>>>>>> command 'v.db.addcolumn.bat --interface-description' had status 1
>>>>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) :
>>>>>>>   v.db.addcolumn not parsed
>>>>>>>
>>>>>>>
>>>>>>> and a similar one for r.mask :
>>>>>>>
>>>>>>>> execGRASS("r.mask", raster = "map")
>>>>>>> Error : XML content does not seem to be XML: 'Le chemin d'accés
>>>>>>> spécifié est introuvable.'
>>>>>>> In addition: Warning message:
>>>>>>> running command 'r.mask.bat --interface-description' had status 1
>>>>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) : r.mask not
>>>>>>> parsed
>>>>>>>
>>>>>>>
>>>>>>> whereas most other execGRASS command I tried work as expected.
>>>>>>> Any idea ?
>>>>>>> Thanks in advance
>>>>>>>
>>>>>>> Here is my session info :
>>>>>>>
>>>>>>>> sessionInfo()
>>>>>>> R version 3.3.1 (2016-06-21)
>>>>>>> Platform: x86_64-w64-mingw32/x64 (64-bit)
>>>>>>> Running under: Windows 7 x64 (build 7601) Service Pack 1
>>>>>>>
>>>>>>> locale:
>>>>>>> [1] LC_COLLATE=French_France.1252  LC_CTYPE=French_France.1252
>>>>>>> LC_MONETARY=French_France.1252 LC_NUMERIC=C [5]
>>>>>>> LC_TIME=French_France.1252
>>>>>>> attached base packages:
>>>>>>> [1] parallel  stats     graphics  grDevices utils     datasets
>>>>>>> methods   base
>>>>>>> other attached packages: [1] rgrass7_0.1-9 XML_3.98-1.4 beepr_1.2
>>>>>>> raster_2.5-8 sp_1.2-3 RPostgreSQL_0.4-1 DBI_0.5-1
>>>>>>>
>>>>>>> loaded via a namespace (and not attached): [1] magrittr_1.5
>>>>>>> tools_3.3.1 audio_0.1-5 Rcpp_0.12.7 stringi_1.1.2 grid_3.3.1
>>>>>>> stringr_1.1.0 lattice_0.20-34 [9] fortunes_1.5-3
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>      [[alternative HTML version deleted]]
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> R-sig-Geo mailing list
>>>>>>> [hidden email]
>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>>> --
>>>>> *Michaël DELORME*
>>>>> Administrateur de données, chargé de projet en géomatique
>>>>> Service régional de l'information statistique, économique et
>>>>> territoriale
>>>>> Direction régionale de l'alimentation, de l'agriculture et de la forêt
>>>>> Auvergne-Rhône-Alpes
>>>>> Site de Lyon
>>>>> 165 rue Garibaldi – BP 3202 – 69401 LYON cedex 03
>>>>> 04 78 63 34 21
>>>>>
>>>>> Pour écrire au service :
>>>>> DRAAF Auvergne-Rhône-Alpes – SRISET
>>>>> 16B rue Aimé Rudel – BP 45 – 63370 LEMPDES
>>>>>
>>>>> http://www.draaf.auvergne-rhone-alpes.agriculture.gouv.fr/
>>>>>
>>>>>      [[alternative HTML version deleted]]
>>>>>
>>>>> _______________________________________________
>>>>> R-sig-Geo mailing list
>>>>> [hidden email]
>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>
>>>
> _______________________________________________
> R-sig-Geo mailing list
> [hidden email]
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>

_______________________________________________
R-sig-Geo mailing list
[hidden email]
https://stat.ethz.ch/mailman/listinfo/r-sig-geo
Reply | Threaded
Open this post in threaded view
|

Re: rgrass7 : Error in parseGRASS

Roger Bivand
Administrator
Chris,

Thanks for this. Could you please explain how you use R in the OSGeo4W64
context? Where are you starting R and how does it find the OSGeo4W
components that are not on default PATH settings? In order to correct
rgrass7, I need to know how to start R under OSGeo4W64 outside GRASS.

Roger

On Wed, 23 Nov 2016, Chris Reudenbach wrote:

> Michael,
>
>
> using GRASS from R is a bit cumbersome. GRASS (and this is for sure one of it
> strength ) is extremely rigid with projections etc. Due to this you should
> setup a correct structure. I use a setup that is similar to the below
> snippet.
>
> cheers Chris
>
>
> library(rgrass7)
> library(sp)
>
> # setup a temp workingdir
> working.dir<- "~/tmp/"
>
> # get meuse data
>
> data(meuse)
> data(meuse.grid)
>
> # georeference the meuse grid data
> coordinates(meuse.grid) <- ~x+y
> proj4string(meuse.grid) <- CRS("+init=epsg:28992")
> gridded(meuse.grid) <- TRUE
>
> # get a first cellsize/pixel resolution for GRASS
> resolution <- meuse.grid@grid@cellsize[1]
>
> # georeference the meuse data
> coordinates(meuse) <- ~x+y
> proj4string(meuse) <- as.character(CRS("+init=epsg:28992"))
>
> # get projection, proj4 string and extent for GRASS
> projection<-(strsplit(meuse@proj4string@projargs,split = " "))
> proj4<- paste(projection[[1]][2:length(unlist(projection))], collapse = ' ')
> xmax<-meuse@bbox[3]
> xmin<-meuse@bbox[1]
> ymax<-meuse@bbox[4]
> ymin<-meuse@@bbox[2]
>
> # create and set working directory
> if (!file.exists(file.path(working.dir,"run"))){
>  dir.create(file.path(working.dir,"run"),recursive = TRUE)
> }
> setwd(file.path( working.dir,"run"))
>
>
> ############ set up GRASS RUNTIME environment
>
> # define the GRASS executable path
> if(Sys.info()["sysname"] == "Windows"){
>  grass.gis.base<-'C:/OSGeo4W64/apps/grass/grass-7.0.5'
> }else {
>  grass.gis.base<-'/usr/lib/grass72'
> }
>
> # set path for optional GRASS addons
> Sys.setenv(GRASS_ADDON_PATH="~/.grass7/addons")
>
> # create the TEMPORARY GRASS location
> rgrass7::initGRASS(gisBase=grass.gis.base,
>                    home=tempdir(),
>                    mapset='PERMANENT',
>                    override=TRUE
> )
>
> # assign GRASS projection according to data set
> rgrass7::execGRASS('g.proj',
>                    flags=c('c','quiet'),
>                    proj4=proj4
> )
>
> # assign GRASS extent and resolution
> rgrass7::execGRASS('g.region',
>                    flags=c('quiet'),
>                    n=as.character(ymax),
>                    s=as.character(ymin),
>                    e=as.character(xmax),
>                    w=as.character(xmin),
>                    res=as.character(resolution)
> )
>
>
> #############   now do GRASS STUFF
>
> writeVECT(meuse,"meuse")
> execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2 double
> precision")
>
>
> On 23.11.2016 07:38, Michael DELORME wrote:
>>  Thanks for your insight.
>>  I'll use a stand-alone GRASS install.
>>
>>  Cordially
>>
>>  Le 22/11/2016 15:13, Roger Bivand a écrit :
>> >  On Tue, 22 Nov 2016, Michael DELORME wrote:
>> >
>> > >  Thanks for investigating.
>> > >
>> > >  I'll try a standalone version of GRASS if needed.
>> > >
>> > >  Here is the traceback
>> > >
>> > > >  traceback()
>> > >  4: stop(paste(cmd, "not parsed"))
>> > >  3: parseGRASS(cmd, legacyExec = legacyExec)
>> > >  2: doGRASS(cmd, flags = flags, ..., parameters = parameters, echoCmd =
>> > >  echoCmd, legacyExec = legacyExec)
>> > >  1: execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2
>> > >  double
>> > >  precision")
>> > >
>> > >  My C:\OSGeo4W64\apps\grass\grass-7.0.5\bin lists *.exe or *.bat and
>> > >  indeed the *.bat command are those which don't work (r.mask.bat,
>> > >  v.db.addcolumn.bat,...). The batch calls Python scripts ; for example
>> > >  v.db.addcolumn.bat is :
>> > >
>> > >  @"%GRASS_PYTHON%" "%GISBASE%/scripts/v.db.addcolumn.py" %*
>> > >
>> > >  So I guess something must be wrong in my Python installation... (it
>> > >  works however from within a GRASS shell)
>> >  No, the logic for Windows and initGRASS has only ever been tested with
>> >  stand-alone GRASS. I would guess that in OSGeo4W the path variables
>> >  are wrong. I cannot even find out how to run initGRASS in R but
>> >  outside the OSGeo4W shell (doesn't find iconv.dll) or inside the
>> >  OSGeo4W shell (cannot create a temporary GRASS location). Unless you
>> >  or others really need OSGeo4W, I suggest asking others to implement
>> >  that - very bulky and fragile.
>> >
>> >  Roger
>> >
>> > >  Cordially
>> > >
>> > >
>> > >  Le 22/11/2016 14:30, Roger Bivand a écrit :
>> > > >  On Tue, 22 Nov 2016, Michael DELORME wrote:
>> > > >
>> > > > >  Thanks for replying
>> > > > >
>> > > > >  Here is a reproducible example (change your GRASS directory of
>> > > > >  course) :
>> > > > >
>> > > > >  library(rgrass7)
>> > > > >  library(sp)
>> > > > >  initGRASS("C:/OSGeo4W64/apps/grass/grass-7.0.5", home = tempdir(),
>> > > > >  override = TRUE)
>> > > > >  data(meuse)
>> > > > >  coordinates(meuse) <- ~x+y
>> > > > >  writeVECT(meuse, "meuse")
>> > > > >  execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2
>> > > > >  double
>> > > > >  precision")
>> > > >  This appears to run correctly on Windows 7 with GRASS 7.0.5 Windows
>> > > >  stand-alone. Do you need to use OSGeo4W - the internal logic used
>> > > >  for
>> > > >  finding out where the different versions keep their executables and
>> > > >  batch files varies?
>> > > >
>> > > >  What does traceback() say after the error? The error comes from
>> > > >  parseGRASS("v.db.addcolumn") - the XML error comes from not being
>> > > >  able
>> > > >  to read the output of v.db.addcolumn<.ext> --interface-description
>> > > >  where <.ext> may be .exe or .bat I think.
>> > > >
>> > > >  Roger
>> > > >
>> > > > >  I get :
>> > > > >  Error : XML content does not seem to be XML: 'The specified path
>> > > > >  was not
>> > > > >  found.'
>> > > > >  In addition: Warning message:
>> > > > >  running command 'v.db.addcolumn.bat --interface-description' had
>> > > > >  status 1
>> > > > >  Error in parseGRASS(cmd, legacyExec = legacyExec) :
>> > > > >    v.db.addcolumn not parsed
>> > > > >
>> > > > >  Other execGRASS commands (like r.neighbors, r.mapcalc,..)  work
>> > > > >  fine,
>> > > > >  but some other (r.mask) fail with a similar XML error.
>> > > > >
>> > > > >  All commands work fine when used from the GRASS shell...
>> > > > >
>> > > > >  What is this XML error ?
>> > > > >  Thanks
>> > > > >
>> > > > >  Le 22/11/2016 09:34, Roger Bivand a écrit :
>> > > > > >  On Tue, 22 Nov 2016, Michael DELORME wrote:
>> > > > > >
>> > > > > > >  Dear list,
>> > > > > > >
>> > > > > > >  Using rgrass7 on Windows7 with GRASS 7.0.5 (OSGeo
>> > > > > > >  distribution),
>> > > > > > >  I get
>> > > > > > >  the following error :
>> > > > > >  Please always try to provide a reproducible example using a
>> > > > > >  standard
>> > > > > >  data set. In addition, the output of traceback() following the
>> > > > > >  error
>> > > > > >  would be helpful. Are you running R inside GRASS, or using R to
>> > > > > >  initiate GRASS?
>> > > > > >
>> > > > > >  Consider using the grass-stats list:
>> > > > > >
>> > > > > >  https://lists.osgeo.org/mailman/listinfo/grass-stats
>> > > > > >
>> > > > > >  as it is more likely to yield results, but there also provide an
>> > > > > >  example that anyone can reproduce. The example should avoid
>> > > > > >  loading
>> > > > > >  other packages, and should be run from the R console (not, say,
>> > > > > >  RStudio).
>> > > > > >
>> > > > > >  Roger
>> > > > > >
>> > > > > >
>> > > > > >
>> > > > > > > >  execGRASS("v.db.addcolumn", map = "result_v", columns =
>> > > > > > > >  "area_m2
>> > > > > > > >  double precision")
>> > > > > > >  Error : XML content does not seem to be XML: 'Le chemin
>> > > > > > >  d'accés
>> > > > > > >  spécifié est introuvable.' In addition: Warning message:
>> > > > > > >  running
>> > > > > > >  command 'v.db.addcolumn.bat --interface-description' had
>> > > > > > >  status 1
>> > > > > > >  Error in parseGRASS(cmd, legacyExec = legacyExec) :
>> > > > > > >    v.db.addcolumn not parsed
>> > > > > > >
>> > > > > > >
>> > > > > > >  and a similar one for r.mask :
>> > > > > > >
>> > > > > > > >  execGRASS("r.mask", raster = "map")
>> > > > > > >  Error : XML content does not seem to be XML: 'Le chemin
>> > > > > > >  d'accés
>> > > > > > >  spécifié est introuvable.'
>> > > > > > >  In addition: Warning message:
>> > > > > > >  running command 'r.mask.bat --interface-description' had
>> > > > > > >  status 1
>> > > > > > >  Error in parseGRASS(cmd, legacyExec = legacyExec) : r.mask not
>> > > > > > >  parsed
>> > > > > > >
>> > > > > > >
>> > > > > > >  whereas most other execGRASS command I tried work as expected.
>> > > > > > >  Any idea ?
>> > > > > > >  Thanks in advance
>> > > > > > >
>> > > > > > >  Here is my session info :
>> > > > > > >
>> > > > > > > >  sessionInfo()
>> > > > > > >  R version 3.3.1 (2016-06-21)
>> > > > > > >  Platform: x86_64-w64-mingw32/x64 (64-bit)
>> > > > > > >  Running under: Windows 7 x64 (build 7601) Service Pack 1
>> > > > > > >
>> > > > > > >  locale:
>> > > > > > >  [1] LC_COLLATE=French_France.1252  LC_CTYPE=French_France.1252
>> > > > > > >  LC_MONETARY=French_France.1252 LC_NUMERIC=C [5]
>> > > > > > >  LC_TIME=French_France.1252
>> > > > > > >  attached base packages:
>> > > > > > >  [1] parallel  stats     graphics  grDevices utils     datasets
>> > > > > > >  methods   base
>> > > > > > >  other attached packages: [1] rgrass7_0.1-9 XML_3.98-1.4
>> > > > > > >  beepr_1.2
>> > > > > > >  raster_2.5-8 sp_1.2-3 RPostgreSQL_0.4-1 DBI_0.5-1
>> > > > > > >
>> > > > > > >  loaded via a namespace (and not attached): [1] magrittr_1.5
>> > > > > > >  tools_3.3.1 audio_0.1-5 Rcpp_0.12.7 stringi_1.1.2 grid_3.3.1
>> > > > > > >  stringr_1.1.0 lattice_0.20-34 [9] fortunes_1.5-3
>> > > > > > >
>> > > > > > >
>> > > > > > >
>> > > > > > >       [[alternative HTML version deleted]]
>> > > > > > >
>> > > > > > >  _______________________________________________
>> > > > > > >  R-sig-Geo mailing list
>> > > > > > >  [hidden email]
>> > > > > > >  https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>> > > > >  --
>> > > > >  *Michaël DELORME*
>> > > > >  Administrateur de données, chargé de projet en géomatique
>> > > > >  Service régional de l'information statistique, économique et
>> > > > >  territoriale
>> > > > >  Direction régionale de l'alimentation, de l'agriculture et de la
>> > > > >  forêt
>> > > > >  Auvergne-Rhône-Alpes
>> > > > >  Site de Lyon
>> > > > >  165 rue Garibaldi – BP 3202 – 69401 LYON cedex 03
>> > > > >  04 78 63 34 21
>> > > > >
>> > > > >  Pour écrire au service :
>> > > > >  DRAAF Auvergne-Rhône-Alpes – SRISET
>> > > > >  16B rue Aimé Rudel – BP 45 – 63370 LEMPDES
>> > > > >
>> > > > >  http://www.draaf.auvergne-rhone-alpes.agriculture.gouv.fr/
>> > > > >
>> > > > >       [[alternative HTML version deleted]]
>> > > > >
>> > > > >  _______________________________________________
>> > > > >  R-sig-Geo mailing list
>> > > > >  [hidden email]
>> > > > >  https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>> > >
>> > >
>>  _______________________________________________
>>  R-sig-Geo mailing list
>>  [hidden email]
>>  https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>
>
> _______________________________________________
> R-sig-Geo mailing list
> [hidden email]
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>
--
Roger Bivand
Department of Economics, Norwegian School of Economics,
Helleveien 30, N-5045 Bergen, Norway.
voice: +47 55 95 93 55; fax +47 55 95 91 00
e-mail: [hidden email]
http://orcid.org/0000-0003-2392-6140
https://scholar.google.no/citations?user=AWeghB0AAAAJ&hl=en
http://depsy.org/person/434412
_______________________________________________
R-sig-Geo mailing list
[hidden email]
https://stat.ethz.ch/mailman/listinfo/r-sig-geo
Roger Bivand
Department of Economics
Norwegian School of Economics
Helleveien 30
N-5045 Bergen, Norway
Reply | Threaded
Open this post in threaded view
|

Re: rgrass7 : Error in parseGRASS

Michael DELORME
In reply to this post by Chris Reudenbach
Thanks for sharing ; I'll look into it.
Cordially

Le 23/11/2016 09:58, Chris Reudenbach a écrit :

> Michael,
>
>
> using GRASS from R is a bit cumbersome. GRASS (and this is for sure
> one of it strength ) is extremely rigid with projections etc. Due to
> this you should setup a correct structure. I use a setup that is
> similar to the below snippet.
>
> cheers Chris
>
>
> library(rgrass7)
> library(sp)
>
> # setup a temp workingdir
> working.dir<- "~/tmp/"
>
> # get meuse data
>
> data(meuse)
> data(meuse.grid)
>
> # georeference the meuse grid data
> coordinates(meuse.grid) <- ~x+y
> proj4string(meuse.grid) <- CRS("+init=epsg:28992")
> gridded(meuse.grid) <- TRUE
>
> # get a first cellsize/pixel resolution for GRASS
> resolution <- meuse.grid@grid@cellsize[1]
>
> # georeference the meuse data
> coordinates(meuse) <- ~x+y
> proj4string(meuse) <- as.character(CRS("+init=epsg:28992"))
>
> # get projection, proj4 string and extent for GRASS
> projection<-(strsplit(meuse@proj4string@projargs,split = " "))
> proj4<- paste(projection[[1]][2:length(unlist(projection))], collapse
> = ' ')
> xmax<-meuse@bbox[3]
> xmin<-meuse@bbox[1]
> ymax<-meuse@bbox[4]
> ymin<-meuse@@bbox[2]
>
> # create and set working directory
> if (!file.exists(file.path(working.dir,"run"))){
>   dir.create(file.path(working.dir,"run"),recursive = TRUE)
> }
> setwd(file.path( working.dir,"run"))
>
>
> ############ set up GRASS RUNTIME environment
>
> # define the GRASS executable path
> if(Sys.info()["sysname"] == "Windows"){
>   grass.gis.base<-'C:/OSGeo4W64/apps/grass/grass-7.0.5'
> }else {
>   grass.gis.base<-'/usr/lib/grass72'
> }
>
> # set path for optional GRASS addons
> Sys.setenv(GRASS_ADDON_PATH="~/.grass7/addons")
>
> # create the TEMPORARY GRASS location
> rgrass7::initGRASS(gisBase=grass.gis.base,
>                    home=tempdir(),
>                    mapset='PERMANENT',
>                    override=TRUE
> )
>
> # assign GRASS projection according to data set
> rgrass7::execGRASS('g.proj',
>                    flags=c('c','quiet'),
>                    proj4=proj4
> )
>
> # assign GRASS extent and resolution
> rgrass7::execGRASS('g.region',
>                    flags=c('quiet'),
>                    n=as.character(ymax),
>                    s=as.character(ymin),
>                    e=as.character(xmax),
>                    w=as.character(xmin),
>                    res=as.character(resolution)
> )
>
>
> #############   now do GRASS STUFF
>
> writeVECT(meuse,"meuse")
> execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2 double
> precision")
>
>
> On 23.11.2016 07:38, Michael DELORME wrote:
>> Thanks for your insight.
>> I'll use a stand-alone GRASS install.
>>
>> Cordially
>>
>> Le 22/11/2016 15:13, Roger Bivand a écrit :
>>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>>
>>>> Thanks for investigating.
>>>>
>>>> I'll try a standalone version of GRASS if needed.
>>>>
>>>> Here is the traceback
>>>>
>>>>> traceback()
>>>> 4: stop(paste(cmd, "not parsed"))
>>>> 3: parseGRASS(cmd, legacyExec = legacyExec)
>>>> 2: doGRASS(cmd, flags = flags, ..., parameters = parameters, echoCmd =
>>>> echoCmd, legacyExec = legacyExec)
>>>> 1: execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2
>>>> double
>>>> precision")
>>>>
>>>> My C:\OSGeo4W64\apps\grass\grass-7.0.5\bin lists *.exe or *.bat and
>>>> indeed the *.bat command are those which don't work (r.mask.bat,
>>>> v.db.addcolumn.bat,...). The batch calls Python scripts ; for example
>>>> v.db.addcolumn.bat is :
>>>>
>>>> @"%GRASS_PYTHON%" "%GISBASE%/scripts/v.db.addcolumn.py" %*
>>>>
>>>> So I guess something must be wrong in my Python installation... (it
>>>> works however from within a GRASS shell)
>>> No, the logic for Windows and initGRASS has only ever been tested with
>>> stand-alone GRASS. I would guess that in OSGeo4W the path variables
>>> are wrong. I cannot even find out how to run initGRASS in R but
>>> outside the OSGeo4W shell (doesn't find iconv.dll) or inside the
>>> OSGeo4W shell (cannot create a temporary GRASS location). Unless you
>>> or others really need OSGeo4W, I suggest asking others to implement
>>> that - very bulky and fragile.
>>>
>>> Roger
>>>
>>>> Cordially
>>>>
>>>>
>>>> Le 22/11/2016 14:30, Roger Bivand a écrit :
>>>>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>>>>
>>>>>> Thanks for replying
>>>>>>
>>>>>> Here is a reproducible example (change your GRASS directory of
>>>>>> course) :
>>>>>>
>>>>>> library(rgrass7)
>>>>>> library(sp)
>>>>>> initGRASS("C:/OSGeo4W64/apps/grass/grass-7.0.5", home = tempdir(),
>>>>>> override = TRUE)
>>>>>> data(meuse)
>>>>>> coordinates(meuse) <- ~x+y
>>>>>> writeVECT(meuse, "meuse")
>>>>>> execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2 double
>>>>>> precision")
>>>>> This appears to run correctly on Windows 7 with GRASS 7.0.5 Windows
>>>>> stand-alone. Do you need to use OSGeo4W - the internal logic used for
>>>>> finding out where the different versions keep their executables and
>>>>> batch files varies?
>>>>>
>>>>> What does traceback() say after the error? The error comes from
>>>>> parseGRASS("v.db.addcolumn") - the XML error comes from not being
>>>>> able
>>>>> to read the output of v.db.addcolumn<.ext> --interface-description
>>>>> where <.ext> may be .exe or .bat I think.
>>>>>
>>>>> Roger
>>>>>
>>>>>> I get :
>>>>>> Error : XML content does not seem to be XML: 'The specified path
>>>>>> was not
>>>>>> found.'
>>>>>> In addition: Warning message:
>>>>>> running command 'v.db.addcolumn.bat --interface-description' had
>>>>>> status 1
>>>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) :
>>>>>>   v.db.addcolumn not parsed
>>>>>>
>>>>>> Other execGRASS commands (like r.neighbors, r.mapcalc,..)  work
>>>>>> fine,
>>>>>> but some other (r.mask) fail with a similar XML error.
>>>>>>
>>>>>> All commands work fine when used from the GRASS shell...
>>>>>>
>>>>>> What is this XML error ?
>>>>>> Thanks
>>>>>>
>>>>>> Le 22/11/2016 09:34, Roger Bivand a écrit :
>>>>>>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>>>>>>
>>>>>>>> Dear list,
>>>>>>>>
>>>>>>>> Using rgrass7 on Windows7 with GRASS 7.0.5 (OSGeo distribution),
>>>>>>>> I get
>>>>>>>> the following error :
>>>>>>> Please always try to provide a reproducible example using a
>>>>>>> standard
>>>>>>> data set. In addition, the output of traceback() following the
>>>>>>> error
>>>>>>> would be helpful. Are you running R inside GRASS, or using R to
>>>>>>> initiate GRASS?
>>>>>>>
>>>>>>> Consider using the grass-stats list:
>>>>>>>
>>>>>>> https://lists.osgeo.org/mailman/listinfo/grass-stats
>>>>>>>
>>>>>>> as it is more likely to yield results, but there also provide an
>>>>>>> example that anyone can reproduce. The example should avoid loading
>>>>>>> other packages, and should be run from the R console (not, say,
>>>>>>> RStudio).
>>>>>>>
>>>>>>> Roger
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>>> execGRASS("v.db.addcolumn", map = "result_v", columns = "area_m2
>>>>>>>>> double precision")
>>>>>>>> Error : XML content does not seem to be XML: 'Le chemin d'accés
>>>>>>>> spécifié est introuvable.' In addition: Warning message: running
>>>>>>>> command 'v.db.addcolumn.bat --interface-description' had status 1
>>>>>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) :
>>>>>>>>   v.db.addcolumn not parsed
>>>>>>>>
>>>>>>>>
>>>>>>>> and a similar one for r.mask :
>>>>>>>>
>>>>>>>>> execGRASS("r.mask", raster = "map")
>>>>>>>> Error : XML content does not seem to be XML: 'Le chemin d'accés
>>>>>>>> spécifié est introuvable.'
>>>>>>>> In addition: Warning message:
>>>>>>>> running command 'r.mask.bat --interface-description' had status 1
>>>>>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) : r.mask not
>>>>>>>> parsed
>>>>>>>>
>>>>>>>>
>>>>>>>> whereas most other execGRASS command I tried work as expected.
>>>>>>>> Any idea ?
>>>>>>>> Thanks in advance
>>>>>>>>
>>>>>>>> Here is my session info :
>>>>>>>>
>>>>>>>>> sessionInfo()
>>>>>>>> R version 3.3.1 (2016-06-21)
>>>>>>>> Platform: x86_64-w64-mingw32/x64 (64-bit)
>>>>>>>> Running under: Windows 7 x64 (build 7601) Service Pack 1
>>>>>>>>
>>>>>>>> locale:
>>>>>>>> [1] LC_COLLATE=French_France.1252  LC_CTYPE=French_France.1252
>>>>>>>> LC_MONETARY=French_France.1252 LC_NUMERIC=C [5]
>>>>>>>> LC_TIME=French_France.1252
>>>>>>>> attached base packages:
>>>>>>>> [1] parallel  stats     graphics  grDevices utils     datasets
>>>>>>>> methods   base
>>>>>>>> other attached packages: [1] rgrass7_0.1-9 XML_3.98-1.4 beepr_1.2
>>>>>>>> raster_2.5-8 sp_1.2-3 RPostgreSQL_0.4-1 DBI_0.5-1
>>>>>>>>
>>>>>>>> loaded via a namespace (and not attached): [1] magrittr_1.5
>>>>>>>> tools_3.3.1 audio_0.1-5 Rcpp_0.12.7 stringi_1.1.2 grid_3.3.1
>>>>>>>> stringr_1.1.0 lattice_0.20-34 [9] fortunes_1.5-3
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>      [[alternative HTML version deleted]]
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> R-sig-Geo mailing list
>>>>>>>> [hidden email]
>>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>>>> --
>>>>>> *Michaël DELORME*
>>>>>> Administrateur de données, chargé de projet en géomatique
>>>>>> Service régional de l'information statistique, économique et
>>>>>> territoriale
>>>>>> Direction régionale de l'alimentation, de l'agriculture et de la
>>>>>> forêt
>>>>>> Auvergne-Rhône-Alpes
>>>>>> Site de Lyon
>>>>>> 165 rue Garibaldi – BP 3202 – 69401 LYON cedex 03
>>>>>> 04 78 63 34 21
>>>>>>
>>>>>> Pour écrire au service :
>>>>>> DRAAF Auvergne-Rhône-Alpes – SRISET
>>>>>> 16B rue Aimé Rudel – BP 45 – 63370 LEMPDES
>>>>>>
>>>>>> http://www.draaf.auvergne-rhone-alpes.agriculture.gouv.fr/
>>>>>>
>>>>>>      [[alternative HTML version deleted]]
>>>>>>
>>>>>> _______________________________________________
>>>>>> R-sig-Geo mailing list
>>>>>> [hidden email]
>>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>>
>>>>
>> _______________________________________________
>> R-sig-Geo mailing list
>> [hidden email]
>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>
>
> _______________________________________________
> R-sig-Geo mailing list
> [hidden email]
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo

--
*Michaël DELORME*
Administrateur de données, chargé de projet en géomatique
Service régional de l'information statistique, économique et territoriale
Direction régionale de l'alimentation, de l'agriculture et de la forêt
Auvergne-Rhône-Alpes
Site de Lyon
165 rue Garibaldi – BP 3202 – 69401 LYON cedex 03
04 78 63 34 21

Pour écrire au service :
DRAAF Auvergne-Rhône-Alpes – SRISET
16B rue Aimé Rudel – BP 45 – 63370 LEMPDES

http://www.draaf.auvergne-rhone-alpes.agriculture.gouv.fr/

        [[alternative HTML version deleted]]

_______________________________________________
R-sig-Geo mailing list
[hidden email]
https://stat.ethz.ch/mailman/listinfo/r-sig-geo
Reply | Threaded
Open this post in threaded view
|

Re: rgrass7 : Error in parseGRASS

Chris Reudenbach
In reply to this post by Michael DELORME
Michael,

Using a fresh OSGEO4W64 standard quick desktop installation (i.e.
installation of the default desktop GIS software packages with the
installer and using C:\OSGeo4W64 as path)  I suggest the below solution.

You have to set all necessary eniromental and system variables manually.
I am not quit sure if I got them but actually it seems to work for your
question. As a conclusion I think your Python and all of the rest is
installed correct.


cheers Chris


############### librarys, data etc
---------------------------------------------
library(rgrass7)
library(sp)

# setup a temp workingdir
working.dir<- "~/tmp/"

# get meuse data

data(meuse)
data(meuse.grid)

# georeference the meuse grid data
coordinates(meuse.grid) <- ~x+y
proj4string(meuse.grid) <- CRS("+init=epsg:28992")
gridded(meuse.grid) <- TRUE

# get a first cellsize/pixel resolution for GRASS
resolution <- meuse.grid@grid@cellsize[1]

# georeference the meuse data
coordinates(meuse) <- ~x+y
proj4string(meuse) <- CRS("+init=epsg:28992")

# get projection, proj4 string and extent for GRASS
projection<-(strsplit(meuse@proj4string@projargs,split = " "))
proj4<- paste(projection[[1]][2:length(unlist(projection))], collapse = ' ')
xmax<-meuse@bbox[3]
xmin<-meuse@bbox[1]
ymax<-meuse@bbox[4]
ymin<-meuse@bbox[2]

# create and set working directory
if (!file.exists(file.path(working.dir,"run"))){
   dir.create(file.path(working.dir,"run"),recursive = TRUE)
}
setwd(file.path( working.dir,"run"))


########### SETUP OSGEO4W enviroment settings manually
-------------------------
# setup the OSGEO4W environ manually
# assuming a osgeow4w default "deskop fastinstall
# using the default installation directory "C:\OSGeo4W64"

# set OSGE4W base directory
osgeo4w.root<-"C:\\OSGEO4~1"
Sys.setenv(OSGEO4W_ROOT=osgeo4w.root)
# define GISBASE
grass.gis.base<-paste0(osgeo4w.root,"\\apps\\grass\\grass-7.0.5")
Sys.setenv(GISBASE=grass.gis.base)

Sys.setenv(GRASS_PYTHON=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\bin\\python.exe"))
Sys.setenv(PYTHONHOME=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\apps\\Python27"))
Sys.setenv(PYTHONPATH=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\apps\\grass\\grass-7.0.5\\etc\\python"))
Sys.setenv(GRASS_PROJSHARE=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\share\\proj"))
Sys.setenv(PROJ_LIB=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\share\\proj"))
Sys.setenv(GDAL_DATA=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\share\\gdal"))
Sys.setenv(GEOTIFF_CSV=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\share\\epsg_csv"))
Sys.setenv(FONTCONFIG_FILE=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\etc\\fonts.conf"))

# call all OSGEO4W settings
system("C:/OSGeo4W64/bin/o-help.bat")


# create PATH variable
Sys.setenv(PATH=paste0(grass.gis.base,";",
"C:\\OSGEO4~1\\apps\\Python27\\lib\\site-packages\\numpy\\core",";",
"C:\\OSGeo4W64\\apps\\grass\\grass-7.0.5\\bin",";",
"C:\\OSGeo4W64\\apps\\grass\\grass-7.0.5\\lib",";",
"C:\\OSGeo4W64\\apps\\grass\\grass-7.0.5\\etc",";",
"C:\\OSGeo4W64\\apps\\grass\\grass-7.0.5\\etc\\python",";",
"C:\\OSGeo4W64\\apps\\Python27\\Scripts",";",
                        "C:\\OSGeo4W64\\bin",";",
                        "c:\\OSGeo4W64\\apps",";",
                        "C:\\OSGEO4~1\\apps\\saga",";",
                        paste0(Sys.getenv("WINDIR"),"/WBem"),";",
                        Sys.getenv("PATH")))


#################### start with GRASS setup
------------------------------------
rgrass7::initGRASS(gisBase=grass.gis.base,
                    home=tempdir(),
                    mapset='PERMANENT',
                    override=TRUE
)

# assign GRASS projection according to data set
rgrass7::execGRASS('g.proj',
                    flags=c('c','quiet'),
                    proj4=proj4
)

# assign GRASS extent and resolution
rgrass7::execGRASS('g.region',
                    flags=c('quiet'),
                    n=as.character(ymax),
                    s=as.character(ymin),
                    e=as.character(xmax),
                    w=as.character(xmin),
                    res=as.character(resolution)
)


#############   now do GRASS STUFF
---------------------------------------------

rgrass7::writeVECT(meuse,"meuse")
rgrass7::execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2
double
                    precision")
#############  do other command line stuff
-------------------------------------

## call gdal
system("gdal_merge")

# call saga cli
system("saga_cmd")


Am 23.11.2016 um 07:38 schrieb Michael DELORME:

> Thanks for your insight.
> I'll use a stand-alone GRASS install.
>
> Cordially
>
> Le 22/11/2016 15:13, Roger Bivand a écrit :
>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>
>>> Thanks for investigating.
>>>
>>> I'll try a standalone version of GRASS if needed.
>>>
>>> Here is the traceback
>>>
>>>> traceback()
>>> 4: stop(paste(cmd, "not parsed"))
>>> 3: parseGRASS(cmd, legacyExec = legacyExec)
>>> 2: doGRASS(cmd, flags = flags, ..., parameters = parameters, echoCmd =
>>> echoCmd, legacyExec = legacyExec)
>>> 1: execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2 double
>>> precision")
>>>
>>> My C:\OSGeo4W64\apps\grass\grass-7.0.5\bin lists *.exe or *.bat and
>>> indeed the *.bat command are those which don't work (r.mask.bat,
>>> v.db.addcolumn.bat,...). The batch calls Python scripts ; for example
>>> v.db.addcolumn.bat is :
>>>
>>> @"%GRASS_PYTHON%" "%GISBASE%/scripts/v.db.addcolumn.py" %*
>>>
>>> So I guess something must be wrong in my Python installation... (it
>>> works however from within a GRASS shell)
>> No, the logic for Windows and initGRASS has only ever been tested with
>> stand-alone GRASS. I would guess that in OSGeo4W the path variables
>> are wrong. I cannot even find out how to run initGRASS in R but
>> outside the OSGeo4W shell (doesn't find iconv.dll) or inside the
>> OSGeo4W shell (cannot create a temporary GRASS location). Unless you
>> or others really need OSGeo4W, I suggest asking others to implement
>> that - very bulky and fragile.
>>
>> Roger
>>
>>> Cordially
>>>
>>>
>>> Le 22/11/2016 14:30, Roger Bivand a écrit :
>>>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>>>
>>>>> Thanks for replying
>>>>>
>>>>> Here is a reproducible example (change your GRASS directory of
>>>>> course) :
>>>>>
>>>>> library(rgrass7)
>>>>> library(sp)
>>>>> initGRASS("C:/OSGeo4W64/apps/grass/grass-7.0.5", home = tempdir(),
>>>>> override = TRUE)
>>>>> data(meuse)
>>>>> coordinates(meuse) <- ~x+y
>>>>> writeVECT(meuse, "meuse")
>>>>> execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2 double
>>>>> precision")
>>>> This appears to run correctly on Windows 7 with GRASS 7.0.5 Windows
>>>> stand-alone. Do you need to use OSGeo4W - the internal logic used for
>>>> finding out where the different versions keep their executables and
>>>> batch files varies?
>>>>
>>>> What does traceback() say after the error? The error comes from
>>>> parseGRASS("v.db.addcolumn") - the XML error comes from not being able
>>>> to read the output of v.db.addcolumn<.ext> --interface-description
>>>> where <.ext> may be .exe or .bat I think.
>>>>
>>>> Roger
>>>>
>>>>> I get :
>>>>> Error : XML content does not seem to be XML: 'The specified path
>>>>> was not
>>>>> found.'
>>>>> In addition: Warning message:
>>>>> running command 'v.db.addcolumn.bat --interface-description' had
>>>>> status 1
>>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) :
>>>>>   v.db.addcolumn not parsed
>>>>>
>>>>> Other execGRASS commands (like r.neighbors, r.mapcalc,..)  work fine,
>>>>> but some other (r.mask) fail with a similar XML error.
>>>>>
>>>>> All commands work fine when used from the GRASS shell...
>>>>>
>>>>> What is this XML error ?
>>>>> Thanks
>>>>>
>>>>> Le 22/11/2016 09:34, Roger Bivand a écrit :
>>>>>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>>>>>
>>>>>>> Dear list,
>>>>>>>
>>>>>>> Using rgrass7 on Windows7 with GRASS 7.0.5 (OSGeo distribution),
>>>>>>> I get
>>>>>>> the following error :
>>>>>> Please always try to provide a reproducible example using a standard
>>>>>> data set. In addition, the output of traceback() following the error
>>>>>> would be helpful. Are you running R inside GRASS, or using R to
>>>>>> initiate GRASS?
>>>>>>
>>>>>> Consider using the grass-stats list:
>>>>>>
>>>>>> https://lists.osgeo.org/mailman/listinfo/grass-stats
>>>>>>
>>>>>> as it is more likely to yield results, but there also provide an
>>>>>> example that anyone can reproduce. The example should avoid loading
>>>>>> other packages, and should be run from the R console (not, say,
>>>>>> RStudio).
>>>>>>
>>>>>> Roger
>>>>>>
>>>>>>
>>>>>>
>>>>>>>> execGRASS("v.db.addcolumn", map = "result_v", columns = "area_m2
>>>>>>>> double precision")
>>>>>>> Error : XML content does not seem to be XML: 'Le chemin d'accés
>>>>>>> spécifié est introuvable.' In addition: Warning message: running
>>>>>>> command 'v.db.addcolumn.bat --interface-description' had status 1
>>>>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) :
>>>>>>>   v.db.addcolumn not parsed
>>>>>>>
>>>>>>>
>>>>>>> and a similar one for r.mask :
>>>>>>>
>>>>>>>> execGRASS("r.mask", raster = "map")
>>>>>>> Error : XML content does not seem to be XML: 'Le chemin d'accés
>>>>>>> spécifié est introuvable.'
>>>>>>> In addition: Warning message:
>>>>>>> running command 'r.mask.bat --interface-description' had status 1
>>>>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) : r.mask not
>>>>>>> parsed
>>>>>>>
>>>>>>>
>>>>>>> whereas most other execGRASS command I tried work as expected.
>>>>>>> Any idea ?
>>>>>>> Thanks in advance
>>>>>>>
>>>>>>> Here is my session info :
>>>>>>>
>>>>>>>> sessionInfo()
>>>>>>> R version 3.3.1 (2016-06-21)
>>>>>>> Platform: x86_64-w64-mingw32/x64 (64-bit)
>>>>>>> Running under: Windows 7 x64 (build 7601) Service Pack 1
>>>>>>>
>>>>>>> locale:
>>>>>>> [1] LC_COLLATE=French_France.1252  LC_CTYPE=French_France.1252
>>>>>>> LC_MONETARY=French_France.1252 LC_NUMERIC=C [5]
>>>>>>> LC_TIME=French_France.1252
>>>>>>> attached base packages:
>>>>>>> [1] parallel  stats     graphics  grDevices utils     datasets
>>>>>>> methods   base
>>>>>>> other attached packages: [1] rgrass7_0.1-9 XML_3.98-1.4 beepr_1.2
>>>>>>> raster_2.5-8 sp_1.2-3 RPostgreSQL_0.4-1 DBI_0.5-1
>>>>>>>
>>>>>>> loaded via a namespace (and not attached): [1] magrittr_1.5
>>>>>>> tools_3.3.1 audio_0.1-5 Rcpp_0.12.7 stringi_1.1.2 grid_3.3.1
>>>>>>> stringr_1.1.0 lattice_0.20-34 [9] fortunes_1.5-3
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>      [[alternative HTML version deleted]]
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> R-sig-Geo mailing list
>>>>>>> [hidden email]
>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>>> --
>>>>> *Michaël DELORME*
>>>>> Administrateur de données, chargé de projet en géomatique
>>>>> Service régional de l'information statistique, économique et
>>>>> territoriale
>>>>> Direction régionale de l'alimentation, de l'agriculture et de la forêt
>>>>> Auvergne-Rhône-Alpes
>>>>> Site de Lyon
>>>>> 165 rue Garibaldi – BP 3202 – 69401 LYON cedex 03
>>>>> 04 78 63 34 21
>>>>>
>>>>> Pour écrire au service :
>>>>> DRAAF Auvergne-Rhône-Alpes – SRISET
>>>>> 16B rue Aimé Rudel – BP 45 – 63370 LEMPDES
>>>>>
>>>>> http://www.draaf.auvergne-rhone-alpes.agriculture.gouv.fr/
>>>>>
>>>>>      [[alternative HTML version deleted]]
>>>>>
>>>>> _______________________________________________
>>>>> R-sig-Geo mailing list
>>>>> [hidden email]
>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>
>>>
> _______________________________________________
> R-sig-Geo mailing list
> [hidden email]
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>

_______________________________________________
R-sig-Geo mailing list
[hidden email]
https://stat.ethz.ch/mailman/listinfo/r-sig-geo
Reply | Threaded
Open this post in threaded view
|

Re: rgrass7 : Error in parseGRASS

Michael DELORME
That's great Chris, it works fine as is !
Thank you, I don't have to keep another GRASS install aside then.

I'm sure it will be helpful to other people also.
Thanks again

Le 24/11/2016 09:17, Chris Reudenbach a écrit :

> Michael,
>
> Using a fresh OSGEO4W64 standard quick desktop installation (i.e.
> installation of the default desktop GIS software packages with the
> installer and using C:\OSGeo4W64 as path)  I suggest the below solution.
>
> You have to set all necessary eniromental and system variables
> manually. I am not quit sure if I got them but actually it seems to
> work for your question. As a conclusion I think your Python and all of
> the rest is installed correct.
>
>
> cheers Chris
>
>
> ############### librarys, data etc
> ---------------------------------------------
> library(rgrass7)
> library(sp)
>
> # setup a temp workingdir
> working.dir<- "~/tmp/"
>
> # get meuse data
>
> data(meuse)
> data(meuse.grid)
>
> # georeference the meuse grid data
> coordinates(meuse.grid) <- ~x+y
> proj4string(meuse.grid) <- CRS("+init=epsg:28992")
> gridded(meuse.grid) <- TRUE
>
> # get a first cellsize/pixel resolution for GRASS
> resolution <- meuse.grid@grid@cellsize[1]
>
> # georeference the meuse data
> coordinates(meuse) <- ~x+y
> proj4string(meuse) <- CRS("+init=epsg:28992")
>
> # get projection, proj4 string and extent for GRASS
> projection<-(strsplit(meuse@proj4string@projargs,split = " "))
> proj4<- paste(projection[[1]][2:length(unlist(projection))], collapse
> = ' ')
> xmax<-meuse@bbox[3]
> xmin<-meuse@bbox[1]
> ymax<-meuse@bbox[4]
> ymin<-meuse@bbox[2]
>
> # create and set working directory
> if (!file.exists(file.path(working.dir,"run"))){
>   dir.create(file.path(working.dir,"run"),recursive = TRUE)
> }
> setwd(file.path( working.dir,"run"))
>
>
> ########### SETUP OSGEO4W enviroment settings manually
> -------------------------
> # setup the OSGEO4W environ manually
> # assuming a osgeow4w default "deskop fastinstall
> # using the default installation directory "C:\OSGeo4W64"
>
> # set OSGE4W base directory
> osgeo4w.root<-"C:\\OSGEO4~1"
> Sys.setenv(OSGEO4W_ROOT=osgeo4w.root)
> # define GISBASE
> grass.gis.base<-paste0(osgeo4w.root,"\\apps\\grass\\grass-7.0.5")
> Sys.setenv(GISBASE=grass.gis.base)
>
> Sys.setenv(GRASS_PYTHON=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\bin\\python.exe"))
>
> Sys.setenv(PYTHONHOME=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\apps\\Python27"))
>
> Sys.setenv(PYTHONPATH=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\apps\\grass\\grass-7.0.5\\etc\\python"))
>
> Sys.setenv(GRASS_PROJSHARE=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\share\\proj"))
>
> Sys.setenv(PROJ_LIB=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\share\\proj"))
> Sys.setenv(GDAL_DATA=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\share\\gdal"))
> Sys.setenv(GEOTIFF_CSV=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\share\\epsg_csv"))
>
> Sys.setenv(FONTCONFIG_FILE=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\etc\\fonts.conf"))
>
>
> # call all OSGEO4W settings
> system("C:/OSGeo4W64/bin/o-help.bat")
>
>
> # create PATH variable
> Sys.setenv(PATH=paste0(grass.gis.base,";",
> "C:\\OSGEO4~1\\apps\\Python27\\lib\\site-packages\\numpy\\core",";",
> "C:\\OSGeo4W64\\apps\\grass\\grass-7.0.5\\bin",";",
> "C:\\OSGeo4W64\\apps\\grass\\grass-7.0.5\\lib",";",
> "C:\\OSGeo4W64\\apps\\grass\\grass-7.0.5\\etc",";",
> "C:\\OSGeo4W64\\apps\\grass\\grass-7.0.5\\etc\\python",";",
> "C:\\OSGeo4W64\\apps\\Python27\\Scripts",";",
>                        "C:\\OSGeo4W64\\bin",";",
>                        "c:\\OSGeo4W64\\apps",";",
>                        "C:\\OSGEO4~1\\apps\\saga",";",
>                        paste0(Sys.getenv("WINDIR"),"/WBem"),";",
>                        Sys.getenv("PATH")))
>
>
> #################### start with GRASS setup
> ------------------------------------
> rgrass7::initGRASS(gisBase=grass.gis.base,
>                    home=tempdir(),
>                    mapset='PERMANENT',
>                    override=TRUE
> )
>
> # assign GRASS projection according to data set
> rgrass7::execGRASS('g.proj',
>                    flags=c('c','quiet'),
>                    proj4=proj4
> )
>
> # assign GRASS extent and resolution
> rgrass7::execGRASS('g.region',
>                    flags=c('quiet'),
>                    n=as.character(ymax),
>                    s=as.character(ymin),
>                    e=as.character(xmax),
>                    w=as.character(xmin),
>                    res=as.character(resolution)
> )
>
>
> #############   now do GRASS STUFF
> ---------------------------------------------
>
> rgrass7::writeVECT(meuse,"meuse")
> rgrass7::execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2
> double
>                    precision")
> #############  do other command line stuff
> -------------------------------------
>
> ## call gdal
> system("gdal_merge")
>
> # call saga cli
> system("saga_cmd")
>
>
> Am 23.11.2016 um 07:38 schrieb Michael DELORME:
>> Thanks for your insight.
>> I'll use a stand-alone GRASS install.
>>
>> Cordially
>>
>> Le 22/11/2016 15:13, Roger Bivand a écrit :
>>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>>
>>>> Thanks for investigating.
>>>>
>>>> I'll try a standalone version of GRASS if needed.
>>>>
>>>> Here is the traceback
>>>>
>>>>> traceback()
>>>> 4: stop(paste(cmd, "not parsed"))
>>>> 3: parseGRASS(cmd, legacyExec = legacyExec)
>>>> 2: doGRASS(cmd, flags = flags, ..., parameters = parameters, echoCmd =
>>>> echoCmd, legacyExec = legacyExec)
>>>> 1: execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2
>>>> double
>>>> precision")
>>>>
>>>> My C:\OSGeo4W64\apps\grass\grass-7.0.5\bin lists *.exe or *.bat and
>>>> indeed the *.bat command are those which don't work (r.mask.bat,
>>>> v.db.addcolumn.bat,...). The batch calls Python scripts ; for example
>>>> v.db.addcolumn.bat is :
>>>>
>>>> @"%GRASS_PYTHON%" "%GISBASE%/scripts/v.db.addcolumn.py" %*
>>>>
>>>> So I guess something must be wrong in my Python installation... (it
>>>> works however from within a GRASS shell)
>>> No, the logic for Windows and initGRASS has only ever been tested with
>>> stand-alone GRASS. I would guess that in OSGeo4W the path variables
>>> are wrong. I cannot even find out how to run initGRASS in R but
>>> outside the OSGeo4W shell (doesn't find iconv.dll) or inside the
>>> OSGeo4W shell (cannot create a temporary GRASS location). Unless you
>>> or others really need OSGeo4W, I suggest asking others to implement
>>> that - very bulky and fragile.
>>>
>>> Roger
>>>
>>>> Cordially
>>>>
>>>>
>>>> Le 22/11/2016 14:30, Roger Bivand a écrit :
>>>>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>>>>
>>>>>> Thanks for replying
>>>>>>
>>>>>> Here is a reproducible example (change your GRASS directory of
>>>>>> course) :
>>>>>>
>>>>>> library(rgrass7)
>>>>>> library(sp)
>>>>>> initGRASS("C:/OSGeo4W64/apps/grass/grass-7.0.5", home = tempdir(),
>>>>>> override = TRUE)
>>>>>> data(meuse)
>>>>>> coordinates(meuse) <- ~x+y
>>>>>> writeVECT(meuse, "meuse")
>>>>>> execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2 double
>>>>>> precision")
>>>>> This appears to run correctly on Windows 7 with GRASS 7.0.5 Windows
>>>>> stand-alone. Do you need to use OSGeo4W - the internal logic used for
>>>>> finding out where the different versions keep their executables and
>>>>> batch files varies?
>>>>>
>>>>> What does traceback() say after the error? The error comes from
>>>>> parseGRASS("v.db.addcolumn") - the XML error comes from not being
>>>>> able
>>>>> to read the output of v.db.addcolumn<.ext> --interface-description
>>>>> where <.ext> may be .exe or .bat I think.
>>>>>
>>>>> Roger
>>>>>
>>>>>> I get :
>>>>>> Error : XML content does not seem to be XML: 'The specified path
>>>>>> was not
>>>>>> found.'
>>>>>> In addition: Warning message:
>>>>>> running command 'v.db.addcolumn.bat --interface-description' had
>>>>>> status 1
>>>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) :
>>>>>>   v.db.addcolumn not parsed
>>>>>>
>>>>>> Other execGRASS commands (like r.neighbors, r.mapcalc,..)  work
>>>>>> fine,
>>>>>> but some other (r.mask) fail with a similar XML error.
>>>>>>
>>>>>> All commands work fine when used from the GRASS shell...
>>>>>>
>>>>>> What is this XML error ?
>>>>>> Thanks
>>>>>>
>>>>>> Le 22/11/2016 09:34, Roger Bivand a écrit :
>>>>>>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>>>>>>
>>>>>>>> Dear list,
>>>>>>>>
>>>>>>>> Using rgrass7 on Windows7 with GRASS 7.0.5 (OSGeo distribution),
>>>>>>>> I get
>>>>>>>> the following error :
>>>>>>> Please always try to provide a reproducible example using a
>>>>>>> standard
>>>>>>> data set. In addition, the output of traceback() following the
>>>>>>> error
>>>>>>> would be helpful. Are you running R inside GRASS, or using R to
>>>>>>> initiate GRASS?
>>>>>>>
>>>>>>> Consider using the grass-stats list:
>>>>>>>
>>>>>>> https://lists.osgeo.org/mailman/listinfo/grass-stats
>>>>>>>
>>>>>>> as it is more likely to yield results, but there also provide an
>>>>>>> example that anyone can reproduce. The example should avoid loading
>>>>>>> other packages, and should be run from the R console (not, say,
>>>>>>> RStudio).
>>>>>>>
>>>>>>> Roger
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>>> execGRASS("v.db.addcolumn", map = "result_v", columns = "area_m2
>>>>>>>>> double precision")
>>>>>>>> Error : XML content does not seem to be XML: 'Le chemin d'accés
>>>>>>>> spécifié est introuvable.' In addition: Warning message: running
>>>>>>>> command 'v.db.addcolumn.bat --interface-description' had status 1
>>>>>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) :
>>>>>>>>   v.db.addcolumn not parsed
>>>>>>>>
>>>>>>>>
>>>>>>>> and a similar one for r.mask :
>>>>>>>>
>>>>>>>>> execGRASS("r.mask", raster = "map")
>>>>>>>> Error : XML content does not seem to be XML: 'Le chemin d'accés
>>>>>>>> spécifié est introuvable.'
>>>>>>>> In addition: Warning message:
>>>>>>>> running command 'r.mask.bat --interface-description' had status 1
>>>>>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) : r.mask not
>>>>>>>> parsed
>>>>>>>>
>>>>>>>>
>>>>>>>> whereas most other execGRASS command I tried work as expected.
>>>>>>>> Any idea ?
>>>>>>>> Thanks in advance
>>>>>>>>
>>>>>>>> Here is my session info :
>>>>>>>>
>>>>>>>>> sessionInfo()
>>>>>>>> R version 3.3.1 (2016-06-21)
>>>>>>>> Platform: x86_64-w64-mingw32/x64 (64-bit)
>>>>>>>> Running under: Windows 7 x64 (build 7601) Service Pack 1
>>>>>>>>
>>>>>>>> locale:
>>>>>>>> [1] LC_COLLATE=French_France.1252  LC_CTYPE=French_France.1252
>>>>>>>> LC_MONETARY=French_France.1252 LC_NUMERIC=C [5]
>>>>>>>> LC_TIME=French_France.1252
>>>>>>>> attached base packages:
>>>>>>>> [1] parallel  stats     graphics  grDevices utils     datasets
>>>>>>>> methods   base
>>>>>>>> other attached packages: [1] rgrass7_0.1-9 XML_3.98-1.4 beepr_1.2
>>>>>>>> raster_2.5-8 sp_1.2-3 RPostgreSQL_0.4-1 DBI_0.5-1
>>>>>>>>
>>>>>>>> loaded via a namespace (and not attached): [1] magrittr_1.5
>>>>>>>> tools_3.3.1 audio_0.1-5 Rcpp_0.12.7 stringi_1.1.2 grid_3.3.1
>>>>>>>> stringr_1.1.0 lattice_0.20-34 [9] fortunes_1.5-3
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>      [[alternative HTML version deleted]]
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> R-sig-Geo mailing list
>>>>>>>> [hidden email]
>>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>>>> --
>>>>>> *Michaël DELORME*
>>>>>> Administrateur de données, chargé de projet en géomatique
>>>>>> Service régional de l'information statistique, économique et
>>>>>> territoriale
>>>>>> Direction régionale de l'alimentation, de l'agriculture et de la
>>>>>> forêt
>>>>>> Auvergne-Rhône-Alpes
>>>>>> Site de Lyon
>>>>>> 165 rue Garibaldi – BP 3202 – 69401 LYON cedex 03
>>>>>> 04 78 63 34 21
>>>>>>
>>>>>> Pour écrire au service :
>>>>>> DRAAF Auvergne-Rhône-Alpes – SRISET
>>>>>> 16B rue Aimé Rudel – BP 45 – 63370 LEMPDES
>>>>>>
>>>>>> http://www.draaf.auvergne-rhone-alpes.agriculture.gouv.fr/
>>>>>>
>>>>>>      [[alternative HTML version deleted]]
>>>>>>
>>>>>> _______________________________________________
>>>>>> R-sig-Geo mailing list
>>>>>> [hidden email]
>>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>>
>>>>
>> _______________________________________________
>> R-sig-Geo mailing list
>> [hidden email]
>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>
>
> _______________________________________________
> R-sig-Geo mailing list
> [hidden email]
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo

--
*Michaël DELORME*
Administrateur de données, chargé de projet en géomatique
Service régional de l'information statistique, économique et territoriale
Direction régionale de l'alimentation, de l'agriculture et de la forêt
Auvergne-Rhône-Alpes
Site de Lyon
165 rue Garibaldi – BP 3202 – 69401 LYON cedex 03
04 78 63 34 21

Pour écrire au service :
DRAAF Auvergne-Rhône-Alpes – SRISET
16B rue Aimé Rudel – BP 45 – 63370 LEMPDES

http://www.draaf.auvergne-rhone-alpes.agriculture.gouv.fr/

        [[alternative HTML version deleted]]

_______________________________________________
R-sig-Geo mailing list
[hidden email]
https://stat.ethz.ch/mailman/listinfo/r-sig-geo
Reply | Threaded
Open this post in threaded view
|

Re: rgrass7 : Error in parseGRASS

Roger Bivand
Administrator
On Thu, 24 Nov 2016, Michael DELORME wrote:

> That's great Chris, it works fine as is !
> Thank you, I don't have to keep another GRASS install aside then.

Thanks for confirming this. I'll try to set up a test rig to allow
initGRASS to set up the environment variables when using GRASS in OSGeo4W
for a later release.

Roger

>
> I'm sure it will be helpful to other people also.
> Thanks again
>
> Le 24/11/2016 09:17, Chris Reudenbach a écrit :
>> Michael,
>>
>> Using a fresh OSGEO4W64 standard quick desktop installation (i.e.
>> installation of the default desktop GIS software packages with the
>> installer and using C:\OSGeo4W64 as path)  I suggest the below solution.
>>
>> You have to set all necessary eniromental and system variables
>> manually. I am not quit sure if I got them but actually it seems to
>> work for your question. As a conclusion I think your Python and all of
>> the rest is installed correct.
>>
>>
>> cheers Chris
>>
>>
>> ############### librarys, data etc
>> ---------------------------------------------
>> library(rgrass7)
>> library(sp)
>>
>> # setup a temp workingdir
>> working.dir<- "~/tmp/"
>>
>> # get meuse data
>>
>> data(meuse)
>> data(meuse.grid)
>>
>> # georeference the meuse grid data
>> coordinates(meuse.grid) <- ~x+y
>> proj4string(meuse.grid) <- CRS("+init=epsg:28992")
>> gridded(meuse.grid) <- TRUE
>>
>> # get a first cellsize/pixel resolution for GRASS
>> resolution <- meuse.grid@grid@cellsize[1]
>>
>> # georeference the meuse data
>> coordinates(meuse) <- ~x+y
>> proj4string(meuse) <- CRS("+init=epsg:28992")
>>
>> # get projection, proj4 string and extent for GRASS
>> projection<-(strsplit(meuse@proj4string@projargs,split = " "))
>> proj4<- paste(projection[[1]][2:length(unlist(projection))], collapse
>> = ' ')
>> xmax<-meuse@bbox[3]
>> xmin<-meuse@bbox[1]
>> ymax<-meuse@bbox[4]
>> ymin<-meuse@bbox[2]
>>
>> # create and set working directory
>> if (!file.exists(file.path(working.dir,"run"))){
>>   dir.create(file.path(working.dir,"run"),recursive = TRUE)
>> }
>> setwd(file.path( working.dir,"run"))
>>
>>
>> ########### SETUP OSGEO4W enviroment settings manually
>> -------------------------
>> # setup the OSGEO4W environ manually
>> # assuming a osgeow4w default "deskop fastinstall
>> # using the default installation directory "C:\OSGeo4W64"
>>
>> # set OSGE4W base directory
>> osgeo4w.root<-"C:\\OSGEO4~1"
>> Sys.setenv(OSGEO4W_ROOT=osgeo4w.root)
>> # define GISBASE
>> grass.gis.base<-paste0(osgeo4w.root,"\\apps\\grass\\grass-7.0.5")
>> Sys.setenv(GISBASE=grass.gis.base)
>>
>> Sys.setenv(GRASS_PYTHON=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\bin\\python.exe"))
>>
>> Sys.setenv(PYTHONHOME=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\apps\\Python27"))
>>
>> Sys.setenv(PYTHONPATH=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\apps\\grass\\grass-7.0.5\\etc\\python"))
>>
>> Sys.setenv(GRASS_PROJSHARE=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\share\\proj"))
>>
>> Sys.setenv(PROJ_LIB=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\share\\proj"))
>> Sys.setenv(GDAL_DATA=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\share\\gdal"))
>> Sys.setenv(GEOTIFF_CSV=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\share\\epsg_csv"))
>>
>> Sys.setenv(FONTCONFIG_FILE=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\etc\\fonts.conf"))
>>
>>
>> # call all OSGEO4W settings
>> system("C:/OSGeo4W64/bin/o-help.bat")
>>
>>
>> # create PATH variable
>> Sys.setenv(PATH=paste0(grass.gis.base,";",
>> "C:\\OSGEO4~1\\apps\\Python27\\lib\\site-packages\\numpy\\core",";",
>> "C:\\OSGeo4W64\\apps\\grass\\grass-7.0.5\\bin",";",
>> "C:\\OSGeo4W64\\apps\\grass\\grass-7.0.5\\lib",";",
>> "C:\\OSGeo4W64\\apps\\grass\\grass-7.0.5\\etc",";",
>> "C:\\OSGeo4W64\\apps\\grass\\grass-7.0.5\\etc\\python",";",
>> "C:\\OSGeo4W64\\apps\\Python27\\Scripts",";",
>>                        "C:\\OSGeo4W64\\bin",";",
>>                        "c:\\OSGeo4W64\\apps",";",
>>                        "C:\\OSGEO4~1\\apps\\saga",";",
>>                        paste0(Sys.getenv("WINDIR"),"/WBem"),";",
>>                        Sys.getenv("PATH")))
>>
>>
>> #################### start with GRASS setup
>> ------------------------------------
>> rgrass7::initGRASS(gisBase=grass.gis.base,
>>                    home=tempdir(),
>>                    mapset='PERMANENT',
>>                    override=TRUE
>> )
>>
>> # assign GRASS projection according to data set
>> rgrass7::execGRASS('g.proj',
>>                    flags=c('c','quiet'),
>>                    proj4=proj4
>> )
>>
>> # assign GRASS extent and resolution
>> rgrass7::execGRASS('g.region',
>>                    flags=c('quiet'),
>>                    n=as.character(ymax),
>>                    s=as.character(ymin),
>>                    e=as.character(xmax),
>>                    w=as.character(xmin),
>>                    res=as.character(resolution)
>> )
>>
>>
>> #############   now do GRASS STUFF
>> ---------------------------------------------
>>
>> rgrass7::writeVECT(meuse,"meuse")
>> rgrass7::execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2
>> double
>>                    precision")
>> #############  do other command line stuff
>> -------------------------------------
>>
>> ## call gdal
>> system("gdal_merge")
>>
>> # call saga cli
>> system("saga_cmd")
>>
>>
>> Am 23.11.2016 um 07:38 schrieb Michael DELORME:
>>> Thanks for your insight.
>>> I'll use a stand-alone GRASS install.
>>>
>>> Cordially
>>>
>>> Le 22/11/2016 15:13, Roger Bivand a écrit :
>>>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>>>
>>>>> Thanks for investigating.
>>>>>
>>>>> I'll try a standalone version of GRASS if needed.
>>>>>
>>>>> Here is the traceback
>>>>>
>>>>>> traceback()
>>>>> 4: stop(paste(cmd, "not parsed"))
>>>>> 3: parseGRASS(cmd, legacyExec = legacyExec)
>>>>> 2: doGRASS(cmd, flags = flags, ..., parameters = parameters, echoCmd =
>>>>> echoCmd, legacyExec = legacyExec)
>>>>> 1: execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2
>>>>> double
>>>>> precision")
>>>>>
>>>>> My C:\OSGeo4W64\apps\grass\grass-7.0.5\bin lists *.exe or *.bat and
>>>>> indeed the *.bat command are those which don't work (r.mask.bat,
>>>>> v.db.addcolumn.bat,...). The batch calls Python scripts ; for example
>>>>> v.db.addcolumn.bat is :
>>>>>
>>>>> @"%GRASS_PYTHON%" "%GISBASE%/scripts/v.db.addcolumn.py" %*
>>>>>
>>>>> So I guess something must be wrong in my Python installation... (it
>>>>> works however from within a GRASS shell)
>>>> No, the logic for Windows and initGRASS has only ever been tested with
>>>> stand-alone GRASS. I would guess that in OSGeo4W the path variables
>>>> are wrong. I cannot even find out how to run initGRASS in R but
>>>> outside the OSGeo4W shell (doesn't find iconv.dll) or inside the
>>>> OSGeo4W shell (cannot create a temporary GRASS location). Unless you
>>>> or others really need OSGeo4W, I suggest asking others to implement
>>>> that - very bulky and fragile.
>>>>
>>>> Roger
>>>>
>>>>> Cordially
>>>>>
>>>>>
>>>>> Le 22/11/2016 14:30, Roger Bivand a écrit :
>>>>>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>>>>>
>>>>>>> Thanks for replying
>>>>>>>
>>>>>>> Here is a reproducible example (change your GRASS directory of
>>>>>>> course) :
>>>>>>>
>>>>>>> library(rgrass7)
>>>>>>> library(sp)
>>>>>>> initGRASS("C:/OSGeo4W64/apps/grass/grass-7.0.5", home = tempdir(),
>>>>>>> override = TRUE)
>>>>>>> data(meuse)
>>>>>>> coordinates(meuse) <- ~x+y
>>>>>>> writeVECT(meuse, "meuse")
>>>>>>> execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2 double
>>>>>>> precision")
>>>>>> This appears to run correctly on Windows 7 with GRASS 7.0.5 Windows
>>>>>> stand-alone. Do you need to use OSGeo4W - the internal logic used for
>>>>>> finding out where the different versions keep their executables and
>>>>>> batch files varies?
>>>>>>
>>>>>> What does traceback() say after the error? The error comes from
>>>>>> parseGRASS("v.db.addcolumn") - the XML error comes from not being
>>>>>> able
>>>>>> to read the output of v.db.addcolumn<.ext> --interface-description
>>>>>> where <.ext> may be .exe or .bat I think.
>>>>>>
>>>>>> Roger
>>>>>>
>>>>>>> I get :
>>>>>>> Error : XML content does not seem to be XML: 'The specified path
>>>>>>> was not
>>>>>>> found.'
>>>>>>> In addition: Warning message:
>>>>>>> running command 'v.db.addcolumn.bat --interface-description' had
>>>>>>> status 1
>>>>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) :
>>>>>>>   v.db.addcolumn not parsed
>>>>>>>
>>>>>>> Other execGRASS commands (like r.neighbors, r.mapcalc,..)  work
>>>>>>> fine,
>>>>>>> but some other (r.mask) fail with a similar XML error.
>>>>>>>
>>>>>>> All commands work fine when used from the GRASS shell...
>>>>>>>
>>>>>>> What is this XML error ?
>>>>>>> Thanks
>>>>>>>
>>>>>>> Le 22/11/2016 09:34, Roger Bivand a écrit :
>>>>>>>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>>>>>>>
>>>>>>>>> Dear list,
>>>>>>>>>
>>>>>>>>> Using rgrass7 on Windows7 with GRASS 7.0.5 (OSGeo distribution),
>>>>>>>>> I get
>>>>>>>>> the following error :
>>>>>>>> Please always try to provide a reproducible example using a
>>>>>>>> standard
>>>>>>>> data set. In addition, the output of traceback() following the
>>>>>>>> error
>>>>>>>> would be helpful. Are you running R inside GRASS, or using R to
>>>>>>>> initiate GRASS?
>>>>>>>>
>>>>>>>> Consider using the grass-stats list:
>>>>>>>>
>>>>>>>> https://lists.osgeo.org/mailman/listinfo/grass-stats
>>>>>>>>
>>>>>>>> as it is more likely to yield results, but there also provide an
>>>>>>>> example that anyone can reproduce. The example should avoid loading
>>>>>>>> other packages, and should be run from the R console (not, say,
>>>>>>>> RStudio).
>>>>>>>>
>>>>>>>> Roger
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>>> execGRASS("v.db.addcolumn", map = "result_v", columns = "area_m2
>>>>>>>>>> double precision")
>>>>>>>>> Error : XML content does not seem to be XML: 'Le chemin d'accés
>>>>>>>>> spécifié est introuvable.' In addition: Warning message: running
>>>>>>>>> command 'v.db.addcolumn.bat --interface-description' had status 1
>>>>>>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) :
>>>>>>>>>   v.db.addcolumn not parsed
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> and a similar one for r.mask :
>>>>>>>>>
>>>>>>>>>> execGRASS("r.mask", raster = "map")
>>>>>>>>> Error : XML content does not seem to be XML: 'Le chemin d'accés
>>>>>>>>> spécifié est introuvable.'
>>>>>>>>> In addition: Warning message:
>>>>>>>>> running command 'r.mask.bat --interface-description' had status 1
>>>>>>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) : r.mask not
>>>>>>>>> parsed
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> whereas most other execGRASS command I tried work as expected.
>>>>>>>>> Any idea ?
>>>>>>>>> Thanks in advance
>>>>>>>>>
>>>>>>>>> Here is my session info :
>>>>>>>>>
>>>>>>>>>> sessionInfo()
>>>>>>>>> R version 3.3.1 (2016-06-21)
>>>>>>>>> Platform: x86_64-w64-mingw32/x64 (64-bit)
>>>>>>>>> Running under: Windows 7 x64 (build 7601) Service Pack 1
>>>>>>>>>
>>>>>>>>> locale:
>>>>>>>>> [1] LC_COLLATE=French_France.1252  LC_CTYPE=French_France.1252
>>>>>>>>> LC_MONETARY=French_France.1252 LC_NUMERIC=C [5]
>>>>>>>>> LC_TIME=French_France.1252
>>>>>>>>> attached base packages:
>>>>>>>>> [1] parallel  stats     graphics  grDevices utils     datasets
>>>>>>>>> methods   base
>>>>>>>>> other attached packages: [1] rgrass7_0.1-9 XML_3.98-1.4 beepr_1.2
>>>>>>>>> raster_2.5-8 sp_1.2-3 RPostgreSQL_0.4-1 DBI_0.5-1
>>>>>>>>>
>>>>>>>>> loaded via a namespace (and not attached): [1] magrittr_1.5
>>>>>>>>> tools_3.3.1 audio_0.1-5 Rcpp_0.12.7 stringi_1.1.2 grid_3.3.1
>>>>>>>>> stringr_1.1.0 lattice_0.20-34 [9] fortunes_1.5-3
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>      [[alternative HTML version deleted]]
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> R-sig-Geo mailing list
>>>>>>>>> [hidden email]
>>>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>>>>> --
>>>>>>> *Michaël DELORME*
>>>>>>> Administrateur de données, chargé de projet en géomatique
>>>>>>> Service régional de l'information statistique, économique et
>>>>>>> territoriale
>>>>>>> Direction régionale de l'alimentation, de l'agriculture et de la
>>>>>>> forêt
>>>>>>> Auvergne-Rhône-Alpes
>>>>>>> Site de Lyon
>>>>>>> 165 rue Garibaldi – BP 3202 – 69401 LYON cedex 03
>>>>>>> 04 78 63 34 21
>>>>>>>
>>>>>>> Pour écrire au service :
>>>>>>> DRAAF Auvergne-Rhône-Alpes – SRISET
>>>>>>> 16B rue Aimé Rudel – BP 45 – 63370 LEMPDES
>>>>>>>
>>>>>>> http://www.draaf.auvergne-rhone-alpes.agriculture.gouv.fr/
>>>>>>>
>>>>>>>      [[alternative HTML version deleted]]
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> R-sig-Geo mailing list
>>>>>>> [hidden email]
>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>>>
>>>>>
>>> _______________________________________________
>>> R-sig-Geo mailing list
>>> [hidden email]
>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>
>>
>> _______________________________________________
>> R-sig-Geo mailing list
>> [hidden email]
>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>
> --
> *Michaël DELORME*
> Administrateur de données, chargé de projet en géomatique
> Service régional de l'information statistique, économique et territoriale
> Direction régionale de l'alimentation, de l'agriculture et de la forêt
> Auvergne-Rhône-Alpes
> Site de Lyon
> 165 rue Garibaldi – BP 3202 – 69401 LYON cedex 03
> 04 78 63 34 21
>
> Pour écrire au service :
> DRAAF Auvergne-Rhône-Alpes – SRISET
> 16B rue Aimé Rudel – BP 45 – 63370 LEMPDES
>
> http://www.draaf.auvergne-rhone-alpes.agriculture.gouv.fr/
>
> [[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-Geo mailing list
> [hidden email]
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
--
Roger Bivand
Department of Economics, Norwegian School of Economics,
Helleveien 30, N-5045 Bergen, Norway.
voice: +47 55 95 93 55; fax +47 55 95 91 00
e-mail: [hidden email]
http://orcid.org/0000-0003-2392-6140
https://scholar.google.no/citations?user=AWeghB0AAAAJ&hl=en
http://depsy.org/person/434412
_______________________________________________
R-sig-Geo mailing list
[hidden email]
https://stat.ethz.ch/mailman/listinfo/r-sig-geo
Roger Bivand
Department of Economics
Norwegian School of Economics
Helleveien 30
N-5045 Bergen, Norway
Reply | Threaded
Open this post in threaded view
|

Re: rgrass7 : Error in parseGRASS

Michael DELORME
Let me use this opportunity to thank you for all the tools,
documentation and support you provide. This makes R a very useful tool
for us.

Cordially

Le 24/11/2016 10:48, Roger Bivand a écrit :

> On Thu, 24 Nov 2016, Michael DELORME wrote:
>
>> That's great Chris, it works fine as is !
>> Thank you, I don't have to keep another GRASS install aside then.
>
> Thanks for confirming this. I'll try to set up a test rig to allow
> initGRASS to set up the environment variables when using GRASS in
> OSGeo4W for a later release.
>
> Roger
>
>>
>> I'm sure it will be helpful to other people also.
>> Thanks again
>>
>> Le 24/11/2016 09:17, Chris Reudenbach a écrit :
>>> Michael,
>>>
>>> Using a fresh OSGEO4W64 standard quick desktop installation (i.e.
>>> installation of the default desktop GIS software packages with the
>>> installer and using C:\OSGeo4W64 as path)  I suggest the below
>>> solution.
>>>
>>> You have to set all necessary eniromental and system variables
>>> manually. I am not quit sure if I got them but actually it seems to
>>> work for your question. As a conclusion I think your Python and all of
>>> the rest is installed correct.
>>>
>>>
>>> cheers Chris
>>>
>>>
>>> ############### librarys, data etc
>>> ---------------------------------------------
>>> library(rgrass7)
>>> library(sp)
>>>
>>> # setup a temp workingdir
>>> working.dir<- "~/tmp/"
>>>
>>> # get meuse data
>>>
>>> data(meuse)
>>> data(meuse.grid)
>>>
>>> # georeference the meuse grid data
>>> coordinates(meuse.grid) <- ~x+y
>>> proj4string(meuse.grid) <- CRS("+init=epsg:28992")
>>> gridded(meuse.grid) <- TRUE
>>>
>>> # get a first cellsize/pixel resolution for GRASS
>>> resolution <- meuse.grid@grid@cellsize[1]
>>>
>>> # georeference the meuse data
>>> coordinates(meuse) <- ~x+y
>>> proj4string(meuse) <- CRS("+init=epsg:28992")
>>>
>>> # get projection, proj4 string and extent for GRASS
>>> projection<-(strsplit(meuse@proj4string@projargs,split = " "))
>>> proj4<- paste(projection[[1]][2:length(unlist(projection))], collapse
>>> = ' ')
>>> xmax<-meuse@bbox[3]
>>> xmin<-meuse@bbox[1]
>>> ymax<-meuse@bbox[4]
>>> ymin<-meuse@bbox[2]
>>>
>>> # create and set working directory
>>> if (!file.exists(file.path(working.dir,"run"))){
>>>   dir.create(file.path(working.dir,"run"),recursive = TRUE)
>>> }
>>> setwd(file.path( working.dir,"run"))
>>>
>>>
>>> ########### SETUP OSGEO4W enviroment settings manually
>>> -------------------------
>>> # setup the OSGEO4W environ manually
>>> # assuming a osgeow4w default "deskop fastinstall
>>> # using the default installation directory "C:\OSGeo4W64"
>>>
>>> # set OSGE4W base directory
>>> osgeo4w.root<-"C:\\OSGEO4~1"
>>> Sys.setenv(OSGEO4W_ROOT=osgeo4w.root)
>>> # define GISBASE
>>> grass.gis.base<-paste0(osgeo4w.root,"\\apps\\grass\\grass-7.0.5")
>>> Sys.setenv(GISBASE=grass.gis.base)
>>>
>>> Sys.setenv(GRASS_PYTHON=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\bin\\python.exe"))
>>>
>>>
>>> Sys.setenv(PYTHONHOME=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\apps\\Python27"))
>>>
>>>
>>> Sys.setenv(PYTHONPATH=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\apps\\grass\\grass-7.0.5\\etc\\python"))
>>>
>>>
>>> Sys.setenv(GRASS_PROJSHARE=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\share\\proj"))
>>>
>>>
>>> Sys.setenv(PROJ_LIB=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\share\\proj"))
>>> Sys.setenv(GDAL_DATA=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\share\\gdal"))
>>>
>>> Sys.setenv(GEOTIFF_CSV=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\share\\epsg_csv"))
>>>
>>>
>>> Sys.setenv(FONTCONFIG_FILE=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\etc\\fonts.conf"))
>>>
>>>
>>>
>>> # call all OSGEO4W settings
>>> system("C:/OSGeo4W64/bin/o-help.bat")
>>>
>>>
>>> # create PATH variable
>>> Sys.setenv(PATH=paste0(grass.gis.base,";",
>>> "C:\\OSGEO4~1\\apps\\Python27\\lib\\site-packages\\numpy\\core",";",
>>> "C:\\OSGeo4W64\\apps\\grass\\grass-7.0.5\\bin",";",
>>> "C:\\OSGeo4W64\\apps\\grass\\grass-7.0.5\\lib",";",
>>> "C:\\OSGeo4W64\\apps\\grass\\grass-7.0.5\\etc",";",
>>> "C:\\OSGeo4W64\\apps\\grass\\grass-7.0.5\\etc\\python",";",
>>> "C:\\OSGeo4W64\\apps\\Python27\\Scripts",";",
>>>                        "C:\\OSGeo4W64\\bin",";",
>>>                        "c:\\OSGeo4W64\\apps",";",
>>>                        "C:\\OSGEO4~1\\apps\\saga",";",
>>>                        paste0(Sys.getenv("WINDIR"),"/WBem"),";",
>>>                        Sys.getenv("PATH")))
>>>
>>>
>>> #################### start with GRASS setup
>>> ------------------------------------
>>> rgrass7::initGRASS(gisBase=grass.gis.base,
>>>                    home=tempdir(),
>>>                    mapset='PERMANENT',
>>>                    override=TRUE
>>> )
>>>
>>> # assign GRASS projection according to data set
>>> rgrass7::execGRASS('g.proj',
>>>                    flags=c('c','quiet'),
>>>                    proj4=proj4
>>> )
>>>
>>> # assign GRASS extent and resolution
>>> rgrass7::execGRASS('g.region',
>>>                    flags=c('quiet'),
>>>                    n=as.character(ymax),
>>>                    s=as.character(ymin),
>>>                    e=as.character(xmax),
>>>                    w=as.character(xmin),
>>>                    res=as.character(resolution)
>>> )
>>>
>>>
>>> #############   now do GRASS STUFF
>>> ---------------------------------------------
>>>
>>> rgrass7::writeVECT(meuse,"meuse")
>>> rgrass7::execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2
>>> double
>>>                    precision")
>>> #############  do other command line stuff
>>> -------------------------------------
>>>
>>> ## call gdal
>>> system("gdal_merge")
>>>
>>> # call saga cli
>>> system("saga_cmd")
>>>
>>>
>>> Am 23.11.2016 um 07:38 schrieb Michael DELORME:
>>>> Thanks for your insight.
>>>> I'll use a stand-alone GRASS install.
>>>>
>>>> Cordially
>>>>
>>>> Le 22/11/2016 15:13, Roger Bivand a écrit :
>>>>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>>>>
>>>>>> Thanks for investigating.
>>>>>>
>>>>>> I'll try a standalone version of GRASS if needed.
>>>>>>
>>>>>> Here is the traceback
>>>>>>
>>>>>>> traceback()
>>>>>> 4: stop(paste(cmd, "not parsed"))
>>>>>> 3: parseGRASS(cmd, legacyExec = legacyExec)
>>>>>> 2: doGRASS(cmd, flags = flags, ..., parameters = parameters,
>>>>>> echoCmd =
>>>>>> echoCmd, legacyExec = legacyExec)
>>>>>> 1: execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2
>>>>>> double
>>>>>> precision")
>>>>>>
>>>>>> My C:\OSGeo4W64\apps\grass\grass-7.0.5\bin lists *.exe or *.bat and
>>>>>> indeed the *.bat command are those which don't work (r.mask.bat,
>>>>>> v.db.addcolumn.bat,...). The batch calls Python scripts ; for
>>>>>> example
>>>>>> v.db.addcolumn.bat is :
>>>>>>
>>>>>> @"%GRASS_PYTHON%" "%GISBASE%/scripts/v.db.addcolumn.py" %*
>>>>>>
>>>>>> So I guess something must be wrong in my Python installation... (it
>>>>>> works however from within a GRASS shell)
>>>>> No, the logic for Windows and initGRASS has only ever been tested
>>>>> with
>>>>> stand-alone GRASS. I would guess that in OSGeo4W the path variables
>>>>> are wrong. I cannot even find out how to run initGRASS in R but
>>>>> outside the OSGeo4W shell (doesn't find iconv.dll) or inside the
>>>>> OSGeo4W shell (cannot create a temporary GRASS location). Unless you
>>>>> or others really need OSGeo4W, I suggest asking others to implement
>>>>> that - very bulky and fragile.
>>>>>
>>>>> Roger
>>>>>
>>>>>> Cordially
>>>>>>
>>>>>>
>>>>>> Le 22/11/2016 14:30, Roger Bivand a écrit :
>>>>>>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>>>>>>
>>>>>>>> Thanks for replying
>>>>>>>>
>>>>>>>> Here is a reproducible example (change your GRASS directory of
>>>>>>>> course) :
>>>>>>>>
>>>>>>>> library(rgrass7)
>>>>>>>> library(sp)
>>>>>>>> initGRASS("C:/OSGeo4W64/apps/grass/grass-7.0.5", home = tempdir(),
>>>>>>>> override = TRUE)
>>>>>>>> data(meuse)
>>>>>>>> coordinates(meuse) <- ~x+y
>>>>>>>> writeVECT(meuse, "meuse")
>>>>>>>> execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2
>>>>>>>> double
>>>>>>>> precision")
>>>>>>> This appears to run correctly on Windows 7 with GRASS 7.0.5 Windows
>>>>>>> stand-alone. Do you need to use OSGeo4W - the internal logic
>>>>>>> used for
>>>>>>> finding out where the different versions keep their executables and
>>>>>>> batch files varies?
>>>>>>>
>>>>>>> What does traceback() say after the error? The error comes from
>>>>>>> parseGRASS("v.db.addcolumn") - the XML error comes from not being
>>>>>>> able
>>>>>>> to read the output of v.db.addcolumn<.ext> --interface-description
>>>>>>> where <.ext> may be .exe or .bat I think.
>>>>>>>
>>>>>>> Roger
>>>>>>>
>>>>>>>> I get :
>>>>>>>> Error : XML content does not seem to be XML: 'The specified path
>>>>>>>> was not
>>>>>>>> found.'
>>>>>>>> In addition: Warning message:
>>>>>>>> running command 'v.db.addcolumn.bat --interface-description' had
>>>>>>>> status 1
>>>>>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) :
>>>>>>>>   v.db.addcolumn not parsed
>>>>>>>>
>>>>>>>> Other execGRASS commands (like r.neighbors, r.mapcalc,..)  work
>>>>>>>> fine,
>>>>>>>> but some other (r.mask) fail with a similar XML error.
>>>>>>>>
>>>>>>>> All commands work fine when used from the GRASS shell...
>>>>>>>>
>>>>>>>> What is this XML error ?
>>>>>>>> Thanks
>>>>>>>>
>>>>>>>> Le 22/11/2016 09:34, Roger Bivand a écrit :
>>>>>>>>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>>>>>>>>
>>>>>>>>>> Dear list,
>>>>>>>>>>
>>>>>>>>>> Using rgrass7 on Windows7 with GRASS 7.0.5 (OSGeo distribution),
>>>>>>>>>> I get
>>>>>>>>>> the following error :
>>>>>>>>> Please always try to provide a reproducible example using a
>>>>>>>>> standard
>>>>>>>>> data set. In addition, the output of traceback() following the
>>>>>>>>> error
>>>>>>>>> would be helpful. Are you running R inside GRASS, or using R to
>>>>>>>>> initiate GRASS?
>>>>>>>>>
>>>>>>>>> Consider using the grass-stats list:
>>>>>>>>>
>>>>>>>>> https://lists.osgeo.org/mailman/listinfo/grass-stats
>>>>>>>>>
>>>>>>>>> as it is more likely to yield results, but there also provide an
>>>>>>>>> example that anyone can reproduce. The example should avoid
>>>>>>>>> loading
>>>>>>>>> other packages, and should be run from the R console (not, say,
>>>>>>>>> RStudio).
>>>>>>>>>
>>>>>>>>> Roger
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>> execGRASS("v.db.addcolumn", map = "result_v", columns =
>>>>>>>>>>> "area_m2
>>>>>>>>>>> double precision")
>>>>>>>>>> Error : XML content does not seem to be XML: 'Le chemin d'accés
>>>>>>>>>> spécifié est introuvable.' In addition: Warning message: running
>>>>>>>>>> command 'v.db.addcolumn.bat --interface-description' had
>>>>>>>>>> status 1
>>>>>>>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) :
>>>>>>>>>>   v.db.addcolumn not parsed
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> and a similar one for r.mask :
>>>>>>>>>>
>>>>>>>>>>> execGRASS("r.mask", raster = "map")
>>>>>>>>>> Error : XML content does not seem to be XML: 'Le chemin d'accés
>>>>>>>>>> spécifié est introuvable.'
>>>>>>>>>> In addition: Warning message:
>>>>>>>>>> running command 'r.mask.bat --interface-description' had
>>>>>>>>>> status 1
>>>>>>>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) : r.mask not
>>>>>>>>>> parsed
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> whereas most other execGRASS command I tried work as expected.
>>>>>>>>>> Any idea ?
>>>>>>>>>> Thanks in advance
>>>>>>>>>>
>>>>>>>>>> Here is my session info :
>>>>>>>>>>
>>>>>>>>>>> sessionInfo()
>>>>>>>>>> R version 3.3.1 (2016-06-21)
>>>>>>>>>> Platform: x86_64-w64-mingw32/x64 (64-bit)
>>>>>>>>>> Running under: Windows 7 x64 (build 7601) Service Pack 1
>>>>>>>>>>
>>>>>>>>>> locale:
>>>>>>>>>> [1] LC_COLLATE=French_France.1252  LC_CTYPE=French_France.1252
>>>>>>>>>> LC_MONETARY=French_France.1252 LC_NUMERIC=C [5]
>>>>>>>>>> LC_TIME=French_France.1252
>>>>>>>>>> attached base packages:
>>>>>>>>>> [1] parallel  stats     graphics  grDevices utils     datasets
>>>>>>>>>> methods   base
>>>>>>>>>> other attached packages: [1] rgrass7_0.1-9 XML_3.98-1.4
>>>>>>>>>> beepr_1.2
>>>>>>>>>> raster_2.5-8 sp_1.2-3 RPostgreSQL_0.4-1 DBI_0.5-1
>>>>>>>>>>
>>>>>>>>>> loaded via a namespace (and not attached): [1] magrittr_1.5
>>>>>>>>>> tools_3.3.1 audio_0.1-5 Rcpp_0.12.7 stringi_1.1.2 grid_3.3.1
>>>>>>>>>> stringr_1.1.0 lattice_0.20-34 [9] fortunes_1.5-3
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>      [[alternative HTML version deleted]]
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> R-sig-Geo mailing list
>>>>>>>>>> [hidden email]
>>>>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>>>>>> --
>>>>>>>> *Michaël DELORME*
>>>>>>>> Administrateur de données, chargé de projet en géomatique
>>>>>>>> Service régional de l'information statistique, économique et
>>>>>>>> territoriale
>>>>>>>> Direction régionale de l'alimentation, de l'agriculture et de la
>>>>>>>> forêt
>>>>>>>> Auvergne-Rhône-Alpes
>>>>>>>> Site de Lyon
>>>>>>>> 165 rue Garibaldi – BP 3202 – 69401 LYON cedex 03
>>>>>>>> 04 78 63 34 21
>>>>>>>>
>>>>>>>> Pour écrire au service :
>>>>>>>> DRAAF Auvergne-Rhône-Alpes – SRISET
>>>>>>>> 16B rue Aimé Rudel – BP 45 – 63370 LEMPDES
>>>>>>>>
>>>>>>>> http://www.draaf.auvergne-rhone-alpes.agriculture.gouv.fr/
>>>>>>>>
>>>>>>>>      [[alternative HTML version deleted]]
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> R-sig-Geo mailing list
>>>>>>>> [hidden email]
>>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>>>>
>>>>>>
>>>> _______________________________________________
>>>> R-sig-Geo mailing list
>>>> [hidden email]
>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>>
>>>
>>> _______________________________________________
>>> R-sig-Geo mailing list
>>> [hidden email]
>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>
>> --
>> *Michaël DELORME*
>> Administrateur de données, chargé de projet en géomatique
>> Service régional de l'information statistique, économique et
>> territoriale
>> Direction régionale de l'alimentation, de l'agriculture et de la forêt
>> Auvergne-Rhône-Alpes
>> Site de Lyon
>> 165 rue Garibaldi – BP 3202 – 69401 LYON cedex 03
>> 04 78 63 34 21
>>
>> Pour écrire au service :
>> DRAAF Auvergne-Rhône-Alpes – SRISET
>> 16B rue Aimé Rudel – BP 45 – 63370 LEMPDES
>>
>> http://www.draaf.auvergne-rhone-alpes.agriculture.gouv.fr/
>>
>>     [[alternative HTML version deleted]]
>>
>> _______________________________________________
>> R-sig-Geo mailing list
>> [hidden email]
>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>

_______________________________________________
R-sig-Geo mailing list
[hidden email]
https://stat.ethz.ch/mailman/listinfo/r-sig-geo
Reply | Threaded
Open this post in threaded view
|

Re: rgrass7 : Error in parseGRASS

Chris Reudenbach
In reply to this post by Roger Bivand
@Michael fine!

@Roger

this is  pretty dirty "hack" I did not cross check if I got all
variables dealing with GRASS. I would like to do it more systematically.
Nevertheless as far as I understand the osgeo4w concept, we have only
two changing names. 1) the installation root directory   2) the GRASS
version name, that is used as a part of the internal  path structure.  I
would like to check this and if so it might be easy to integrate this in
initGRASS.

cheers Chris

Am 24.11.2016 um 10:48 schrieb Roger Bivand:

> On Thu, 24 Nov 2016, Michael DELORME wrote:
>
>> That's great Chris, it works fine as is !
>> Thank you, I don't have to keep another GRASS install aside then.
>
> Thanks for confirming this. I'll try to set up a test rig to allow
> initGRASS to set up the environment variables when using GRASS in
> OSGeo4W for a later release.
>
> Roger
>
>>
>> I'm sure it will be helpful to other people also.
>> Thanks again
>>
>> Le 24/11/2016 09:17, Chris Reudenbach a �crit :
>>> Michael,
>>>
>>> Using a fresh OSGEO4W64 standard quick desktop installation (i.e.
>>> installation of the default desktop GIS software packages with the
>>> installer and using C:\OSGeo4W64 as path)  I suggest the below
>>> solution.
>>>
>>> You have to set all necessary eniromental and system variables
>>> manually. I am not quit sure if I got them but actually it seems to
>>> work for your question. As a conclusion I think your Python and all of
>>> the rest is installed correct.
>>>
>>>
>>> cheers Chris
>>>
>>>
>>> ############### librarys, data etc
>>> ---------------------------------------------
>>> library(rgrass7)
>>> library(sp)
>>>
>>> # setup a temp workingdir
>>> working.dir<- "~/tmp/"
>>>
>>> # get meuse data
>>>
>>> data(meuse)
>>> data(meuse.grid)
>>>
>>> # georeference the meuse grid data
>>> coordinates(meuse.grid) <- ~x+y
>>> proj4string(meuse.grid) <- CRS("+init=epsg:28992")
>>> gridded(meuse.grid) <- TRUE
>>>
>>> # get a first cellsize/pixel resolution for GRASS
>>> resolution <- meuse.grid@grid@cellsize[1]
>>>
>>> # georeference the meuse data
>>> coordinates(meuse) <- ~x+y
>>> proj4string(meuse) <- CRS("+init=epsg:28992")
>>>
>>> # get projection, proj4 string and extent for GRASS
>>> projection<-(strsplit(meuse@proj4string@projargs,split = " "))
>>> proj4<- paste(projection[[1]][2:length(unlist(projection))], collapse
>>> = ' ')
>>> xmax<-meuse@bbox[3]
>>> xmin<-meuse@bbox[1]
>>> ymax<-meuse@bbox[4]
>>> ymin<-meuse@bbox[2]
>>>
>>> # create and set working directory
>>> if (!file.exists(file.path(working.dir,"run"))){
>>>   dir.create(file.path(working.dir,"run"),recursive = TRUE)
>>> }
>>> setwd(file.path( working.dir,"run"))
>>>
>>>
>>> ########### SETUP OSGEO4W enviroment settings manually
>>> -------------------------
>>> # setup the OSGEO4W environ manually
>>> # assuming a osgeow4w default "deskop fastinstall
>>> # using the default installation directory "C:\OSGeo4W64"
>>>
>>> # set OSGE4W base directory
>>> osgeo4w.root<-"C:\\OSGEO4~1"
>>> Sys.setenv(OSGEO4W_ROOT=osgeo4w.root)
>>> # define GISBASE
>>> grass.gis.base<-paste0(osgeo4w.root,"\\apps\\grass\\grass-7.0.5")
>>> Sys.setenv(GISBASE=grass.gis.base)
>>>
>>> Sys.setenv(GRASS_PYTHON=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\bin\\python.exe"))
>>>
>>>
>>> Sys.setenv(PYTHONHOME=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\apps\\Python27"))
>>>
>>>
>>> Sys.setenv(PYTHONPATH=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\apps\\grass\\grass-7.0.5\\etc\\python"))
>>>
>>>
>>> Sys.setenv(GRASS_PROJSHARE=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\share\\proj"))
>>>
>>>
>>> Sys.setenv(PROJ_LIB=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\share\\proj"))
>>> Sys.setenv(GDAL_DATA=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\share\\gdal"))
>>>
>>> Sys.setenv(GEOTIFF_CSV=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\share\\epsg_csv"))
>>>
>>>
>>> Sys.setenv(FONTCONFIG_FILE=paste0(Sys.getenv("OSGEO4W_ROOT"),"\\etc\\fonts.conf"))
>>>
>>>
>>>
>>> # call all OSGEO4W settings
>>> system("C:/OSGeo4W64/bin/o-help.bat")
>>>
>>>
>>> # create PATH variable
>>> Sys.setenv(PATH=paste0(grass.gis.base,";",
>>> "C:\\OSGEO4~1\\apps\\Python27\\lib\\site-packages\\numpy\\core",";",
>>> "C:\\OSGeo4W64\\apps\\grass\\grass-7.0.5\\bin",";",
>>> "C:\\OSGeo4W64\\apps\\grass\\grass-7.0.5\\lib",";",
>>> "C:\\OSGeo4W64\\apps\\grass\\grass-7.0.5\\etc",";",
>>> "C:\\OSGeo4W64\\apps\\grass\\grass-7.0.5\\etc\\python",";",
>>> "C:\\OSGeo4W64\\apps\\Python27\\Scripts",";",
>>>                        "C:\\OSGeo4W64\\bin",";",
>>>                        "c:\\OSGeo4W64\\apps",";",
>>>                        "C:\\OSGEO4~1\\apps\\saga",";",
>>> paste0(Sys.getenv("WINDIR"),"/WBem"),";",
>>>                        Sys.getenv("PATH")))
>>>
>>>
>>> #################### start with GRASS setup
>>> ------------------------------------
>>> rgrass7::initGRASS(gisBase=grass.gis.base,
>>>                    home=tempdir(),
>>>                    mapset='PERMANENT',
>>>                    override=TRUE
>>> )
>>>
>>> # assign GRASS projection according to data set
>>> rgrass7::execGRASS('g.proj',
>>>                    flags=c('c','quiet'),
>>>                    proj4=proj4
>>> )
>>>
>>> # assign GRASS extent and resolution
>>> rgrass7::execGRASS('g.region',
>>>                    flags=c('quiet'),
>>>                    n=as.character(ymax),
>>>                    s=as.character(ymin),
>>>                    e=as.character(xmax),
>>>                    w=as.character(xmin),
>>>                    res=as.character(resolution)
>>> )
>>>
>>>
>>> #############   now do GRASS STUFF
>>> ---------------------------------------------
>>>
>>> rgrass7::writeVECT(meuse,"meuse")
>>> rgrass7::execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2
>>> double
>>>                    precision")
>>> #############  do other command line stuff
>>> -------------------------------------
>>>
>>> ## call gdal
>>> system("gdal_merge")
>>>
>>> # call saga cli
>>> system("saga_cmd")
>>>
>>>
>>> Am 23.11.2016 um 07:38 schrieb Michael DELORME:
>>>> Thanks for your insight.
>>>> I'll use a stand-alone GRASS install.
>>>>
>>>> Cordially
>>>>
>>>> Le 22/11/2016 15:13, Roger Bivand a �crit :
>>>>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>>>>
>>>>>> Thanks for investigating.
>>>>>>
>>>>>> I'll try a standalone version of GRASS if needed.
>>>>>>
>>>>>> Here is the traceback
>>>>>>
>>>>>>> traceback()
>>>>>> 4: stop(paste(cmd, "not parsed"))
>>>>>> 3: parseGRASS(cmd, legacyExec = legacyExec)
>>>>>> 2: doGRASS(cmd, flags = flags, ..., parameters = parameters,
>>>>>> echoCmd =
>>>>>> echoCmd, legacyExec = legacyExec)
>>>>>> 1: execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2
>>>>>> double
>>>>>> precision")
>>>>>>
>>>>>> My C:\OSGeo4W64\apps\grass\grass-7.0.5\bin lists *.exe or *.bat and
>>>>>> indeed the *.bat command are those which don't work (r.mask.bat,
>>>>>> v.db.addcolumn.bat,...). The batch calls Python scripts ; for
>>>>>> example
>>>>>> v.db.addcolumn.bat is :
>>>>>>
>>>>>> @"%GRASS_PYTHON%" "%GISBASE%/scripts/v.db.addcolumn.py" %*
>>>>>>
>>>>>> So I guess something must be wrong in my Python installation... (it
>>>>>> works however from within a GRASS shell)
>>>>> No, the logic for Windows and initGRASS has only ever been tested
>>>>> with
>>>>> stand-alone GRASS. I would guess that in OSGeo4W the path variables
>>>>> are wrong. I cannot even find out how to run initGRASS in R but
>>>>> outside the OSGeo4W shell (doesn't find iconv.dll) or inside the
>>>>> OSGeo4W shell (cannot create a temporary GRASS location). Unless you
>>>>> or others really need OSGeo4W, I suggest asking others to implement
>>>>> that - very bulky and fragile.
>>>>>
>>>>> Roger
>>>>>
>>>>>> Cordially
>>>>>>
>>>>>>
>>>>>> Le 22/11/2016 14:30, Roger Bivand a �crit :
>>>>>>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>>>>>>
>>>>>>>> Thanks for replying
>>>>>>>>
>>>>>>>> Here is a reproducible example (change your GRASS directory of
>>>>>>>> course) :
>>>>>>>>
>>>>>>>> library(rgrass7)
>>>>>>>> library(sp)
>>>>>>>> initGRASS("C:/OSGeo4W64/apps/grass/grass-7.0.5", home = tempdir(),
>>>>>>>> override = TRUE)
>>>>>>>> data(meuse)
>>>>>>>> coordinates(meuse) <- ~x+y
>>>>>>>> writeVECT(meuse, "meuse")
>>>>>>>> execGRASS("v.db.addcolumn", map = "meuse", columns = "area_m2
>>>>>>>> double
>>>>>>>> precision")
>>>>>>> This appears to run correctly on Windows 7 with GRASS 7.0.5 Windows
>>>>>>> stand-alone. Do you need to use OSGeo4W - the internal logic
>>>>>>> used for
>>>>>>> finding out where the different versions keep their executables and
>>>>>>> batch files varies?
>>>>>>>
>>>>>>> What does traceback() say after the error? The error comes from
>>>>>>> parseGRASS("v.db.addcolumn") - the XML error comes from not being
>>>>>>> able
>>>>>>> to read the output of v.db.addcolumn<.ext> --interface-description
>>>>>>> where <.ext> may be .exe or .bat I think.
>>>>>>>
>>>>>>> Roger
>>>>>>>
>>>>>>>> I get :
>>>>>>>> Error : XML content does not seem to be XML: 'The specified path
>>>>>>>> was not
>>>>>>>> found.'
>>>>>>>> In addition: Warning message:
>>>>>>>> running command 'v.db.addcolumn.bat --interface-description' had
>>>>>>>> status 1
>>>>>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) :
>>>>>>>>   v.db.addcolumn not parsed
>>>>>>>>
>>>>>>>> Other execGRASS commands (like r.neighbors, r.mapcalc,..)  work
>>>>>>>> fine,
>>>>>>>> but some other (r.mask) fail with a similar XML error.
>>>>>>>>
>>>>>>>> All commands work fine when used from the GRASS shell...
>>>>>>>>
>>>>>>>> What is this XML error ?
>>>>>>>> Thanks
>>>>>>>>
>>>>>>>> Le 22/11/2016 09:34, Roger Bivand a �crit :
>>>>>>>>> On Tue, 22 Nov 2016, Michael DELORME wrote:
>>>>>>>>>
>>>>>>>>>> Dear list,
>>>>>>>>>>
>>>>>>>>>> Using rgrass7 on Windows7 with GRASS 7.0.5 (OSGeo distribution),
>>>>>>>>>> I get
>>>>>>>>>> the following error :
>>>>>>>>> Please always try to provide a reproducible example using a
>>>>>>>>> standard
>>>>>>>>> data set. In addition, the output of traceback() following the
>>>>>>>>> error
>>>>>>>>> would be helpful. Are you running R inside GRASS, or using R to
>>>>>>>>> initiate GRASS?
>>>>>>>>>
>>>>>>>>> Consider using the grass-stats list:
>>>>>>>>>
>>>>>>>>> https://lists.osgeo.org/mailman/listinfo/grass-stats
>>>>>>>>>
>>>>>>>>> as it is more likely to yield results, but there also provide an
>>>>>>>>> example that anyone can reproduce. The example should avoid
>>>>>>>>> loading
>>>>>>>>> other packages, and should be run from the R console (not, say,
>>>>>>>>> RStudio).
>>>>>>>>>
>>>>>>>>> Roger
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>> execGRASS("v.db.addcolumn", map = "result_v", columns =
>>>>>>>>>>> "area_m2
>>>>>>>>>>> double precision")
>>>>>>>>>> Error : XML content does not seem to be XML: 'Le chemin d'acc�s
>>>>>>>>>> sp�cifi� est introuvable.' In addition: Warning message: running
>>>>>>>>>> command 'v.db.addcolumn.bat --interface-description' had
>>>>>>>>>> status 1
>>>>>>>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) :
>>>>>>>>>>   v.db.addcolumn not parsed
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> and a similar one for r.mask :
>>>>>>>>>>
>>>>>>>>>>> execGRASS("r.mask", raster = "map")
>>>>>>>>>> Error : XML content does not seem to be XML: 'Le chemin d'acc�s
>>>>>>>>>> sp�cifi� est introuvable.'
>>>>>>>>>> In addition: Warning message:
>>>>>>>>>> running command 'r.mask.bat --interface-description' had
>>>>>>>>>> status 1
>>>>>>>>>> Error in parseGRASS(cmd, legacyExec = legacyExec) : r.mask not
>>>>>>>>>> parsed
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> whereas most other execGRASS command I tried work as expected.
>>>>>>>>>> Any idea ?
>>>>>>>>>> Thanks in advance
>>>>>>>>>>
>>>>>>>>>> Here is my session info :
>>>>>>>>>>
>>>>>>>>>>> sessionInfo()
>>>>>>>>>> R version 3.3.1 (2016-06-21)
>>>>>>>>>> Platform: x86_64-w64-mingw32/x64 (64-bit)
>>>>>>>>>> Running under: Windows 7 x64 (build 7601) Service Pack 1
>>>>>>>>>>
>>>>>>>>>> locale:
>>>>>>>>>> [1] LC_COLLATE=French_France.1252 LC_CTYPE=French_France.1252
>>>>>>>>>> LC_MONETARY=French_France.1252 LC_NUMERIC=C [5]
>>>>>>>>>> LC_TIME=French_France.1252
>>>>>>>>>> attached base packages:
>>>>>>>>>> [1] parallel  stats     graphics  grDevices utils     datasets
>>>>>>>>>> methods   base
>>>>>>>>>> other attached packages: [1] rgrass7_0.1-9 XML_3.98-1.4
>>>>>>>>>> beepr_1.2
>>>>>>>>>> raster_2.5-8 sp_1.2-3 RPostgreSQL_0.4-1 DBI_0.5-1
>>>>>>>>>>
>>>>>>>>>> loaded via a namespace (and not attached): [1] magrittr_1.5
>>>>>>>>>> tools_3.3.1 audio_0.1-5 Rcpp_0.12.7 stringi_1.1.2 grid_3.3.1
>>>>>>>>>> stringr_1.1.0 lattice_0.20-34 [9] fortunes_1.5-3
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>      [[alternative HTML version deleted]]
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> R-sig-Geo mailing list
>>>>>>>>>> [hidden email]
>>>>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>>>>>> --
>>>>>>>> *Micha�l DELORME*
>>>>>>>> Administrateur de donn�es, charg� de projet en g�omatique
>>>>>>>> Service r�gional de l'information statistique, �conomique et
>>>>>>>> territoriale
>>>>>>>> Direction r�gionale de l'alimentation, de l'agriculture et de la
>>>>>>>> for�t
>>>>>>>> Auvergne-Rh�ne-Alpes
>>>>>>>> Site de Lyon
>>>>>>>> 165 rue Garibaldi � BP 3202 � 69401 LYON cedex 03
>>>>>>>> 04 78 63 34 21
>>>>>>>>
>>>>>>>> Pour �crire au service :
>>>>>>>> DRAAF Auvergne-Rh�ne-Alpes � SRISET
>>>>>>>> 16B rue Aim� Rudel � BP 45 � 63370 LEMPDES
>>>>>>>>
>>>>>>>> http://www.draaf.auvergne-rhone-alpes.agriculture.gouv.fr/
>>>>>>>>
>>>>>>>>      [[alternative HTML version deleted]]
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> R-sig-Geo mailing list
>>>>>>>> [hidden email]
>>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>>>>
>>>>>>
>>>> _______________________________________________
>>>> R-sig-Geo mailing list
>>>> [hidden email]
>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>>
>>>
>>> _______________________________________________
>>> R-sig-Geo mailing list
>>> [hidden email]
>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>
>> --
>> *Micha�l DELORME*
>> Administrateur de donn�es, charg� de projet en g�omatique
>> Service r�gional de l'information statistique, �conomique et
>> territoriale
>> Direction r�gionale de l'alimentation, de l'agriculture et de la for�t
>> Auvergne-Rh�ne-Alpes
>> Site de Lyon
>> 165 rue Garibaldi � BP 3202 � 69401 LYON cedex 03
>> 04 78 63 34 21
>>
>> Pour �crire au service :
>> DRAAF Auvergne-Rh�ne-Alpes � SRISET
>> 16B rue Aim� Rudel � BP 45 � 63370 LEMPDES
>>
>> http://www.draaf.auvergne-rhone-alpes.agriculture.gouv.fr/
>>
>>     [[alternative HTML version deleted]]
>>
>> _______________________________________________
>> R-sig-Geo mailing list
>> [hidden email]
>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>
>
>
> _______________________________________________
> R-sig-Geo mailing list
> [hidden email]
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo

        [[alternative HTML version deleted]]


_______________________________________________
R-sig-Geo mailing list
[hidden email]
https://stat.ethz.ch/mailman/listinfo/r-sig-geo