从基于空间点范围的栅格中提取

时间:2015-04-20 01:50:41

标签: r raster

假设我根据SpatialPoints对象的范围生成栅格。

    r<-setExtent(r,extent(pts))
    identical(extent(r),extent(pts))==TRUE

但是现在如果我用res更改分辨率,为什么会这样:

    identical(extent(r),extent(pts))==FALSE

1 个答案:

答案 0 :(得分:3)

这种情况只会在某些情况下发生(如果你不能将没有余数的x / y范围除以新分辨率所暗示的列数/行数。)更改分辨率会导致新的列数和行数一定的宽度/高度。如果这些不完全符合范围,则需要调整范围。简单的例子:

library(raster)
r <- raster(xmn=0, xmx=5, ymn=0, ymx=5, res=1)
r
#class       : RasterLayer 
# dimensions  : 5, 5, 25  (nrow, ncol, ncell)
# resolution  : 1, 1  (x, y)
# extent      : 0, 5, 0, 5  (xmin, xmax, ymin, ymax)
# coord. ref. : +proj=longlat +datum=WGS84 

因此,如果您将'r'的分辨率更改为例如2.5或0.5,则范围保持不变:

res(r) <- 2.5
r
# class       : RasterLayer 
# dimensions  : 2, 2, 4  (nrow, ncol, ncell)
# resolution  : 2.5, 2.5  (x, y)
# extent      : 0, 5, 0, 5  (xmin, xmax, ymin, ymax)
# coord. ref. : +proj=longlat +datum=WGS84 

但是如果将其更改为例如3,则范围需要更改,因为您无法将3(行/列)的倍数放入0..5的范围内。因此,范围需要降低到0..3或扩展到0..6(或-1..5)。后者是较小的变化,所以就是这样。

r <- raster(xmn=0, xmx=5, ymn=0, ymx=5, res=1)
res(r) <- 3
r
class       : RasterLayer 
dimensions  : 2, 2, 4  (nrow, ncol, ncell)
resolution  : 3, 3  (x, y)
extent      : 0, 6, -1, 5  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84