我想从常规网格中绘制海面温度数据,但找不到正确的方法。我的数据采用 nc 格式,可以从http://www.nodc.noaa.gov/SatelliteData/pathfinder4km/下载
我使用此 R 代码访问数据,但尝试绘图时出现问题
library("ncdf")
download.file("ftp://ftp.nodc.noaa.gov/pub/data.nodc/pathfinder/Version5.2/2003/20030715000715-NODC-L3C_GHRSST-SSTskin-AVHRR_Pathfinder-PFV5.2_NOAA17_G_2003196_night-v02.0-fv02.0.nc", destfile="sst.nc")
data=open.ncdf("sst.nc")
x <- get.var.ncdf(data,"lon")
y <- get.var.ncdf(data,"lat")
sst=get.var.ncdf(data,"sea_surface_temperature")
filled.contour(x,y,sst, color = terrain.colors, asp = 1)
然后得到这个错误信息
错误 enfilled.contour(x, y, sst, color = terrain.colors, asp = 1) : 增加 'x' 和 'y' 值预期
我认为问题来自y坐标,纬度从90到-90。我在使用 akima 包创建新网格时看到了一些关于 stackoverflow 的问题,但在这种情况下应该没有必要。
在这里您可以找到数据文件的摘要
http://ubuntuone.com/1mIdYVqoePn24gKQbtXy7K
在此先感谢您的帮助
解决了
感谢保罗 Hiemstra
该点不是从数据集中读取 lat-lon 值,而是要知道矩阵中数据点的 i、j 坐标,然后选择我要绘制的地理区域。以下是对我有用的命令:
library("ncdf")
download.file("ftp://ftp.nodc.noaa.gov/pub/data.nodc/pathfinder/Version5.2/2003/20030715000715-NODC-L3C_GHRSST-SSTskin-AVHRR_Pathfinder-PFV5.2_NOAA17_G_2003196_night-v02.0-fv02.0.nc", destfile="sst.nc")
data=open.ncdf("sst.nc")
sst=get.var.ncdf(data,"sea_surface_temperature")
x = seq(1, 8640, length.out = nrow(sst)) # Matrix dimension 8640x4320
y = seq(1, 4320, length.out = ncol(sst))
sst1 <- sst[c(1000:1500),c(1000:1500)] # Subsetting a region
x = seq(1, 500, length.out = nrow(sst1))
y = seq(1, 500, length.out = ncol(sst1))
png(filename="sst.png",width=800,height=600,bg="white")
filled.contour(x,y,sst1, color = terrain.colors, asp = 1)
dev.off()
现在我必须弄清楚如何在 xy 坐标处用经度和纬度标记绘图。