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 >>>>>>>> R-sig-Geo@r-project.org >>>>>>>> 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 >>>>>> R-sig-Geo@r-project.org >>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo >>>> >>>> >> _______________________________________________ >> R-sig-Geo mailing list >> R-sig-Geo@r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-sig-geo >> > > _______________________________________________ > R-sig-Geo mailing list > R-sig-Geo@r-project.org > 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 R-sig-Geo@r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-geo