簡體   English   中英

如何將3列數據幀保存到R中的NetCDF文件中?

[英]How can I save a 3 column data frame into a NetCDF file in R?

我有一個Nx3小節,我想保存到NetCDF(.nc)文件。 標語包含三列:

  1. 經度(lon)
  2. 緯度(緯度)
  3. 每個點的數據(可變)

如何將其保存到R中的NetCDF(.nc)文件? 到目前為止,我一直在使用柵格數據包,但結果混合:

# Be careful to call raster and dplyr in this specific order.
require(raster)
require(dplyr)
set.seed(10)
df <- expand.grid(lon = 1:10, lat=1:10) %>% as_tibble() %>% mutate(var1 = rnorm(100))

val <- df %>% select(var1) %>% pull()

coordinates(df) <- ~ lon + lat
gridded(df) <- TRUE
raster_df <- raster::raster(df)
projection(raster_df) <- CRS("+proj=longlat +datum=WGS84 +ellps=WGS84")
setValues(raster_df, val)
writeRaster(raster_df,
            filename = "file.nc",
            varname = "var1",
            format = "CDF")

我對此解決方案唯一的問題是,它似乎無法產生一致的輸出。 有時文件有時會損壞(即我無法再次打開它們),有趣的是,它們的大小都是相同的,考慮到原始數據並不完全相同(完全可能是經度和緯度),這根本不應該這樣。

我正在使用:

  1. Windows 10上的R 3.4.1
  2. dplyr 0.7.4
  3. 柵格 2.6-7

我願意使用其他替代方法(或其他軟件包)。

您的示例似乎陷入了很多不必要的困境。 這是一個簡單的版本:

library(raster)
set.seed(10)
r <- raster(xmn=0.5, xmx=10.5, ymn=0.5, ymx=10.5, nrow=10, ncol=10, vals=rnorm(100))
z <- writeRaster(r, filename = "file.nc", varname = "var1")
z

這似乎很好。

您的代碼中有一個明顯的錯誤: setValues(raster_df, val) 這應該是raster_df <- setValues(raster_df, val)values(raster_df) <- val

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM