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

.asc转.tif栅格失败求助:ERSST数据集转换报错及投影疑问

解决ERSST ASCII文件转栅格的问题

问题根源

你遇到的错误不是投影问题,而是这个ERSST的.asc文件并非标准的ESRI ASCII栅格格式——它没有标准ASC文件必需的头信息(比如ncols、nrows、cellsize等),只有纯数值数据,所以terra::rast调用GDAL读取时会解析失败。

解决方案

根据README里的网格信息,我们可以手动构建栅格:

  • 计算行列数:
    • 纬度范围-88°到88°,步长2°,共(88 - (-88))/2 + 1 = 89行
    • 经度范围0°到358°,步长2°,共(358 - 0)/2 + 1 = 180列
  • 读取纯数据并转换为栅格,手动设置地理参数

完整R代码

library(terra)

# 下载文件
url <- "https://www.ncei.noaa.gov/pub/data/cmb/ersst/v5/ascii/ersst.v5.1854.asc"
f <- basename(url)
download.file(url, f, mode="wb")

# 读取纯数据,处理缺失值
data <- scan(f, na.strings = "-9999")
# 转换为矩阵并调整行列顺序匹配地理方向
mat <- matrix(data, ncol=180, byrow=TRUE)
mat <- t(mat)
mat <- mat[, ncol(mat):1]

# 创建SpatRaster并设置地理属性
r <- rast(mat)
ext(r) <- c(0, 360, -88, 88)
res(r) <- c(2, 2)
# 设置标准经纬度投影WGS84
crs(r) <- "EPSG:4326"

# 转换单位:原始数据是100×℃,需除以100
r <- r / 100

# 绘图验证
plot(r, main="1854年ERSST海表温度")

关于投影的说明

这个全球海温数据集是经纬度地理坐标,最适合用WGS84(EPSG:4326)投影,这也是大多数全球气候数据集的默认投影。如果需要和其他NOAA数据集匹配,也可以使用NAD83(EPSG:4269),两者差异极小,对全球尺度数据几乎没有影响。

内容的提问来源于stack exchange,提问作者Pengcheng Lai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:27:22