【发布时间】:2016-03-21 13:08:45
【问题描述】:
我有一个 RasterBrick,其中包含 7 年的每月降雨量数据,因此它有 7 层,每层有 12 个槽:
rainfall <- brick("Rainfall.tif")
> rainfall
class : RasterBrick
dimensions : 575, 497, 285775, 7 (nrow, ncol, ncell, nlayers)
resolution : 463.3127, 463.3127 (x, y)
extent : 3763026, 3993292, -402618.8, -136213.9 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6371007.181 +b=6371007.181 +units=m +no_defs
data source : in memory
names : layer.1.1, layer.2.1, layer.1.2, layer.2.2, layer.1, layer.2, layer
min values : 239.6526, 499.8343, 521.0316, 617.2896, 596.0397, 663.6633, 298.0572
max values : 691.9075, 1158.2064, 1184.9858, 1198.7121, 1241.8077, 1114.7598, 832.6042
据此,我想提取空间和时间分布点的降雨量值。这些点在数据框中:
points <- read.csv("Points.csv")
> head(points)
ID x y ncell jday FRP_max FRI year month
69211 3839949 -171684.6 17 59 NA 230.2500 2001 2
69227 3808720 -238808.7 16 52 NA NA 2001 2
69237 3793373 -267563.1 1 52 NA NA 2001 2
69244 3986574 -292118.7 1 43 NA NA 2001 2
32937 3864736 -164296.8 106 77 94.8 249.1524 2001 3
32938 3871463 -163123.4 31 82 NA 253.5081 2001 3
我可以通过将数据框转换为空间数据框并使用提取函数来处理空间方面:
points.sp <- points
coordinates(points.sp) <- ~ x + y
rainfall.points <- extract(rainfall, points.sp)
但是,我无法确定如何确保从栅格砖内的正确栅格图层中提取降雨值。我尝试了使用数据框中的“年”和“月”列进行索引的各种方法,但没有任何效果。任何提示将不胜感激!
这是我的第一篇文章,如果信息过多/不足,敬请见谅。让我知道查看更多我的代码是否有用。
【问题讨论】:
-
你的积木中的“12 个插槽”在哪里?我看到了 7 层。
-
是的,正是@Spacedman 所问的。这 7 层中的每一层(它们是名为
layer.1.1、layer.2.1等的层)每个像素/单元格只有一个值,所以听起来你不太清楚你实际上有什么数据进了砖头。 -
我确实想知道这一点,但是当我在全球环境中扩大降雨量时,它说:Large RasterBrick (2000425 个元素,15.3 mb) .. @ file :Formal class ' .RasterFile' [package "raster" ] 有 12 个插槽
-
"正式类 'RasterBrick' [包 "raster"] 有 12 个插槽"?那里的“槽”是 R 的内部结构部分——它们存储分辨率、坐标、图层名称等。它与一年中的 12 个月相匹配,这是一个巧合!你的积木只有 7 层,每一层都是一个数字。