0

我运行了一些物种分布模型 (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”的像素的面积?

谢谢大家的关注。

4

0 回答 0