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

nevil amos nevil@@mo@ @ending from gm@il@com
Fri Aug 24 15:18:16 CEST 2018


Thanks,

I think it did help
datatype vs dataType was indeed the problem!

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

> 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