我运行了一些物种分布模型(SDM),使用了最大的“dismo”#。几个物种的包装,所以我把每个都保存为光栅文件。
之后,我根据确定的阈值将此环境适用性栅格(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)。然而,我为其他物种做了这个,因此其他的栅格,结果保持不变,尽管每个物种都有一个独特的二元图。
如何仅为具有值&#34; 1&#34;的像素计算面积?在R?
中的二进制地图栅格中谢谢大家的关注。