【问题标题】:Plot subset of netcdf in R using lat/lon boundaries使用纬度/经度边界在 R 中绘制 netcdf 的子集
【发布时间】:2014-12-19 02:23:41
【问题描述】:

我在 R 中有一个 netcdf 文件,其中包含 14 个变量,我想使用纬度和经度边界对其进行子集化,即提取特定海洋区域的一些变量。到目前为止,我一直在尝试南太平洋(-150W 和 -90W 之间以及 -60S 和 0S 之间)。

文件详细信息如下(下面的代码只显示了第一个变量“bio1”的详细信息):

"File oceandata.nc (NC_FORMAT_CLASSIC):"
14 variables (excluding dimension variables):"
float bio1[lon,lat]   "
standard_name: air_temperature"
long_name: bio1: Annual Mean Temp"
units: C"
_FillValue: 1.00000001504747e+30"
valid_max: 307.259399414062"
valid_min: 226.706176757812"

我使用了以下代码:

require(ncdf4)
oceana = nc_open( "oceandata.nc" )
LatIdx = which ( oceana$dim$lat$vals < 0 & oceana$dim$lat$vals < -60)
LonIdx = which ( oceana$dim$lon$vals > -150 & oceana$dim$lon$vals < -90)
myvariable <- ncvar_get( oceana, "bio1")[ LonIdx, LatIdx]
lon <- ncvar_get(oceana, "lon")
lat <- ncvar_get(oceana, "lat")

但是,当我尝试使用以下方法进行绘图时:

image(lon,lat, myvariable)

我收到以下错误:

Error in image.default(lon, lat, myvariable) : 

预期会增加“x”和“y”值

任何关于我在哪里出错的 cmets/建议将不胜感激!

【问题讨论】:

  • 如果公开可用,您能否提供下载 netcdf 文件的链接?这将使您的代码可重复,从而更容易诊断。
  • 你能包括lonlat的样子吗?

标签: r latitude-longitude subset netcdf


【解决方案1】:

image 要求 xy 参数具有递增的值。我怀疑您的 latlon 值正在下降(即 -90W 到 -150W)。如果是这样,请考虑切换顺序。

【讨论】:

  • 感谢您的回复,我已尝试将“LonIdx”的语法颠倒过来,即:
  • LonIdx = which ( oceana$dim$lon$vals > -90 & oceana$dim$lon$vals
猜你喜欢
  • 2014-02-12
  • 1970-01-01
  • 2020-11-18
  • 1970-01-01
  • 2017-03-03
  • 1970-01-01
  • 2015-05-08
  • 2011-03-17
  • 1970-01-01
相关资源
最近更新 更多