我已经搜索了很长时间,但仍然无法弄清楚这一点。似乎光栅包是要提取的,但只能从二维数据中提取。
这个四维数据的例子,一个netCDF文件包含连续三天(72小时)的每小时压力水平(4级)气温。https://drive.google.com/file/d/1UIiX9-xHrtH2FT1torg53iPxyzLxSYQu/view?usp=sharing。
我只想提取一些点位置(xy)的温度,以及相应的日期和高度(气压)。然后将其作为附加列添加到参考数据中:
ref_df <- structure(list(Latitude = c(40.68, 45.64, 50.31, 51.17,
44.493564), Longitude = c(96.29, 97.107, 98.21,
100.67, 105.01), timestamp = c("2019-05-01 15:52:14",
"2019-05-01 18:52:29", "2019-05-02 21:52:30", "2019-05-03 00:52:29",
"2019-05-03 03:52:15"), altitude_hPa = c(530, 570, 590, 600,
610)), class = "data.frame", row.names = c(NA, -5L))
我尝试了下面的方法,将4维netCDF数据导入R:但是似乎不起作用。
library(ncdf4)
ncdata <- nc_open(ncfile)
temp <- ncvar_get(ncdata)
dim(temp) # this shows index of layers in each dimention, but how to link this?
如果有人能帮忙,我将不胜感激。蝙蝠
光栅
包是为三维数据(x、y和时间)设置的,但您可以在第四维上循环。这里有重叠
:
library(raster)
xy <- matrix(c(96.29, 97.11, 98.21, 100.67, 105.01, 40.68, 45.64, 50.31, 51.17, 44.49), ncol=2)
colnames(xy) <- c("lon", "lat")
v <- lapply(1:4, function(i) {
b <- brick("download.nc", level=i)
s <- extract(b, xy)
})
v
是一个包含四个元素的列表(每个压力级一个),每个元素都有一个矩阵,其行数与xy
相同,列数与download.nc
中的日期数相同
或者得到一个这样的矩阵:
v <- lapply(1:4, function(i) {
b <- brick("download.nc", level=i)
s <- cbind(level=i, extract(b, xy))
})
vv <- do.call(rbind, v)
vv[1:8, 1:3]
# level X2019.05.01.00.00.00 X2019.05.01.01.00.00
#[1,] 1 259.8976 259.9743
#[2,] 1 254.7902 255.7008
#[3,] 1 250.4961 250.6820
#[4,] 1 251.0643 250.8548
#[5,] 1 250.0989 250.1968
#[6,] 2 265.6487 265.6842
#[7,] 2 258.4251 259.0856
#[8,] 2 256.4043 256.4468
一个与R有关的新手问题。如何使用R从netdcf文件中提取特定位置的时间序列数据。例如,下面的快照显示位置(1、2)的时间序列为13、28、43。 提前谢谢。
我在1998-01-01到1998-12-31期间使用TRMM_3B42_Daily产品创建了这个文件。这是我在R中使用的脚本: 通过这个链接,我试图提取值来绘制时间序列,但似乎我正在平均两个单元格的值,而不仅仅是提取单个单元格的值。我该如何解决这个问题?有没有办法创建一个循环,以便它提取不同单元格的值?(在这种情况下,它将是13 x 21=273) 我还发现了另外两个问题,即 excel 文件中
我一直在寻找退出来解决我的问题,但我仍然无法解决它。我想将一个 nedCDF 文件导入 R 中。喜欢这个: 我得到以下内容 然后我想提取降水数据,例如一天中的一个网格单元: 但是我收到错误消息,例如:n_prec[1, 1, 1, 1]中的错误:错误的尺寸数 我不明白,因为数据集有维度。但是我可能误解了一些东西,因为我对r很陌生。 我很高兴得到任何帮助。曼纽尔
这是我第一次使用堆栈溢出,我的编码技术非常糟糕,我正在使用一个历史tos的NetCDF文件。我想提取特定lat和lon的tos数据。我有一个三维数组中的tos数据,lon和lat分别在一个二维矩阵中。问题是,我选择的lon和lat的行列组合与tos数组的行-列组合不一致。下面是我目前掌握的代码 我被困在这里,因为我的纬度和纬度矩阵的行和列数与 tos day1 数组的行和列号不对应。 如果你不明白
问题: 我在R中有一个代码,可以从单个Aqua Modis网络CDF文件中提取每月海面温度(SST)值(见下文)。但是,我在一个文件夹中有一批 59 个 Aqua Modis netCDF 文件。 目的: 我的目标是从所有59个netCDF文件的每个netCDF中提取变量的经度、纬度和SST,使用函数stack::raster()将它们转换为光栅文件,然后处理这些文件。 我的数据框有 650 行,
我有海洋pH、o2等的全球4D NetCDF文件。每个文件有1个变量和4个维度(时间、经度、纬度和深度)。我希望从不包含NA的每个单元格的最底部深度提取数据。我尝试使用带有负超实验室的NCO的nks: 但是,这只为我提供了最深的箱(即-5700米深度箱)的数据,输出了海洋中所有较浅区域的NaN。有没有办法以类似的方式提取数据,但指定我想要每个单元格最深的非 NaN 值? 我能够使用 R、CDO 或