[GRASS-user] Help; Running Grass from R without installing GRASS

Mehrdad Varedi varedi at gmail.com
Sun Apr 28 21:15:34 PDT 2019


Thank you Micha,

I was under the impression that rgrass7 library has all the functions in
GRASS. Apparently, all it does is calling modules from GRASS and GRASS
should be completely installed on the same machine that the R code is
running. I wish at least we could connect to a GRASS copy on a web-based
VM.
I enjoyed the part of your letter that explained how to created a dataset
outside of GRASS using R code and thanks for that!

I wish it was possible to read the functions directly from a web host/cloud
instead of installing it everywhere (Even if it was a paid service it could
be an attractive option). ESRI has some API, I wish we could have it for
GRASS or I could help to write the API for GRASS.

Best regards,

Mehrdad



ᐧ

On Sun, Apr 28, 2019 at 2:54 PM Micha Silver <tsvibar at gmail.com> wrote:

>
> On 28/04/2019 19:30, Mehrdad Varedi wrote:
>
> Thank you for your time and sharing your knowledge Micha for the second
> time.
>
> I followed your code and found that initGRASS searches for libraries and
> binaries of GRASS in gisBase folder. If we address a folder that doesn't
> have the code it comes back with this error message: "The code execution
> cannot proceed because libgrass_gis.7.4.1.dll was not found. Reinstalling
> the program may fix this problem." it gives the same error even if I copy
> that file into GISBase folder.
>
> I want to run my code on a shiny server which I can't install GRASS
> although I can copy files and libraries. Can I solve this issue by copying
> a certain folder of GRASS binaries with my app or I am going the wrong path?
>
>
> I have no idea.
>
>
> So you're trying to run an application that's not installed? I can't
> imagine how that would work :-(. After all the libraries (*.dll's if this
> is windows) are searched for in a certain OS defined path. And many
> libraries depend on others, so the whole chain has to be found.
>
> What are the limitations on this server? Can you compile a binary into
> your home directory? If so, you might be able to install grass with the
> GISBASE in your home directory, and run from there. But again, GRASS has
> lot's of dependencies: proj4, gdal, and many others.  Any you need access
> to the compile toolchain...
>
>
> Maybe others will have some more insight.
>
>
> Regards, Micha
>
>
>
> Please advise,
>
> Thank you once again for all the time you share to answer my questions,
>
> Mehrdad
>
>
>>
> On Sun, Apr 28, 2019 at 10:55 AM Micha Silver <tsvibar at gmail.com> wrote:
>
>>
>> On 27/04/2019 22:05, Mehrdad Varedi wrote:
>>
>>
>> Hi Everyone,
>> I have detail explanations of connecting to an existing dataset in GRASS
>> from R in this address:
>> https://grasswiki.osgeo.org/wiki/R_statistics/rgrass7
>>
>> What I hope I could do is to create a GRASS dataset in R on the fly and
>> without the need to install GRASS or create a dataset on it. Is there any
>> way to do this?
>>
>> Maybe this will help:
>>
>> (You must have GRASS installed, of course)
>>
>>
>> # Parameters for the GRASS installation and temporary GRASS mapset
>>
>> GISBase = "/usr/lib/grass76"
>> # Set these as you like
>>
>> GISDbase = "/tmp"
>> Location = "tmp_location"
>> Mapset = "tmp_mapset"
>> georef = "EPSG:2039"
>>
>> mapset_path = file.path(GISDbase, Location, Mapset)
>>
>> # Now run the 'grass' command within R and
>>
>> # use the -c and -e flags to create the temp mapset, then exit
>>
>> setup_grass_cmd = paste("grass", "-c", georef, "-e", mapset_path)
>>
>> system(setup_grass_cmd)
>>
>>
>> # Load the R grass interface and initialize GRASS within R,
>>
>> # using the temporary mapset from above
>>
>> library(rgrass7)
>> initGRASS(home=tempdir(),
>>           gisBase = GISBase,
>>           gisDbase = GISDbase,
>>           location = Location,
>>           mapset = Mapset,
>>           remove_GISRC = TRUE)
>>
>>
>> # Try some GRASS commands
>>
>> input_tif = "isrlat12.tif"
>>
>> grass_rast = "isrlat12"
>> execGRASS("r.in.gdal",  flags = c("o","overwrite"),
>>           input = input_tif,
>>           output = grass_rast)
>> execGRASS("g.region", flags="p", raster = grass_rast)
>>
>> I did not add a command to remove the temporary mapset.  Something like:
>>
>> unlink(file.path(GISDbase, Location), recusive = TRUE) might be necessary
>>
>>
>> One other note: you probably will get better suggestions on the R-sig-geo
>> list...
>>
>>
>> i.e. I have a vector /raster file and use that to identify the region and
>> details required to set up a dataset and use GRASS functions just by
>> including rgrass library.
>>
>> Thanks for your help and attention,
>>
>> Mehrdad
>> --
>> Mehrdad Varedi
>>>>
>> _______________________________________________
>> grass-user mailing listgrass-user at lists.osgeo.orghttps://lists.osgeo.org/mailman/listinfo/grass-user
>>
>> --
>> Micha Silver
>> Ben Gurion Univ.
>> Sde Boker, Remote Sensing Lab
>> cell: +972-523-665918
>>
>>
>
> --
> Mehrdad Varedi
>
> --
> Micha Silver
> Ben Gurion Univ.
> Sde Boker, Remote Sensing Lab
> cell: +972-523-665918
>
>

-- 
Mehrdad Varedi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-user/attachments/20190429/8bf0faba/attachment-0001.html>


More information about the grass-user mailing list