可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I also posted this question on stack gis 1. From the netcdf4 data that have sub categories, I want to be able to read "Retrieval/fs"
variable. I also want to read them and convert to raster girds, but it seems that raster doesn't support netcdf4. I appreciate any suggestions.
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"’
回答1:
raster
does work with ncdf4
You are now showing actual code. file
is a character vector. You cannot do names(file$var)
with that (at least you won't get "latitude" ... "longitude"... "Retrieval/fs". So file
is probably ncdf4
object (see the error message), while the raster
function expects a filename (but not a url).
If you download the file and then do
library(raster) x <- brick(filename, var="Retrieval/fs")
Things should work if the ncdf file had regular raster data.
However, it does not so you cannot directly import this as a raster. Instead you can get the lat and lon and values from the files, treat these as points and then rasterize (interpolate) these to get a regular raster.
回答2:
Here is the answer to the question I asked. Since the data is not gridded, I retrieve the lon and lat information along with the variables to create a dataframe.
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