使用elevatr包获取瑞士高程数据时遇零长度参数错误求助
解决elevatr包获取瑞士高程数据时的"zero length argument"错误
这个错误的核心原因是get_elev_raster接收的locations参数为空或格式不兼容,导致内部逻辑判断触发空值报错,大概率是rgeoboundaries::geoboundaries("Switzerland")未正确返回瑞士的边界数据。
解决步骤:
先验证边界数据有效性
运行以下代码检查获取的边界是否正常:swiss_bound <- rgeoboundaries::geoboundaries("Switzerland") class(swiss_bound) dim(swiss_bound) head(swiss_bound)如果
dim(swiss_bound)返回NULL或行数为0,说明边界获取失败。重新获取有效边界
尝试给geoboundaries指定行政级别参数:swiss_bound <- rgeoboundaries::geoboundaries("Switzerland", type = "ADM0")若仍无效,改用
rnaturalearth包获取边界(首次使用需安装):install.packages("rnaturalearth") library(rnaturalearth) swiss_bound <- ne_countries(country = "Switzerland", returnclass = "sf")重新调用高程获取函数
确认边界数据正常后,再次执行:elevation_data <- get_elev_raster(locations = swiss_bound, z = 10)备选方案:手动用边界框获取
如果边界对象始终有问题,直接用瑞士的WGS84坐标系边界框:swiss_bbox <- c(5.9559, 45.8179, 10.4921, 47.8085) elevation_data <- get_elev_raster(locations = swiss_bbox, z = 10, prj = "+proj=longlat +datum=WGS84")
内容的提问来源于stack exchange,提问作者mzkrc
相关产品推荐
相关产品推荐

