R语言getSpatialData包get_records()函数products参数错误求助
解决getSpatialData::get_records()的"Argument 'products' must be a character containing at least one element"错误
这个错误的核心原因是:你调用get_records()时缺少了必填的products参数。collection参数仅指定数据大类(比如Sentinel-2),但函数需要明确具体的产品类型——以Sentinel-2为例,其下分不同级别的数据产品,必须通过products指定至少一个有效产品代码。
Sentinel-2的有效产品名称
Sentinel-2最常用的两类产品代码:
S2MSI1C:Level-1C大气表观反射率产品(未经过大气校正)S2MSI2A:Level-2A地表反射率产品(经过大气校正,直接可用作地表分析)
如果想查看该collection下所有可用产品,可运行以下命令获取详情:
get_product_info("Sentinel-2")
修正后的完整代码
在get_records()调用中添加products参数即可,示例如下:
# devtools::install_github("16EAGLE/getSpatialData") library(getSpatialData) library(sf) dat <- st_as_sf(st_sfc(st_polygon(list(rbind(c(-58.5, -34.9), c(-58.3, -34.9), c(-58.3, -34.6), c(-58.5, -34.6), c(-58.5, -34.9))))), crs = 4326) print(dat) login_CopHub(username = "xxxxx", password = "xxxxx") # 添加products参数,指定具体产品类型 out <- get_records(collection = "Sentinel-2", products = "S2MSI2A", # 可改用c("S2MSI1C", "S2MSI2A")同时查询两类产品 aoi = dat, time_range = c("2023-04-15", "2023-09-15"), max_cloud_cov = 20)
额外故障排查点
- 确认
login_CopHub()登录成功:若登录失败,后续查询会直接报错,需检查用户名密码是否正确 - AOI格式验证:你的代码已将多边形转为sf对象且CRS为WGS84(EPSG:4326),符合函数要求
- 时间范围合理性:确保时间范围在对应产品的上线时间之后(比如Sentinel-2 Level-2A从2017年开始提供)
内容的提问来源于stack exchange,提问作者chi2
相关产品推荐
相关产品推荐

