Read Netcdf sub categories and convert to grid

匿名 (未验证) 提交于 2019-12-03 10:10:24

问题:

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 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!