[R-sig-Geo] map algebra with ascii grid

Michal Gallay mgallay01 at Queens-Belfast.AC.UK
Sun Jul 15 19:44:37 CEST 2007


Thank you very much to All ,

Roger's hint doest the thing I need. I am working with DEMs and instead of 
processing them partially in a GIS, I wanted to do everything in R as most 
of the analyses are carried out in R.

I'm sure I will have more questions in the future:) I appreciate all the 
advice.

Michal

On Jul 15 2007, Agustin Lobo wrote:

> Roger,
> 
> I think that having Arithmetic operations defined for 
> SpatialGridDataFrame objects would be very useful.
> May be I'm missing something, but the argument that "columns of the data 
> frame (here a single column) may contain data of different classes" does 
> not seem a valid one to me, as
> this is the case for any dataframe object in R while arithmetic 
> operations are
> defined for them, just yielding the proper results and warnigs,i.e.:
> 
>  > d <- data.frame(cbind(x=1, y=1:10), fac=sample(L3, 10, repl=TRUE))
>     x  y fac
> 1  1  1   C
> 2  1  2   A
> 3  1  3   A
> 4  1  4   A
> 5  1  5   A
> 6  1  6   A
> 7  1  7   A
> 8  1  8   C
> 9  1  9   A
> 10 1 10   C
> 
>  > d+3
>     x  y fac
> 1  4  4  NA
> 2  4  5  NA
> 3  4  6  NA
> 4  4  7  NA
> 5  4  8  NA
> 6  4  9  NA
> 7  4 10  NA
> 8  4 11  NA
> 9  4 12  NA
> 10 4 13  NA
> Warning message:
> + not meaningful for factors in: Ops.factor(left, right)
> 
> So I would be most happy with such a feature added to spatial objects.
> The "solution" of using other tools (i.e., python, cf. message by 
> Philip, but this can also be done with grass and many other GIS) is not 
> optimal at all, as we keep having copies of the same information in 
> different formats for different tools.
> 
> Agus
> 
> 
> Roger Bivand escribió:
> > On Sat, 14 Jul 2007, Michal Gallay wrote:
> > 
> >> Dear R Users,
> >>
> >> could you please advise me on doing map algebra with spatial grids? 
> >> It's the first time I am using spatial objects in R. I have imported 
> >> an ascii grid file and wanted to round the values in it or sum with a 
> >> value, but it gives an error message:
> >>
> >>> require(maptools)
> >>> x <- readAsciiGrid(fname="xxxx.asc")
> >>> x+3
> >> Error in x + 3 : non-numeric argument to binary operator
> >>> round(x,2)
> >> Error in round(x, digits) : Non-numeric argument to mathematical 
> >> function
> >>
> > 
> > Arithmetic operations are not defined for SpatialGridDataFrame 
> > operations, as the columns of the data frame (here a single column) may 
> > contain data of different classes. Do the operations on the columns 
> > directly:
> > 
> > names(x)
> > 
> > If there is a column called "band1", then
> > 
> > x$band1 + 3
> > 
> > will print "band1" + 3, and
> > 
> > x$band1 <- x$band1 + 3
> > 
> > will add 3 to the "band1" column. Think what would happen if band1 was 
> > categorical or logical to see why doing arithmetic directly isn't such 
> > a good idea.
> > 
> > Hope this helps,
> > 
> > Roger
> > 
> >> Thank you for any suggestions.
> >>
> >> Best wishes,
> >>
> >> Michal
> >>
> >>
> >>
> >>
> > 
> 
> 

-- 
Michal Gallay

Postgraduate Research Student
School of Geography, Archaeology and Palaeoecology
Queen's University
Belfast BT7 1NN
Northern Ireland

Tel: +44(0)2890 273929
Fax: +44(0)2890 973212
email: mgallay01 at qub.ac.uk
www: www.qub.ac.uk/geog




More information about the R-sig-Geo mailing list