我也在堆栈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"’
答案 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