【问题标题】:extract from NetCDF files using X, Y coordinates使用 X、Y 坐标从 NetCDF 文件中提取
【发布时间】:2014-11-10 00:24:59
【问题描述】:

我是 R 新手。我有一个 NetCDf 文件,它有 3 个维度,即时间、x、y,它有六个变量,即雨、tair、swin、lwin、rh 和风。我想根据时间维度提取每个变量的时间序列信息并导出为csv格式。我已经使用以下几组代码来做到这一点,但我不能单点做到这一点。我想在两个点(30000000,810000)和(3100000,820000)提取数据

setwd("C:/Users/a/Desktop/pd/1/")
f<-open.ncdf("merra.rfe.90m.200208.nc")
t<-get.var.ncdf(f,varid="time")
B<-get.var.ncdf(f,varid="rain")
c<-get.var.ncdf(f,varid="tair")
write.table(t(rbind(A,B,c)),file="output.csv")

但我不知道如何注入这些坐标。我找到了 lat 和 long 格式的代码,但我有 x 和 y 坐标。如果你们中的任何人能站出来帮助我解决这个问题,我将非常慷慨。

【问题讨论】:

    标签: r extract netcdf


    【解决方案1】:

    我猜你正在使用ncdf 包。最好使用ncdf4raster 包。

    我不确定我是否明白你在问什么。如果您可以发布您的原始文件(如果文件太大,请剪掉)会更好。

    如果我明白你的意思,你想要一些类似的东西:

    library(ncdf4)
    f <- nc_open("file.nc")
    t <- ncvar_get(f, "rain")
    point1_t <- t[30000000,810000,] #Notice the extra ","
    point2_t <- t[3100000,820000,]
    #etcetera
    

    您没有指定 30000000,810000 是 X、Y 坐标还是在某个单位系统中。如果它们是 X、Y 坐标并且文件已正确设置 X-Y 尺寸,那么您应该很好地使用上述内容。

    如果这些值以某些单位表示,因此不是 X-Y 像素值(例如像素 [30,12]=(100000,400000) 米),那么您应该将它们存储在一些变量中。
    如果是这样的话:

    x <- ncvar_get(f, "x")
    y <- ncvar_get(f, "y")
    which(x == 30000000 && y == 810000, arr.ind=T)
    

    ...将返回 x=30000000 和 y=810000 的所有像素的 XY 坐标。一旦您知道 XY 像素坐标,就很容易像以前一样提取值。我希望我说清楚了,丢失输入文件并不容易。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-23
      • 2022-11-13
      相关资源
      最近更新 更多