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

Michael Sumner md@umner @ending from gm@il@com
Fri Aug 24 14:13:50 CEST 2018


That doesn't help though!

Sorry, I thought that was it, will sleep on it.

Cheers, Mike

On Fri, 24 Aug 2018 at 22:00 Michael Sumner <mdsumner using gmail.com> wrote:

> Sorry, I was wrong - the actual issue is that the writeRaster argument is
> "datatype", it gets conflated with the function that is dataType().
>
> f <- "test_int.tif"
> writeRaster(r, f, datatype = "INT2U", overwrite = TRUE)
> s <- raster(f)
> dataType(s)
>
> [1] "INT2U"
>
> Not the first time this has caught me out. I found it by checking
> mode(readGDAL(f)[[1]]) and realizing that the TIFF type was Float32, prior
> to the next steps.
>
> HTH
>
> :)
>
> Cheers, Mike
>
> On Fri, 24 Aug 2018 at 18:26 nevil amos <nevil.amos using gmail.com> wrote:
>
>> 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
>>> <https://maps.google.com/?q=203+Channel%0D%0A+Highway+Kingston+Tasmania+7050+Australia&entry=gmail&source=g>
>>> [[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
>
> --
Dr. Michael Sumner
Software and Database Engineer
Australian Antarctic Division
203 Channel Highway
Kingston Tasmania 7050 Australia

	[[alternative HTML version deleted]]



More information about the R-sig-Geo mailing list