【问题标题】:Getting Data out of raster file in R从R中的光栅文件中获取数据
【发布时间】:2014-07-03 18:14:29
【问题描述】:

我是光栅文件的新手,但它们似乎是打开包含所有天气数据的大型 gov't 文件的最佳方式,因此我正在尝试弄清楚如何使用它们。作为参考,我正在下载位于here 的文件(只是一些磨坊天气的东西)。当我使用 R 的 raster 包像这样导入文件时

> r <- raster("/path/to/file.grb")

一切正常。当我输入时,我什至可以得到一些元数据

> r
class       : RasterLayer 
band        : 1  (of  37  bands)
dimensions  : 224, 464, 103936  (nrow, ncol, ncell)
resolution  : 0.125, 0.125  (x, y)
extent      : -125.0005, -67.0005, 25.0005, 53.0005  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +a=6371200 +b=6371200 +no_defs 
data source : /path/to/file.grb 
names       : NLDAS_MOS0125_H.A20140629.0100.002 

此时我所能做的就是以一种非常明显的方式索引栅格。

> r[100,100]
267.1

所以,我想我可以“索引”它,但我不知道数字 267.1 是什么意思。这肯定不是牢房里的全部。应该有一堆变量,包括但不限于土壤水分、地表径流和蒸发。

如何使用 R 以同样的方式访问这些信息?

【问题讨论】:

  • 你试过看str(r)吗?
  • str(r) 提供有关对象的更多信息,但最终不是我需要的数据。我怀疑我需要做一些事情,比如访问栅格的某个属性来获取我的数据,但谁知道呢。如果有帮助,我可以发布 str(r) 的输出
  • 好吧,如果数据存储在某个地方,我的理解是str 应该告诉你在哪里。
  • 问题本身并不是真正的编程性质,而是理解数据的格式。数据集随附的元数据(请参阅:[NLDAS2 README][1]),尤其是表 4a,第 13 页,在 MOS 模型下列出了所有参数,37 个频段中的每个频段都有一个参数。 [1]:hydro1.sci.gsfc.nasa.gov/data/s4pa/NLDAS/README.NLDAS2.pdf
  • @AlexChumbley:您可以在读取光栅文件时指定哪个波段:r

标签: r raster


【解决方案1】:
# create two rasters
r1 <- raster(matrix(ncol = 10, nrow = 10, runif(100))) 
r2 <- raster(matrix(ncol = 10, nrow = 10, runif(100)))

# creates a raster stack -- the stack (or brick function) allows you to
# to use multilayer band rasters
# http://www.inside-r.org/packages/cran/raster/docs/stack
st_r <- stack(r1, r2)

# extract values -- will create a matrix with 100 rows and two columns
vl <- getValues(st_r)

【讨论】:

  • 如果我要导入一个实际文件作为我的 'r1',我应该使用什么来制作我的 'r2'?
【解决方案2】:
r <- raster("/path/to/file.grb")

values <- getValues(r)

您可以在此处阅读有关该功能的信息:

http://www.inside-r.org/packages/cran/raster/docs/values

【讨论】:

  • 嗯,还有其他访问数据的方法吗?这给了我与尝试按行和列(r [100,100])索引栅格对象相同的答案。每个单元格应该有不同的数据点,但每个单元格看起来像是一个数字
【解决方案3】:

我认为问题在于您使用的是光栅而不是堆栈。 raster 函数生成单个层(矩阵),而 stack 或 brick 读取包含所有栅格层的数组。这是一个演示使用 [i,j,z] 索引提取值的示例。

library(raster)
setwd("D:/TMP")
download.file("ftp://hydro1.sci.gsfc.nasa.gov/data/s4pa/NLDAS/NLDAS_MOS0125_H.002/2014/180/NLDAS_MOS0125_H.A20140629.0000.002.grb",
              destfile="NLDAS_MOS0125_H.A20140629.0000.002.grb", mode="wb")
r <- stack("NLDAS_MOS0125_H.A20140629.0000.002.grb")
  names(r) <- paste0("L", seq(1:nlayers(r)))
  class(r)

  # Values for [i,j]
  i=100
  j=100
  r[i,j]

  # Values for i,j and z at layer(s) 1, 5 and 10
  z=c(1,5,10)
  r[i,j][z]

【讨论】:

    猜你喜欢
    • 2020-12-05
    • 2020-03-06
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多