writeRaster() defaults to Float 8, regardless of the data type of your input matrix. You can set it explicitly to write to integer by using the datatype= argument.
writeRaster(r, "Test_writeRaster.asc",NAflag =-999,overwrite=T, datatype='INT2S') Cheers, Loïc On 17/05/2017 03:21, Michael Koehler wrote: > Dear list, > > I encountered a problem when trying to write an Ascii-grid of integers > with raster::writeRaster. > When using that function, the upper left cell (only that cell!) in the > resulting ascii grid will always > be a floating point number, even if I convert the whole raster to > integers before. > > However, when I convert the raster to a SpatialPixelDataFrame and write > the Ascii file with > maptools::writeAsciiGrid, the resulting upper left cell will be > correctly saved as an integer. > So Is this a bug or am I doing something wrong here? > > Here is a reproducible example: > > library(raster) > library(maptools) > library(SDMTools) > library(adehabitat) > > # create raster > > m <- matrix(c(-999,-999,-999,-999,-999,-999.999,-999.9,-999,1,6, > -999,-999,-999,7,1,6,7,2,6,3, > 4,7,3,4,5,3,7,9,3,8, > 9,3,6,8,3,4,7,3,7,8, > 3,3,-999.999,7,5,3,2,8,9,8, > 7,6,2,6,5,2,2,7,7,7, > 4,7,2,5,7,7,7,3,3,5, > 7,6,7,5,-999,6,5,2,3,2, > 4,9,2,5,5,8,3,3,1,2, > 5,2,6,5,1,5,3,7,7,2),nrow=10, ncol=10, byrow = T) > > r <- raster(m) > values(r)<-as.integer(values(r)) > > #------------------------------------------------------ > # write the raster and read the resulting file in again > writeRaster(r, "Test_writeRaster.asc",NAflag =-999,overwrite=T) > a<-read.table("Test_writeRaster.asc",stringsAsFactors = F) > > a[7,] # upper left cell in the ascii file is a floating point number! > > #------------------------------------------------------ > # convert, write with writeAsciiGrid and read the resulting file in again > asc <- asc.from.raster(r) # convert to asc > rasc <- asc2spixdf(asc) # convert to SpatialPixelDataFrame > > writeAsciiGrid(rasc,"Test_writeAsciiGrid.asc", na.value =-999) > a<-read.table("Test_writeAsciiGrid.asc",stringsAsFactors = F) > > a[7,] # upper left cell in the ascii file is a > > # R version 3.2.5 (2016-04-14) > # Platform: i386-w64-mingw32/i386 (32-bit) > # Running under: Windows 7 x64 (build 7601) Service Pack 1 > # > # locale: > # [1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United > States.1252 > # [3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C > # [5] LC_TIME=English_United States.1252 > # > # attached base packages: > # [1] stats graphics grDevices utils datasets methods base > # > # loaded via a namespace (and not attached): > # [1] tools_3.2.5 > _______________________________________________ R-sig-Geo mailing list R-sig-Geo@r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-geo