1

有两个具有相同尺寸的栅格(值是带有 5 位小数的浮点数)。下面给出的代码从两个栅格 r 和 r1 中生成一个文件。如果 r 较大,则放蓝色,否则放红色。

这段代码运行良好,但我被要求添加另一个条件。此代码如何工作:

如果 r 为 0.229 且 r1 为 0.228,则 r 更大(注意小数点后三位)。我需要的是指定前两位小数,例如:

     r= 0.228   r1=0.224   put  yellow colour(they are rather similar)
     r= 0.238   r1=0.224   put  blue colour(r is bigger)
     r= 0.128   r1=0.224   put  red colour(r is lower)

1-读取第一个文件 r

     conn <- file("C:\\corr.bin","rb")
     corr<- readBin(conn, numeric(), size=4,  n=1440*720, signed=TRUE)

2-读取第二个文件r1:

    conne <- file("C:\\cor06.bin","rb")
    over<-readBin(conne, numeric(), size=4,  n=1440*720, signed=TRUE)

计算:

 r <-raster(t(matrix((data=corr), ncol=720, nrow=1440)))
 r1 <- raster(t(matrix((data=over), ncol=720, nrow=1440)))
 m <- r > r1 #Compare the two rasters
 image( m , col = c("blue" , "red" ) )
4

1 回答 1

2

您现在想要根据一个大于另一个创建颜色,或者两者之间的差异小于 0.01。您可以像这样简单地执行此操作:

# Example data
r <- raster( system.file("external/test.grd", package="raster") )
r1 <- r * rnorm( ncell(r))

# Make new raster
m <- raster( r )

# 3 = Yellow , 2 = "Red" , 1 = "Blue"
values( m ) <- ifelse( abs( r[] - r1[] ) <= 0.01 , 3 , ifelse( r[] > r1[] , 1 , 2 ) )
image( m , col = c( 1 = "Blue" , 2 = "Red" , 3 = "Yellow" ) )

您可以使用value = "colour"参数样式来col确保将颜色分配给正确的级别。 在此处输入图像描述

于 2013-03-25T16:00:27.523 回答