从R中的NetCDF文件中提取所有级别
我试图从R中的一个特定NetCDF文件中提取所有级别。我可以通过手动将每个级别提取为一行代码,然后将它们组合为一个数据帧来实现这一点。但是当我有很多文件时,这是非常长的。是否可以在一个文件中提取所有43层 我将此和作为指导 本质上,硝酸盐数据来自从R中的NetCDF文件中提取所有级别,r,netcdf,levels,R,Netcdf,Levels,我试图从R中的一个特定NetCDF文件中提取所有级别。我可以通过手动将每个级别提取为一行代码,然后将它们组合为一个数据帧来实现这一点。但是当我有很多文件时,这是非常长的。是否可以在一个文件中提取所有43层 我将此和作为指导 本质上,硝酸盐数据来自 在43个不同的深度有浓度。是否可以提取特定位置的所有深度 我可以做一个级别。但每一层都代表一种深度。有可能获得所有级别吗 我也不理解第三条警告消息:In.getCRSfromGridMap4(atts):无法处理CRS的以下部分: epsg_代码=ep
在43个不同的深度有浓度。是否可以提取特定位置的所有深度 我可以做一个级别。但每一层都代表一种深度。有可能获得所有级别吗 我也不理解第三条警告消息:In.getCRSfromGridMap4(atts):无法处理CRS的以下部分: epsg_代码=epsg:4326 我得到了不同的结果(1月1级为0.5),但我的同事1月1级为1.4)。我的错误是由上述警告引起的吗
#this works
Nit_Jan <- brick("~woa18_all_n01_01.nc", stopIfNotEqualSpaced =
FALSE, varname = "n_an", level = 1)
#this doesn't
Nit_Jan <- brick("~woa18_all_n01_01.nc", stopIfNotEqualSpaced =
FALSE, varname = "n_an", level = 1:43)
Warning messages:
1: In if (level <= 0) { :
the condition has length > 1 and only the first element will be used
2: In if (oldlevel != level) { :
the condition has length > 1 and only the first element will be used
3: In .getCRSfromGridMap4(atts) : cannot process these parts of the
CRS:epsg_code=EPSG:4326
#这很有效
Nit_Jan这里有些混乱,因为文件有“级别”(第四维),但级别数是一个(因此没有第四维)。代码可能会检测到这一点,但现在您必须添加lvar=4
,以获得所需的对象
library(raster)
f <- "woa18_all_n01_01.nc"
b <- brick(f, var="n_oa", lvar=4)
b
#class : RasterBrick
#dimensions : 180, 360, 64800, 43 (nrow, ncol, ncell, nlayers)
#resolution : 1, 1 (x, y)
#extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
#crs : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
#source : woa18_all_n01_01.nc
#names : X0, X5, X10, X15, X20, X25, X30, X35, X40, X45, X50, X55, X60, X65, X70, ...
#meters : 0, 800 (min, max)
#varname : n_oa
#level : 1
库(光栅)
f这里有一些混乱,因为文件有“级别”(第四维),但级别数是一个(因此没有第四维)。代码可能会检测到这一点,但现在您必须添加lvar=4
,以获得所需的对象
library(raster)
f <- "woa18_all_n01_01.nc"
b <- brick(f, var="n_oa", lvar=4)
b
#class : RasterBrick
#dimensions : 180, 360, 64800, 43 (nrow, ncol, ncell, nlayers)
#resolution : 1, 1 (x, y)
#extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
#crs : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
#source : woa18_all_n01_01.nc
#names : X0, X5, X10, X15, X20, X25, X30, X35, X40, X45, X50, X55, X60, X65, X70, ...
#meters : 0, 800 (min, max)
#varname : n_oa
#level : 1
库(光栅)
我试着按照上面的建议打开它,但对于43个级别,我只得到一个值。数据跨越-180、180、-90、90,我想要一个位置stn1=matrix(c(-150、-30),ncol=2)stn1-extract(e,stn1)Error in(function)(class,fdef,mtable):找不到签名“list”、“matrix”的函数“extract”的继承方法可能是因为数据的结构方式吗?测试我尝试了cbind(-150,-30)但数据仍然不正确。是否因为z值而出现错误?提取值时显示的是X696.5。这与z值相同。最大深度为800(这不应该是z值吗?)。对于所有的混淆,抱歉!该位置位于澳大利亚的陆地上--allNA
。z值标签“X696.5”不是该值(可能是不正确的,因为它不会改变——我会检查的,非常抱歉!我实际上想要它离开澳大利亚海岸(太平洋)一侧,所以160W,30E(-160,-30)。我猜所有的“网格”都没有数据。我下载了.csv文件,但有很大的差距。我尝试按照上面的建议打开它,但我只得到43个级别的一个值。数据跨度为-180、180、-90、90,我想要一个位置stn1=矩阵(c(-150,-30),ncol=2)(函数(类、fdef、mtable)中的stn1 extract(e、stn1)错误:找不到签名“list”的函数“extract”的继承方法,“矩阵”可能是因为数据的结构方式吗?测试我尝试了cbind(-150,-30),但数据仍然不正确。是否因为z值而存在错误?提取值时表示为X696.5。这与z值相同。最大深度为800(这不是z值吗?)。抱歉,所有的混乱!那个位置是在澳大利亚的陆地上---全部NA
。z值标签“X696.5”不是该值(并且可能不正确,因为它不会改变---我会检查它,非常抱歉!我实际上想要它离开澳大利亚海岸(太平洋)一侧,所以160W,30E(-160,-30)。我猜所有的“网格”都没有数据。我下载了.csv文件,但有很大的差距。
crs(b) <- "+init=EPSG:4326"
f <- "woa18_all_n01_01.nc"
brick(f, var="n_oa")
#class : RasterBrick
#dimensions : 180, 360, 64800, 43 (nrow, ncol, ncell, nlayers)
#resolution : 1, 1 (x, y)
#extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
#crs : +init=EPSG:4326 +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
#source : woa18_all_n01_01.nc
#names : X0, X5, X10, X15, X20, X25, X30, X35, X40, X45, X50, X55, X60, X65, X70, ...
#depth (meters): 0, 800 (min, max)
#varname : n_oa
#level : 1