首页 > 解决方案 > 从栅格/数据框创建有效的随机采样掩码

问题描述

对于空间数据分析,我必须从栅格文件中随机抽取像素。~100 个像素具有相同的值,我想随机取其中一个,我总共有 ~180 000 个唯一值/18 个 Mio 像素。我有一个解决方案,但它的工作效率很低(现在运行了近 20 个小时,而且只有 ~1/3),而且我想运行多个测试,如果有人能给我一个提示,我会很高兴更高效的解决方案!到目前为止我的代码:

# create data frame of index layer; r.index is a raster file
df.index <- as.data.frame(r.index)
names(df.index)[1] <- "index"
head(df.index)

# get number of different indices
n <- maxValue(r.index)

#create data frame to fill in the randomly chosen indices of df.index
df.index.sample <- data.frame(c(1:n))
names(df.index.sample)[1] <- "index_number"
df.index.sample["index"] <- NA


for (i in 1:n){
  index.i <- which(df.index==i)
  index.i.sample <- sample(index.i, 1)
  df.index.sample[i,2] <- index.i.sample
}

df.index.sample.r <- df.index
df.index.sample.r[1] <- NA
df.index.sample.r[df.index.sample$index_numbers] <- df.index.sample$index_numbers

r.index.sample <- r.index
r.index.sample[,] <- NA
r.index.sample <- setValues(r.index.sample, df.index.sample.r)

非常感谢!

标签: rdataframeraster

解决方案


推荐阅读