-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