[R-spatial-devel] [STATSGRASS] speed of GRASS/R interface
Roger Bivand
Roger.Bivand at nhh.no
Mon Oct 8 14:27:07 EDT 2007
On Mon, 8 Oct 2007, Carlos "Guâno" Grohmann wrote:
> Hi,
>
> I just downloaded/compiled/installed the current sourceforge CVS for
> sp and spgrass6, and it's WAY faster than before.
Thanks, I'll back out of the spgrass6 changes, which are in sp too. I see
very big speed-ups in rgdal too, and have R CMD check'ed the released
gstat for problems. I have no idea why the methods recursed into the new
SpatialGrid object, but they obviously did.
Roger
>
> thanks, Roger!
>
> Carlos
>
>
> On 10/6/07, Roger Bivand <Roger.Bivand at nhh.no> wrote:
>> Hi,
>>
>> Modification also committed in sp on sourceforge, speedup from from ~ 12
>> minutes to 6.5 seconds on a 900 by 3600 raster, and no memory explosion.
>> I'm seeing similar speedups in rgdal. Still no idea why - a change in the
>> methods package? When we release a fresh sp, the need for special fixes
>> will go away, I hope.
>>
>> Could somebody try the current sourceforge CVS of sp and see if you see
>> the same speedup? May need to wait for the anonymous CVS to synch.
>>
>> Best wishes,
>>
>> Roger
>>
>>
>> On Sat, 6 Oct 2007, Roger Bivand wrote:
>>
>>> On Sat, 6 Oct 2007, jarekj at amu.edu.pl wrote:
>>>
>>>>
>>>> Roger!
>>>>
>>>> I also notice that of Carlos wrote.
>>>>
>>>> That hangs not occured when spgrass6 was based on r.out.ascii instead of
>>>> binary input-output and in fact it was realably faster. Maybe back to
>>>> previouis solution be good temporal solution. I also exchange data
>>>> between grass and R very often so that hang make me sometimes inpatient
>>>>
>>>> greetengs and regards
>>>> Jarek
>>>
>>> The problem is in new("SpatialGrid", SPix):
>>>
>>> library(sp)
>>> sessionInfo()
>>> cellcentre.offset <- c(-16.821667, 13.060307)
>>> cellsize <- c(0.000833, 0.000833)
>>> cells.dim <- c(3629.000000, 921.00000)
>>> grd <- GridTopology(cellcentre.offset, cellsize, cells.dim)
>>> pts <- sp:::boguspoints(grd)
>>> pts at bbox[,1] = pts at bbox[,1] - 0.5 * grd at cellsize
>>> pts at bbox[,2] = pts at bbox[,2] + 0.5 * grd at cellsize
>>> proj4string(pts) = CRS(paste("+proj=longlat +a=6378137 +rf=298.257223563",
>>> "+no_defs +towgs84=0.000,0.000,0.000"))
>>> SPix <- new("SpatialPixels", pts, grid = grd, grid.index = integer(0))
>>> SG <- new("SpatialGrid", SPix)
>>>
>>> with rapidly increasing memory use. I have no idea why. My system:
>>>
>>>> sessionInfo()
>>> R version 2.6.0 (2007-10-03)
>>> i686-pc-linux-gnu
>>>
>>> locale:
>>> LC_CTYPE=en_GB;LC_NUMERIC=C;LC_TIME=en_GB;LC_COLLATE=en_GB;LC_MONETARY=en_GB;LC_MESSAGES=en_GB;LC_PAPER=en_GB;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=en_GB;LC_IDENTIFICATION=C
>>>
>>> attached base packages:
>>> [1] stats graphics grDevices utils datasets methods base
>>>
>>> other attached packages:
>>> [1] sp_0.9-14
>>>
>>> loaded via a namespace (and not attached):
>>> [1] grid_2.6.0 lattice_0.16-5 rcompgen_0.1-15
>>>
>>> and the message after Ctrl-C:
>>>
>>> Error in coordinates(coords) :
>>> error in evaluating the argument 'obj' in selecting a method for function
>>> 'coordinates'
>>> Error in bbox(object) :
>>> error in evaluating the argument 'obj' in selecting a method for function
>>> 'bbox'
>>>
>>> which makes me suspect that the new() is (now?) going to completely senseless
>>> places. This has the same effect:
>>>
>>> sG <- new("SpatialGrid", bbox=pts at bbox, proj4string=pts at proj4string,
>>> coords=pts at coords, grid=grd, grid.index=integer(0))
>>>
>>> unfortunately. It also impacts the rgdal route, because its call to make the
>>> output SGDF is the same.
>>>
>>> However, replacing the call to new("SpatialGrid", ...) to one of building an
>>> empty object with just new(), and stuffing the slots manually with slot() <-
>>> reduces import from over 12 minutes to 6 seconds (!). Perhaps the problem is
>>> that S4 classes have got "cleverer" and dislike the definition of SpatialGrid
>>> as only having a "SpatialPixels" representation?
>>>
>>> I have committed the very draft readRAST6() to CVS on sourceforge, but the
>>> real solution needs doing in sp itself (end of the SpatialGrid() function in
>>> SpatialGrid-methods.R).
>>>
>>> I'll carry on playing ...
>>>
>>> Roger
>>>
>>>
>>>>
>>>>
>>>> 6/10/2007, "Roger Bivand" <Roger.Bivand at nhh.no> napisa?/a:
>>>>
>>>>> On Tue, 2 Oct 2007, Carlos "Guâno" Grohmann wrote:
>>>>>
>>>>>> I've been thinking about the time it takes to import a raster from
>>>>>> GRASS to
>>>>>> R. I have some rasters with about 2000 rows and 2500 columns.
>>>>>> importing
>>>>>> starts fine, creates the header, then goes to 100%, and it hangs there
>>>>>> for
>>>>>> about 10 minutes, before get ready for the next command.
>>>>>> Any way of decrease this waiting time?
>>>>>
>>>>> I'm looking into this, as far as I can see as of now it is somewhere in
>>>>> the new("SpatialGridDataFrame", ...) call in
>>>>> res <- SpatialGridDataFrame(...) in readBinGrid(). Confusingly, the
>>>>> Rprof() output points at unlist() taking 90% of the total run time. I'll
>>>>> let you know where I get.
>>>>>
>>>>> Roger
>>>>>
>>>>>>
>>>>>> cheers
>>>>>>
>>>>>> Carlos
>>>>>>
>>>>>>
>>>>>
>>>>> --
>>>>> Roger Bivand
>>>>> Economic Geography Section, Department of Economics, Norwegian School of
>>>>> Economics and Business Administration, Helleveien 30, N-5045 Bergen,
>>>>> Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
>>>>> e-mail: Roger.Bivand at nhh.no
>>>>
>>>
>>>
>>
>> --
>> Roger Bivand
>> Economic Geography Section, Department of Economics, Norwegian School of
>> Economics and Business Administration, Helleveien 30, N-5045 Bergen,
>> Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
>> e-mail: Roger.Bivand at nhh.no
>>
>
>
>
--
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: Roger.Bivand at nhh.no
More information about the grass-stats
mailing list