读取Netcdf子类别并转换为网格

时间:2015-11-18 16:10:48

标签: r raster netcdf

我也在堆栈gis 1上发布了这个问题。从具有子类别的netcdf4数据,我希望能够读取"Retrieval/fs"变量。我也想阅读它们并转换为栅格网格,但似乎栅格不支持netcdf4。我很感激任何建议。

library(ncdf4)
library(raster)
file <- "http://140906_B7101Ar_150909171225s.nc4"

names(file$var)
"latitude" ... "longitude"... "Retrieval/fs"

lat <- raster(file, varname="latitude")
lon <- raster(file, varname="longitude")

Error in (function (classes, fdef, mtable)  :
unable to find an inherited method for function ‘raster’ for signature ‘"ncdf4"’

2 个答案:

答案 0 :(得分:3)

raster适用于ncdf4您现在正在显示实际代码。 file是一个字符向量。你做不到names(file$var)(至少你不会得到&#34;纬度&#34; ......&#34;经度&#34; ......&#34;检索/ fs&# 34;所以file可能是ncdf4对象(请参阅错误消息),而raster函数需要文件名(但不是网址)。

如果您下载文件然后执行

library(raster)
x <- brick(filename, var="Retrieval/fs")

如果 ncdf文件有常规的栅格数据,那么事情应该有效。

然而,它并非如此,您无法直接将其导入为栅格。相反,您可以从文件中获取lat和lon以及值,将它们视为点,然后栅格化(插值)这些以获得常规栅格。

答案 1 :(得分:0)

以下是我问的问题的答案。由于数据没有网格化,我检索lon和lat信息以及变量以创建数据帧。

fs <- ncvar_get(ncfile, "Retrieval/fs")
xlon <- ncvar_get(ncfile, "longitude")
xlat <- ncvar_get(ncfile, "latitude")
d <- data.frame( as.vector(xlon),as.vector(xlat), as.vector(fs))# create a dataframe
coordinates(d) <- c("xlon","xlat")
proj4string(d) <- CRS("+proj=longlat") 
spoint <- SpatialPoints(coords = d) #create a spatial point object