[R-sig-Geo] Problems converting rasters from float to integer.

nevil amos nevil@@mo@ @ending from gm@il@com
Fri Aug 24 10:26:22 CEST 2018


Roger,

there was a reproducible example in my post:  it seems to have got a bit
scrambled in your reply.

from the help in raster I thought that if I included  datatype="INT2S" in
the writeRaster() command the values would be formatted in the output file
( and the subsequent reading using raster() of that file) as integer  is
this not the case?

Here it is the reproducible example

v<-c(rep(1.00000,25),rep(0.00000,50),rep(NA,25))
m<-matrix(v,10,10)
r<-raster(m)
dataType(r)
writeRaster(r,"test_int.tif",dataType="INT2U",overwrite=T)
s<-raster("test_int.tif")
dataType(s)

On Fri, 24 Aug 2018 at 18:05, Roger Bivand <Roger.Bivand using nhh.no> wrote:

> Thanks, Mike. I agree that the lower level interface in rgdal is flexible
> enough, but as you say non-trivial. Nevil: could you please provide a small
> reproducible example to point people in the right direction?
>
> Roger
>
> Roger Bivand
> Norwegian School of Economics
> Bergen, Norway
>
>
>
> Fra: Michael Sumner
> Sendt: fredag 24. august, 09.14
> Emne: Re: [R-sig-Geo] Problems converting rasters from float to integer.
> Til: nevil amos
> Kopi: r-sig-geo using r-project.org
>
>
> I'm pretty sure readGDAL from rgdal (that raster uses) will keep as
> integers, so you can build an empty raster and copy the values over. But
> will need to derive from the rgdal version to catch all the metadata
> (structure, extent, and crs). I think it's doable and will try later. There
> are other options but nothing trivial afaik. Cheers, Mike On Fri, 24 Aug
> 2018, 16:45 nevil amos wrote: > I have a large number of rasters ( tiffs)
> that contain whole number values > between 0 and 100, and NA values. or
> 0,1,and NA > they are currently in Float format, I am trying to rewrite
> them as integer > rasters, firstly to save space, and secondly so that I
> can later read the > values stack of all the rasters into an integer array.
> using getValues(). > > To do this I am setting the dataType to INT2U in
> writeRaster, however when > I read the save file back into R the format is
> not INT2U but FLT8S > > toy example: > > v m r dataType(r) >
> writeRaster(r,"test_int.tif",dataType="INT2U",overwrite=T) > s dataType(s)
> > > the result I get: > > > v > m > r > dataType(r) > [1] "FLT4S" > >
> writeRaster(r,"test_int.tif",dataType="INT2U",overwrite=T) > > s >
> dataType(s) > [1] "FLT8S" > > > > > Can you suggest how I ensure the values
> are stored as integer? > > Many thanks > > [[alternative HTML version
> deleted]] > > _______________________________________________ > R-sig-Geo
> mailing list > R-sig-Geo using r-project.org >
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo > -- Dr. Michael Sumner
> Software and Database Engineer Australian Antarctic Division 203 Channel
> Highway Kingston Tasmania 7050 Australia [[alternative HTML version
> deleted]] _______________________________________________ R-sig-Geo mailing
> list R-sig-Geo using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>
>

	[[alternative HTML version deleted]]



More information about the R-sig-Geo mailing list