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

使用terra包保存ASC文件报错:无法在ASCII Grid文件中找到数据值

问题

可复现代码

library(terra)
ext1_boreal <- ext(-154.529, -104.855, 47.663, 70.4789)
x <- rast(ext1_boreal, res=.1, crs="epsg:4326")
values(x) <- 1:ncell(x)

ext_EcoZone1 <- ext(-140.999, -122.812, 56.408, 64.700)
EcoZone2 <- vect(ext_EcoZone1, crs="epsg:4326")
x <- mask(x, EcoZone2)
f <- "D:/GitHub/MyProject/Outputs/Rasters/Explanatory/Testx.asc"
writeRaster(x, filename=f, overwrite=TRUE)

报错信息

Warning: D:/GitHub/MyProject/Outputs/Rasters/Explanatory/Testx.asc: Couldn't find data values in ASCII Grid file. (GDAL error 1)Error: [rast] cannot open this file as a SpatRaster: D:/GitHub/MyProject/Outputs/Rasters/Explanatory/Testx.asc

环境与现象

  • terra版本:1.7-71
  • R版本:4.3.3
  • 现象:可正常导出TIFF格式,导出ASC格式失败;通过QGIS将TIFF转为ASC后可正常导入R。
原因分析
  • ASCII Grid格式规范与GDAL驱动处理差异:ASCII Grid是纯文本栅格格式,要求必须明确标记NODATA_value识别无效值。用mask处理后栅格存在大量NA值,当前版本的terra调用GDAL写入ASC时,可能未正确将NA映射为符合规范的NoData值,或写入的数据块结构不符合GDAL读取ASC的校验逻辑,导致读取时被判定为“找不到数据值”。
  • terra版本特定bug:你使用的terra 1.7-71可能在处理带大量NoData的栅格导出ASC时存在兼容性问题,与GDAL的交互逻辑有疏漏。而QGIS调用的GDAL驱动在转换TIFF到ASC时,会严格遵循格式规范,正确添加NoData标记并组织数据结构,因此生成的ASC文件可正常被R识别。
  • 路径/权限因素可排除:同一路径下能正常导出TIFF,说明路径有效且有写入权限,无需考虑该因素。

内容的提问来源于stack exchange,提问作者Mark Thompson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 12:51:03