我正在 R Shiny 中开发一个小型应用程序。部分应用程序需要查询 GBIF 以下载物种出现数据。这可以使用rgbif
. 该功能rgbif::occ_download()
将下载数据并rgbif::occ_download_meta()
检查 GBIF 是否满足您的要求。例如:
geometry <- "POLYGON((30.1 10.1,40 40,20 40,10 20,30.1 10.1))"
res <- occ_download(paste0("geometry within ", geometry), type = "within", format = "SPECIES_LIST")
occ_download_meta(res)
<<gbif download metadata>>
Status: RUNNING
Format: SPECIES_LIST
Download key: 0004089-190415153152247
Created: 2019-04-25T09:18:20.952+0000
Modified: 2019-04-25T09:18:21.045+0000
Download link: http://api.gbif.org/v1/occurrence/download/request/0004089-190415153152247.zip
Total records: 0
到目前为止,一切都很好。但是,在完成之前(当 Status = SUCCEEDED 时),以下函数rgbif::occ_download_get()
无法下载用于下游分析的数据。occ_download_meta(res)
如何让会话等到从 GBIF 下载完成?我无法将等待时间硬编码到脚本中,因为不同大小的范围将花费 GBIF 更长或更短的时间来处理。此外,查询服务的其他活动用户的数量也可能会改变等待时间。因此,在继续之前,我需要某种状态 == 成功的标志。
我在下面复制了一些带有注释的骨架代码。
library(rgbif)
geometry <- "POLYGON((30.1 10.1,40 40,20 40,10 20,30.1 10.1))" # Define boundary
res <- occ_download(paste0("geometry within ", geometry), type = "within", format = "SPECIES_LIST")
# WAIT HERE UNTIL Status == SUCCEEDED
occ_download_meta(res)
x <- occ_download_get(res, overwrite = TRUE) # Download data
data<-occ_download_import(x) # Import into R