【问题标题】:Error when trying to import NetCDF to R尝试将 NetCDF 导入 R 时出错
【发布时间】:2013-05-02 19:59:44
【问题描述】:

我正在努力在 R 中打开 NetCDF 文件。 当我尝试用

打开它时
library(ncdf)
# read in NetCDF file
maize.nc<-open.ncdf("C:/Users/Jo/Desktop/pft_harvest_maize.nc")

我收到以下错误消息:

 Error in R_nc_open: NetCDF: Unknown file format
 Error in open.ncdf("C:/Users/Jo/Desktop/pft_harvest_maize.nc") : 
   Error in open.ncdf trying to open file C:/Users/Jo/Desktop/pft_harvest_maize.nc

奇怪的是,另一个带有 Runoff-Data 的 NetCDF 文件从完全相同的模拟中以完全相同的数据类型打开而没有任何问题。

文件大小的差异是 Runoff:56.1 MB(58,870,472 字节)和收获:149 MB(156,968,508 字节)。所以文件实际上并没有太大而不会在打开时失败。有谁知道我可以如何追溯导致此问题的错误??

使用 RNetCDF 包我遇到了同样的问题 (Error: NetCDF: Unknown file format)

从 ncdump 我得到:

netcdf pft_harvest_maize {
dimensions:
        time = 199 ;
        npft = 32 ;
        latitude = 78 ;
        longitude = 79 ;
variables:
        string NamePFT(npft) ;
        int time(time) ;
                time:units = "Years" ;
        float latitude(latitude) ;
                latitude:units = "degrees_north" ;
                latitude:long_name = "latitude" ;
            latitude:standard_name = "latitude" ;
            latitude:axis = "Y" ;
    float longitude(longitude) ;
            longitude:units = "degrees_east" ;
            longitude:long_name = "longitude" ;
            longitude:standard_name = "longitude" ;
            longitude:axis = "X" ;
    float harvest(time, npft, latitude, longitude) ;
            harvest:units = "gC/m2/yr" ;
            harvest:long_name = "harvested carbon" ;
            harvest:missing_value = -9999.99f ;
            harvest:_FillValue = -9999.99f 
}

文件可以在这里找到: netCDF-file

【问题讨论】:

    标签: r netcdf data-import


    【解决方案1】:

    来自 ncdump -k 的转储将 netcdf 文件格式设为 netCDF-4。我能够使用 ncdf4 包打开文件,因为 ncdf 似乎不向后兼容版本 4 文件:

    "但是ncdf包没有提供netcdf的接口 版本 4 文件。”

    来自ncdf4 文档。

    library(ncdf4)
    mycdf <- nc_open(file.choose(), verbose = TRUE, write = FALSE)
    timedata <- ncvar_get(mycdf,'time')
    lat <- ncvar_get(mycdf,'latitude')
    long <- ncvar_get(mycdf,'longitude')
    harvestdata <- ncvar_get(mycdf,'harvest')
    
    str(harvestdata)
    

    给予

    num [1:79, 1:78, 1:32, 1:199] NA NA NA NA NA NA NA NA NA NA ...
    

    【讨论】:

    • 使用 ncdf4 为我工作...在 win 64 位下安装包有点复杂,但现在我可以读取文件了。谢谢!
    【解决方案2】:

    我认为收获玉米的 netcdf 文件只是损坏了,甚至不是 netcdf 文件(文件名没有说明真实内容)。尝试在NCView 中打开它或使用ncdump 转储,如果这些工具也失败,您的文件已损坏或不完整。此外,如果您希望我们提供帮助,您需要提供您的文件。

    【讨论】:

    • @保罗·希姆斯特拉。我已经转储了该文件,但我对结果的解释是,它是一个 ncdf 文件。请参阅我上面的编辑。我还提供了一个链接,您可以在其中找到该文件。
    猜你喜欢
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    相关资源
    最近更新 更多