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

问题描述 投票:0回答:2

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

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

res功能的输出是

[1] 20 10

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

r r-raster
2个回答
0
投票

根据我对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点= 20度的[[x分辨率。]r

y

范围默认从-90到+90度,并且180度/ 18点的分辨率为10度。[[y

正如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 *对象关联的所有像元值都会丢失;因为行数或列数必须更改。如果您通过更改范围间接更改它,则值保持不变。


0
投票
© www.soinside.com 2019 - 2024. All rights reserved.