I want writeRaster
to write the RAT (raster attribute table) that I've built in R.
I'm running R 3.0.1, raster 2.1-49, and rgdal 0.8-10.
My input raster looks like this:
r <-raster("F:/test.img")
class : RasterLayer
dimensions : 3, 3, 9 (nrow, ncol, ncell)
resolution : 30, 30 (x, y)
extent : 347325, 347415, 4301655, 4301745 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=18 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
data source : F:\test.img
names : test
values : 1, 19 (min, max)
I then build my attribute table:
r <- ratify(r)
rat <- levels(r)[[1]]
rat$Pixel_Values <- c(1, 7, 8, 9, 19)
rat$Class_Names <- c("A", "B", "C", "D", "E")
levels(r) <- rat
Which results in a raster
with attributes:
r
# class : RasterLayer
# dimensions : 3, 3, 9 (nrow, ncol, ncell)
# resolution : 30, 30 (x, y)
# extent : 347325, 347415, 4301655, 4301745 (xmin, xmax, ymin, ymax)
# coord. ref. : +proj=utm +zone=18 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
# data source : F:\test.img
# names : test
# values : 1, 19 (min, max)
# attributes :
# ID Pixel_Values Class_Names
# 1 1 A
# 7 7 B
# 8 8 C
# 9 9 D
# 19 19 E
I then attempt to write my raster together with its RAT:
ratRaster <- "F:/testRat.img"
writeRaster(r, filename=ratRaster, datatype="INT1U", RAT=TRUE, progress="window", overwrite=TRUE)
But when I read it back into R, it becomes apparent that the attributes did not persist:
r2 <- raster(ratRaster)
r2
# class : RasterLayer
# dimensions : 3, 3, 9 (nrow, ncol, ncell)
# resolution : 30, 30 (x, y)
# extent : 347325, 347415, 4301655, 4301745 (xmin, xmax, ymin, ymax)
# coord. ref. : +proj=utm +zone=18 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
# data source : F:\testRat.img
# names : testRat
# values : 1, 19 (min, max)
It would be quick and awesome to build RATs in R. How can I create and export the raster and keep the RAT?