假设一个人运行以下R代码
install.packages("raster")
library(raster)
r <- raster(ncol=18, nrow=18)
res(r)
res
函数的输出为
[1] 20 10
这些值如何定义? raster
函数如何计算它们?他们以什么单位表示?
答案 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度。