栅格提取仅返回 NA

问题描述

我正在尝试创建名为 stack 的 7 个栅格的栅格堆栈。 这似乎工作得很好,因为当我使用 freq(stack) 时,它返回属于它的栅格的频率,例如对于其中一个栅格:

$Slope_Final
     value  count
[1,]     0 414933
[2,]     1  94763
[3,]     2   6622
[4,]     3    917
[5,]     4    195
[6,]     5     22
[7,]    NA 487146

然而当尝试 summary(stack) 时它返回

Error in .local(object,...) : no cell values associated with this RasterBrick

这似乎互相矛盾?奇怪的是, print(stack) 确实有效。 当我继续并使用 raster::extract 函数时,

extraction <- extract(stack,points)

其中点是一个包含日期和时间等几列的空间点数据框,返回的矩阵仅为 3145 行 NA;

> summary(extraction)
 Elevation_Final Landcover_Final Primroad_Final Secroad_Final  GPW_Final      Slope_Final    Water_Final   
 Mode:logical    Mode:logical    Mode:logical   Mode:logical   Mode:logical   Mode:logical   Mode:logical  
 NA's:3145       NA's:3145       NA's:3145      NA's:3145      NA's:3145      NA's:3145      NA's:3145  
points$Lat 

 points$Lon 

返回坐标!它们属于整数类。 如果相关; stack points

的扩展
 extent(stack)
class      : Extent 
xmin       : -265959.9 
xmax       : 873040.1 
ymin       : 4619541 
ymax       : 5501541 

extent(points)
class      : Extent 
xmin       : -97.1336 
xmax       : -83.54935 
ymin       : 43.6795 
ymax       : 49.0001 

解决方法

如果您展示更多代码,包括您收到的所有消息,将会很有帮助。例如,您说您有一个 RasterStack,但错误消息说您有一个 RasterBrick。在大多数情况下,这应该无关紧要,但是,谁知道呢,在这里确实很重要。如果文件非常大,summary 会取一个样本,并且由于您有很多 NA,这可能是一个不幸的样本(似乎不太可能)--- 在这种情况下会有一条消息。

理想情况下,您可以通过使用代码创建一些类似的数据来重现问题。这在这里可能很困难,但您仍然可以展示工作流程以及 show(stack)show(points)

从范围来看,可以假设 points 具有经度/纬度坐标参考系统,但 stack 显然没有。也不会重叠,因此您会得到所有 NAs 。这是一件好事,如果它们碰巧重叠,您可能会得到值,但会得到错误的值。