我想使用栅格属性表信息来创建栅格的图例,例如栅格1,并仅为显示在栅格中的类显示图例。我建立一个例子来解释我想要得到的东西。

1/建立栅格

r <- raster(ncol=10, nrow=10)
values(r) <-sample(1:3,ncell(r),replace=T)

2/添加栅格属性表
r <- ratify(r) # build the Raster Attibute table
rat <- levels(r)[[1]]#get the values of the unique cell frot the attribute table
rat$legend <- c('Class A', 'Class B', 'Class C')
levels(r) <- rat

3/绘制栅格1
my_col=c('blue','red','green')
plot(r,col=my_col,legend=F,box=F,axes=F)
legend(x='top', legend =rat$legend,fill = my_col)

我想用链接到ratser属性表的栅格属性替换legend =rat$legend参数。我尝试使用levels()c(levels(r)[[1]][1])进行不同的组合,但我生成一个列表,而不生成不是图例参数中不可用的字符。

4/将栅格裁剪并绘制到只有2个类的部分(此处是右下角的4个像素)2
rcrop<-crop(r,extent(r,9,10,9,10))
plot(rcrop,col=my_col,legend=F,box=F,axes=F)

因此,对于第二个无花果,我只想自动显示栅格2上显示的类的图例。



这是Roman 4提出的解决方案。

最佳答案

如果您愿意使用lattice图形,可以使用levelplot方法
rasterVis中定义
package能够
根据RAT显示带有图例的分类数据:

library(raster)
library(rasterVis)

r <- raster(ncol=10, nrow=10)
values(r) <- rep(1:4, each=25)

r <- ratify(r)
rat <- levels(r)[[1]]
rat$legend <- c('Class A', 'Class B', 'Class C', 'Class D')
levels(r) <- rat

levelplot(r)

而且我有
commited some changes
在里面
development version available at GitHub
管理RAT等级并不全部存在的Raster*
数据:
rcrop <- crop(r,extent(r,6,10,1,10))
levelplot(rcrop)
rcrop <- crop(r,extent(r,1,5,1,10))
levelplot(rcrop)

关于r - 如何直接使用栅格属性表为栅格添加图例并仅显示栅格中显示的类的图例?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19586945/

10-12 22:38