从netcdf文件“增加x y值预期值”绘制数据时出错

时间:2013-05-03 07:38:33

标签: r plot netcdf

我想从常规网格中绘制海面温度数据,但无法找到正确的方法。我的数据采用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)

然后收到此错误消息

  

错误en filled.contour(x,y,sst,color = terrain.colors,asp = 1):   增加&#39; x&#39;并且&#39; y&#39;预期值

我认为问题来自y坐标,纬度从90到90。我在使用akima创建新网格时遇到了有关stackoverflow的一些问题 包装但在这种情况下不应该是必要的。

您可以在此处找到数据文件的摘要

http://ubuntuone.com/1mIdYVqoePn24gKQbtXy7K

提前感谢您的帮助

解决

感谢Paul 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()

现在我必须弄清楚如何在x-y坐标处用长线和纬度标记图。

2 个答案:

答案 0 :(得分:2)

问题可能如下。您的xy变量的大小与sst相同,即它们提供xy坐标的地图。 filled_contour函数需要的不是这些地图,而是更简单地xy坐标与sst中与x增加{{1}}值的行和列相关联的坐标。

答案 1 :(得分:2)

虽然我的问题是在Paul Hiemstra的帮助下解决的,但我仍然在调查我的netcdf数据,并在Stackoverflow中发现了另一个帮助我的线程。它使用image而不是filled.contour。

您可以在The variable from a netcdf file comes out flipped

找到该主题

现在,这是我用来绘制SST数据的代码:

library("ncdf")
download.file("ftp://ftp.nodc.noaa.gov/pub/data.nodc/pathfinder/Version5.2/2000/20000107010122-NODC-L3C_GHRSST-SSTskin-AVHRR_Pathfinder-PFV5.2_NOAA14_G_2000007_night-v02.0-fv01.0.nc", destfile="sst.nc")
data=open.ncdf("sst.nc")


sst=get.var.ncdf(data,"sea_surface_temperature")
lon=get.var.ncdf(data,"lon")
lat=get.var.ncdf(data,"lat")

data$dim$lon$vals -> lon
data$dim$lat$vals -> lat
lat <- rev(lat)
sst <- sst[,ncol(sst):1]
png(filename="sst2.png",width=1215,height=607,bg="white")
image(lon, lat, sst, zlim=c(270,320), col = heat.colors(37))
library("sp", lib.loc="/usr/lib/R/site-library")
library("maptools", lib.loc="/usr/lib/R/site-library")
data(wrld_simpl)
plot(wrld_simpl, add = TRUE)
dev.off()

导致此图像: enter image description here