R语言处理图片的问题

我现在想处理两张地图
这两张地图的地区是一样的
都是栅格图 不同的是 第一张地图上面是带云彩的 第二张没有
在第一张地图 像素值为0的栅格(grid)代表有云彩
现在我想用R写一个函数来找到第一张图内像素值为0栅格(grid)的行列坐标(在第几行 第几列)
然后把第二张地图内行列坐标相同的栅格(grid)的像素值改为NA

我的想法是写一个if loop来检测第一张图内像素值为0的栅格(grid)坐标
但是我发现if loop一旦测到不为0的值就会报错(TRURE FALSE value need)
请问该怎么做
这是我的code 谢谢
setwd("E:/Landsat-data-NASA atm-corrected/sample_day1")
restdir2 <- ("E:/Landsat-data-NASA atm-corrected/sample_day1")
n3 <- list.files(restdir2, pattern="*band4_clip_1.tif", full.names=TRUE)
n4 <- list.files(restdir2, pattern="*cloud_qa_clip_1.tif", full.names=TRUE)

本帖最后由 wangluan 于 2015-4-16 00:55 编辑

你首先要测试的是下面这段有没有问题,然后在封装成函数
x=10;y=10;
layer <- raster(n4)
layer2 <- raster(n3)
for(c in 1:x)
{
for(r in 1:y)
{
if(layer[c,r]==0)
{
nl<- layer2
nl[c,r]<-NA
writeRaster(nl, "cloud.tif")
}
else
{ layer[c,r]=layer2[c,r]}
}
}
> a=NA;if(a==0){}
Error in if (a == 0) { : missing value where TRUE/FALSE needed

不知道你问的是在同一图形中添加点(类似画散点图)还是要把屏幕一分为多。

添加的话,用完plot,添加点用points,添加线用lines。
简单点的应用类似:

plot(X,Y)
points(X,Y1)
这样的感觉。

一分为多的话,用split.screen。
上我自己最近写的代码做个例子:
jpeg(filename="geeseP3.jpeg") #画jpeg图
split.screen(c(1,2)) #分屏幕为左右两边
screen(1) #屏幕1预备输出
plot(X2,Y,type="p",xlab="X2",ylab="Y",main="Plotting of X2 and Y")
screen(2) #屏幕2预备输出
plot(X2,Y,type="l")
dev.off()

画出来的图大概是这个感觉:

不喜欢这个比例的话,也有命令可以调节图片长宽比例。这个略去不提。

另外推荐这个
http://wenku.baidu.com/link?url=mMnroYY14th1qiKzsFnTUVceptBVugQsrLbYFItaqMN25xftBQlMBThtyW5fsmIgkMWcWbkXyozKR85SFEb7VwDUhekqSBVDuOvskifRo7W
里面有列举了一些画图用的函数。追问

不 我不是用画图
这两个图片是tiff格式的地图
我只是想要用R修改第二张图的一些像素值
然后创建一个新图可以用ArcGIS打开的

温馨提示:答案为网友推荐,仅供参考
相似回答