如何优化 r 中空间细化的速度

问题描述 投票:0回答:0

问题

我正在着手一个项目,我需要建造或多或少 30,000 种分布模型 (SDM),我已经测试了几个 想法。现在我的瓶颈是加快空间细化(对于 有很多存在的物种),这是我用 SpThin 做的 包。

我的想法是,由于 SpThin 的设计理念是您将获得 大多数存在,对于你拥有大量的物种来说,这是不需要的 存在。

所以我开始尝试外面的东西,也试着想出新的 自己的想法:

所以让我们加载包

library(terra)
library(spThin)
library(enmSdmX)
library(microbenchmark)

示例数据:

为了速度的缘故,这里有一个示例数据集,最后我会展示更多 复杂的数据集:

example <- structure(list(x = c(1.5, 2.5, 2, 5.5, 7.5), y = c(1.5, 2.5, 
                                                              2, 5.5, 7.5)), class = "data.frame", row.names = c(NA, -5L))

example$ID <- 1:nrow(example)
example$Sp <- "A"
example_spat <- vect(example, crs = "+proj=longlat +datum=WGS84", geom = c("x", "y"))

所以在这里你可以看到我创建的点

当我制作 80 公里的缓冲区时,我可以看到重叠

现在让我们使用微基准测试看看那里有什么:

Test <- microbenchmark::microbenchmark(
  A = enmSdmX::geoThin(example_spat, minDist = 80000), 
  B = enmSdmX::geoThin(example_spat, minDist = 80000, random = T),
  c = spThin::thin(loc.data = as.data.frame(example), thin.par = 80, reps = 1, write.files = F, write.log.file = F, lat.col = "x", long.col = "y", spec.col = "Sp"),
  times = 100)

如下图所示:

好像enmSdmX random是最快的

然而,正如您将看到的,随着更大的数据集,这种变化

更多数据会发生什么:

我用我正在开发的包测试了这个 这里

如果你想去那里你可以这样安装

remotes::install_github("Sustainscapes/SDMWorkflows")
library(SDMWorkflows)

Presences <- SDMWorkflows::GetOccs(Species = c("Abies concolor"), WriteFile = FALSE, limit = 2000)
Cleaned <- clean_presences(Presences[[1]])

spat_vect <- terra::vect(as.data.frame(Cleaned), geom=c("decimalLongitude", "decimalLatitude"), crs = "+proj=longlat +datum=WGS84")
Test <- microbenchmark::microbenchmark(
  A = enmSdmX::geoThin(spat_vect, minDist = 10000), 
  B = enmSdmX::geoThin(spat_vect, minDist = 10000, random = T),
  c = spThin::thin(loc.data = as.data.frame(example), thin.par = 10, reps = 1, write.files = F, write.log.file = F, lat.col = "x", long.col = "y", spec.col = "Sp"),
  times = 20)

如下图所示:

现在它几乎倒过来了,SpThin 是最快的,现在这对我来说是个坏消息,因为我在具有大型数据集的物种中遇到了 SpThin 的瓶颈。我尝试构建 2 或 3 个新函数,但到目前为止,没有一个更快。任何想法都会有很大帮助

r sf rgdal terra
© www.soinside.com 2019 - 2024. All rights reserved.