我运行了一些物种分布模型 (SDM),对几个物种使用了“dismo”包的 maxent,所以我将每个物种保存为一个光栅文件。
之后,我根据确定的阈值将此环境适宜性栅格(SDM 结果)转换为二进制地图。
我使用这个函数和这些命令行来进行转换:
bin <- function(x) {
ifelse(x <= 0.7, 0,
ifelse(x > 0.7, 1, NA)) }
sp_bin <- calc(spp, fun=bin) # "spp" is the object within my raster
writeRaster(sp_bin,filename='Results/RasterBin/Patagioenas_fasciata_bin.tif')
现在我有了该二进制地图的栅格(即,只有两个值,0 和 1)。
class : RasterLayer
dimensions : 1117, 1576, 1760392 (nrow, ncol, ncell)
resolution : 0.008333333, 0.008333333 (x, y)
extent : -68.39167, -55.25833, -0.7333333, 8.575 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
data source : C:\Users\Ramiro\Desktop\SDM\Results\RasterBin\Patagioenas_fasciata_bin.tif
names : Patagioenas_fasciata_bin
values : 0, 1 (min, max)
我尝试使用以下参数将像素的总和设为 1,假设其他像素为 0,因此总和将等于所有值为 1 的像素的面积:
cellStats(spp, stat='sum', na.rm=TRUE)
我得到了一个我认为正确的数值结果(12,471)。但是,我对其他物种以及其他栅格进行了此操作,结果保持不变,尽管每个物种都有不同的二元图。
如何仅计算 R 中二进制地图栅格中值为“1”的像素的面积?
谢谢大家的关注。