我从
下载了一个nc文件f=open.ncdf("0101.nc")
dimensions:"
[1] "Longitude Size: 1440"
[1] "Latitude Size: 720"
[1] "------------------------"
然后我想用这个:Bit Mask
A = get.var.ncdf(nc=f,varid="mask",verbose=TRUE)
我键入A
,但我发现值为
0 2 4 6 8 12 16 24 32 34 40 64 128
然而,文件的发起人说这是BitMAsks并给了我这个分类:
zen条件包含在位掩码中,第一位(为2 ^ 1;遵循C约定,我们从第零位开始计数)打开。以下是位定义列表:
答案 0 :(得分:1)
当尝试以二进制格式有效地存储数据时,这些类型的make字段并不罕见。首先,我们可以将您的2 ^ n值表转换为整数进行解码
vv<-c("not land"=1,"ice"=2, "no valid data"=4, "high depth"=8,
"high depth in band"=16, "negatl depth in-band"=32,
"negepth in-band"=64, "no tband"=128, "no nband"=256)
然后你可以使用这样的函数进行解码
decode<-function(x) {
sapply(x, function(z) {
paste(names(vv[bitwAnd(z,vv)>0]), collapse=",")
})
}
这里我们使用bitwAnd()
将观察到的值与每个潜在的标志进行比较。如果我们想看到所有可能的值,我们可以做
decode(sort(unique(c(A))))
# [1] "" "ice"
# [3] "no valid data" "ice,no valid data"
# [5] "high depth" "high depth in band"
# [7] "high depth,high depth in band" "negatl depth in -band"
# [9] "negepth in-band" "no tband"
或者您可以一次解码一个
decode(16)
# [1] "high depth in band"