R语言处理图片的问题
我现在想处理两张地图这两张地图的地区是一样的都是栅格图不同的是第一张地图上面是带云彩的第二张没有在第一张地图像素值为0的栅格(grid)代表有云彩现在我想用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 展开
这两张地图的地区是一样的
都是栅格图 不同的是 第一张地图上面是带云彩的 第二张没有
在第一张地图 像素值为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 展开
1个回答
推荐于2016-11-07 · 知道合伙人互联网行家
关注
展开全部
不知道你问的是在同一图形中添加点(类似画散点图)还是要把屏幕一分为多。
添加的话,用完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
里面有列举了一些画图用的函数。
添加的话,用完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打开的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询