让我们创建一个具有栅格属性表(RAT)的演示栅格。
library(raster)
library(rasterVis)
r = raster(matrix(1:4, 6, 6))
levels(r) = data.frame(ID = 1:4, class=LETTERS[1:4])
levelplot(r)
并使用geotiff格式保存
writeRaster(r, 'temp.tif')
现在,如果我们从文件中读取栅格,则它在RAT中还有一个未使用的行。
r = raster('temp.tif')
levels(r)[[1]]
# ID category
# 1 0
# 2 1 A
# 3 2 B
# 4 3 C
# 5 4 D
levelplot(r)
似乎无论原始数据中存在什么级别,保存和加载都会插入从零到最大值的每个整数值:
r = raster(matrix(2*(1:4), 6, 6))
levels(r) = data.frame(ID = 2*(1:4), class=LETTERS[1:4])
writeRaster(r, 'temp.tif')
r = raster('temp.tif')
levels(r)[[1]]
# ID category
# 1 0
# 2 1
# 3 2 A
# 4 3
# 5 4 B
# 6 5
# 7 6 C
# 8 7
# 9 8 D
当然,可以在加载后手动删除任何虚假电平。但是我想知道是否有一种方法可以可靠地保存然后在不更改RAT的情况下加载Geotiff。