-1
A
回答
0
以下代码设置两个大型栅格堆栈,并使用一个掩盖另一个栅格的值。请注意,这些测试是在32核心服务器上完成的。使用foreach的改进高度依赖于高性能计算机的使用。
library(foreach)
library(doParallel)
library(raster)
xy = matrix(rnorm(1000^2),1000,1000)
# Turn the matrix into a raster
rast = raster(xy)
# Give it lat/lon coords for 36-37°E, 3-2°S
extent(rast) = c(36,37,-3,-2)
# ... and assign a projection
projection(rast) = CRS("+proj=longlat +datum=WGS84")
# create first random raster stack
raster_list = list()
for(i in 1:300){
set.seed(i)
rast[]= matrix(rnorm(1000^2),1000,1000)
raster_list = c(raster_list,rast)
}
rast_stack = stack(raster_list)
backup_raster_stack = rast_stack # store a backup to reset
plot(rast_stack[[3]])
# create second random raster stack
raster_list2 = list()
for(i in 1:300){
set.seed(i+25)
rast[]= matrix(rnorm(1000^2),1000,1000)
raster_list2 = c(raster_list2,rast)
}
rast_stack2 = stack(raster_list2)
plot(rast_stack2[[3]])
##################
# do value replacement the normal way
ptm <- proc.time()
rast_stack[rast_stack2>1]=NA
proc.time() - ptm
用户系统经过
426.872 23.734 462.304
# reset values
raster_stack = backup_raster_stack
#################
# do value replacement in calc
ptm <- proc.time()
calc(rast_stack , function(x) { rast_stack[ rast_stack2 > 1 ] = NA; return(x) })
proc.time() - ptm
用户系统经过
491.732 30.242 530.230
# reset values
raster_stack = backup_raster_stack
#################
# do value replacement in foreach loop
registerDoParallel(32)
ptm <- proc.time()
foreach(i=1:dim(rast_stack)[3]) %do% { rast_stack[[i]][rast_stack2[[i]]>1]=NA}
proc.time() - ptm
用户系统经过
57.654 1.692 59.378
相关问题
- 1. R:使用第二个栅格堆栈中的图层替换栅格堆栈中的多个图层
- 2. 如何加速使用巨大栅格堆栈的计算?
- 3. 从较大的栅格堆栈中创建栅格堆栈的许多子集
- 4. 如何用R中另一个栅格的值替换大栅格中的NA?
- 5. r - 栅格堆栈中更快的平均值计算
- 6. 3D栅格堆栈图
- 7. 高效地从R中的栅格堆栈访问数据
- 8. [R计算堆土机距离大型栅格
- 9. r栅格覆盖函数 - 与landsat堆栈错误
- 10. 在R中合并2个或更多光栅堆栈R
- 11. 为什么R在重命名栅格堆栈层时添加“x”
- 12. 如何在将大空间多边形数据框转换为栅格堆栈时提高速度
- 13. 堆栈的大小和值类型
- 14. 将栅格堆栈中的光栅名称导出到R中的NetCDF文件中
- 15. FontAwesome堆栈替换悬停
- 16. 增加堆栈大小c#
- 17. 如何在R代码中将小于0的栅格值替换为NA
- 18. 替换活动堆栈中的活动
- 19. 增加堆栈大小
- 20. R - 结合索引从矢量和栅格堆栈层的函数
- 21. 堆栈中的迅速
- 22. 当应用于栅格堆栈时,栅格计算仅返回一个图层
- 23. 如何从栅格堆栈中选取最频繁的值(模式)
- 24. 替代堆栈
- 25. 堆栈函数仅堆栈最后一个光栅文件
- 26. 栅格堆栈正在绘制经纬度坐标
- 27. 增加AsyncTask堆栈大小?
- 28. 堆栈,有界堆栈和Liskov替换属性
- 29. 增加MSXML中的XSL堆栈大小
- 30. 从Linux上的R列表中错误地堆叠栅格
我想你应该修改为,就目前而言,它看起来并不像任何 –
感谢您的问题!欣赏编辑。 – mmann1123