如何将特定颜色转移到r中的光栅图像

3
我想知道在 r 中是否可以将特定的颜色分配给栅格单元格。我知道“raster”包中的“rasterize”函数可以在给定值的坐标处向栅格传输值,但我是否可以仅将颜色传输到单元格的特定位置?换句话说,我有一个给定的栅格和一个外部数据库,其中包含三列(x、y 和 color)。我想将第三列中的颜色传输到 x-y 位置上的栅格单元格中。以下是我的代码:
library(raster)

BaseRaster<-raster(xmn=1, xmx=4, ymn=1, ymx=4,resolution=1) #create an empty raster

Database<-data.frame(Xcols=c(1.5, 2.5,3.5,   1.5, 2.5,3.5,  1.5, 2.5,3.5) ,
Ycols= c(1.5, 1.5,1.5,   2.5, 2.5,2.5,  3.5, 3.5,3.5),
Cols=c("#FFF423","#FFFF14","#FFE20F","#FFF80A","#FFCB07","#FFE100","#FFEE0B","#FDEE0A","#FFE209"))

问题是如何将数据库第三列中的颜色传输到光栅图中,给定数据库中第一列和第二列提供的坐标? 不幸的是,rasterize无法完成此任务。

ColorRaster= rasterize(c(Database$Xcols, Database$Ycols), BaseRaster, Database $Cols)
1个回答

1
假设BaseRaster是您的光栅对象,数据库中有颜色,以下内容应该有效:
plot(BaseRaster, col=colorRampPalette(database$color))(255)

如需更多信息,请参考绘图{光栅}


谢谢Vishal。我尝试了你的代码,但是我得到了以下错误:“没有与此RasterLayer相关联的值”。 - Camilo
如果将光栅填充为1(例如:BaseRaster [] = 1),然后运行您的代码,就会出现以下错误:“Error in col[x] : object of type 'closure' is not subsettable”。 - Camilo
这不是创建光栅图的方法,Camilo。尝试使用BaseRaster <- as.raster(matrix(hcl(0, 80, seq(50, 80, 10)), nrow = 4, ncol = 5))。更多关于光栅图的帮助信息:https://stat.ethz.ch/R-manual/R-devel/library/grDevices/html/as.raster.html - Vishal R

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接