[GRASS-stats] Re: Accessing grass raster data from R via library
and not via file
Rainer M Krug
r.m.krug at gmail.com
Sat Jan 14 04:14:37 EST 2012
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 13/01/12 22:19, Hamish wrote:
> Rainer wrote:
>> I am writing to you directly, as you are the author of the
>> r.out.mat.
>
> dangerous! my inbox is flooded and I might easily miss it :)
>
OK - I'll push it to grass-stats - that others can get involved.
>> I have a simulation, which heavily relies on reading and writing
>> spatial data from GRASS into R and vice versa. Profiling
>> indicated, that the actual readRAST6() from R takes uip a large
>> proportion of the simulation. So I looked into alternatives, and
>> as it is not that difficult to return data from C to R, I thought
>> about that option.
>
> please post to the statsgrass mailing list. Roger
Done
> may have a good idea about what to do. ISTR there were two
> options, and older & slower but more compatible way and a newer and
> faster way. you could select them via a switch. maybe your system
> is using the old+slow way?
I tried out with the useGDAL option TRUE and FALS, aned the plugin is
not installed on the cluster where I finally want to run the
simulation (and, in addition, I would like to avoid GDAL doe to
continueing hassles wth isnstalaltions etc. on the cluster - locally
GDAL works nicely)
I actualy did some benchmarks between useGDAL TRUE and FALSE and there
was a difference in the 10% range, but still not fast enough.
>
>> The module r.out.mat actually extracts all the data from GRASS
>> and saves it (spatial header information and the actual map
>> data).
>
> r.out.bin would be more appropriate, as Matlab format saves
> column-wise not row-wise due to its Fortran origins, so you have
> to read the entire map into memory, which doesn't work for massive
> datasets.
Thanks - I'll look at that one. The "part of map" is a useful
consideration.
>
> both are very simple, see doc/raster/r.example/ in the source
> code. no need for libraries or anything.
>
>
> header data is available from r.info flags and $MAPSET/cellhd/
The thing is I would like to avoid using files and access GRASS maps
as directly as possible, which, as I understand it at the moment,
would be via C function(s) in GRASS whose return values are the data,
and a C function(s) in R which calls these GRASS C functions to
provide the data to R.
>
>
> the alternate idea is to use R's gdal package to read the GRASS
> raster maps directly.
As mentioned earlier, I would like to avoid GDAL doe to installation
problems - but I should try this.
I understand that the idea of GDAL is to convert spatial data between
different formats, but there is (as far as I now) no way to get GASS
data directly into R, without creating an intermediate format, so
GRASS (disk) --> GDAL (memory) --> new format (disk) --> R
resulting in reading from disk, converting, writing to disk and
reading the converted data again.
No problem if I am doing analysis, but if I am running my simulation
model, data is read and written to GRASS all the time, and this
intermediate step costs lots of time.
I could do some benchmarks with the spearfish dataset next week to
show what I mean.
Cheers and thanks,
Rainer
>
>
> double check your region bounds and resolution are correct, or it
> could waste a lot of time.
I'll do, but I am 99% sure that they are correct and as I need them.
>
>
> regards, Hamish
- --
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation
Biology, UCT), Dipl. Phys. (Germany)
Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa
Tel : +33 - (0)9 53 10 27 44
Cell: +33 - (0)6 85 62 59 98
Fax : +33 - (0)9 58 10 27 44
Fax (D): +49 - (0)3 21 21 25 22 44
email: Rainer at krugs.de
Skype: RMkrug
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAk8RR30ACgkQoYgNqgF2ego03gCeK5DhbC1TQzgVM7OdBMwvqR+u
JoUAniH8s9j0HLb3KafkqoAU6SYNRbcl
=+gkB
-----END PGP SIGNATURE-----
More information about the grass-stats
mailing list