R如何为栅格对象分配分辨率?

时间:2019-09-26 10:54:21

标签: r r-raster

假设一个人运行以下R代码

install.packages("raster")
library(raster)
r <- raster(ncol=18, nrow=18)
res(r)

res函数的输出为

[1] 20 10

这些值如何定义? raster函数如何计算它们?他们以什么单位表示?

2 个答案:

答案 0 :(得分:2)

正如Guillaume Devailly指出的那样,水平分辨率是水平范围除以列数。垂直分辨率是垂直范围除以行数。单位是坐标参考系统的单位。默认值为度(经度/纬度)。要为Guillaume的答案添加更多内容:

创建一个包含10行和从0到10的列的栅格。分辨率为1。

library(raster)
r <- raster(ncol=10, nrow=10, xmn=0, xmx=10, ymn=0, ymx=10)
r
#class      : RasterLayer 
#dimensions : 10, 10, 100  (nrow, ncol, ncell)
#resolution : 1, 1  (x, y)
#extent     : 0, 10, 0, 10  (xmin, xmax, ymin, ymax)
#crs        : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 

将分辨率更改为0.5;行和列数加倍

res(r) <- 0.5
r
#class      : RasterLayer 
#dimensions : 20, 20, 400  (nrow, ncol, ncell)
#resolution : 0.5, 0.5  (x, y)
#extent     : 0, 10, 0, 10  (xmin, xmax, ymin, ymax)
#crs        : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 

您可以通过调整范围间接更改分辨率

extent(r) <- c(0,5,0,5)
r
#class      : RasterLayer 
#dimensions : 20, 20, 400  (nrow, ncol, ncell)
#resolution : 0.25, 0.25  (x, y)
#extent     : 0, 5, 0, 5  (xmin, xmax, ymin, ymax)
#crs        : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0

x和y分辨率可以设置为不同的值

res(r) <- c(1, 0.5)

直接更改分辨率时,通过res与Raster *对象关联的所有像元值都会丢失;因为行数或列数必须更改。如果您通过更改范围间接更改它,则这些值将保持不变。

答案 1 :(得分:1)

根据我对vignette的了解

  

默认设置将创建一个具有经度/纬度坐标参考系统和1 x 1度像元的全局栅格数据结构。

r
# class       : RasterLayer 
# dimensions  : 18, 18, 324  (nrow, ncol, ncell)
# resolution  : 20, 10  (x, y)
# extent      : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
# coord. ref. : +proj=longlat +datum=WGS84 

r x 范围默认从-180到+180度(总共360度),并且360度/ 18点= a x 20度的分辨率。

r y 范围默认为-90至+90度,180度/ 18点的 y 分辨率为10度。