You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用OpenTopography GET接口下载.tif后,R无法创建Raster图层问题

解决R无法读取OpenTopography下载的TIFF文件问题

核心问题定位

你的代码中创建RasterLayer时错误使用了system.file("display.tif", package="raster")——这个函数仅用于查找R包内置的示例文件,而你下载的display.tif保存在当前工作目录,因此该路径无法指向正确的文件,导致读取失败。

修正步骤

1. 修正文件读取路径

直接传入下载文件的本地路径,无需使用system.file():

# 替换原r1创建代码
r1 <- raster("./display.tif")
# 若当前工作目录就是文件所在目录,可简化为:
# r1 <- raster("display.tif")

2. 确认文件下载有效性

在读取前先检查文件是否存在、大小是否合理(避免下载到空文件或错误内容):

if (file.exists("./display.tif")) {
  cat("文件存在,大小:", file.size("./display.tif"), "字节\n")
} else {
  stop("文件未下载成功,请检查URL和API密钥是否正确")
}

3. 备选方案:使用terra包替代raster

raster包已进入维护模式,推荐使用更现代的terra包,兼容性与稳定性更佳:

# 若未安装terra先执行安装
# install.packages("terra")
library(terra)
r1 <- rast("./display.tif")
plot(r1)

4. 验证API请求正确性

直接在浏览器中打开生成的url,确认是否能正常下载TIFF文件,排查API密钥有效性或参数拼接错误:

# 打印生成的URL,复制到浏览器测试
print(url)

完整修正后的代码示例

library(raster)
library(rgdal)
library(elevatr)
library(rgeos)
library(leaflet)
library(RColorBrewer)
library(rgl)

r1 <- raster()
s1 <- stack()
base <- 'https://portal.opentopography.org/API/globaldem?demtype=AW3D30'
api_key <- '<API-KEY>'
tmp_south <- 36.738884
tmp_north <- 38.091337
tmp_west <- -120.168457
tmp_east <- -118.465576
url <- paste0(base, '&south=', tmp_south, '&north=', tmp_north, '&west=', tmp_west, '&east=', tmp_east, '&API_Key=', api_key)

# 下载文件
download.file(url, "./display.tif", mode = "wb")

# 检查文件状态
if (!file.exists("./display.tif")) {
  stop("下载失败,请检查URL和API密钥")
}

# 读取并显示栅格
r1 <- raster("./display.tif")
image(r1)

内容的提问来源于stack exchange,提问作者Ben Dennison

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 07:21:36