如何让R中的raster()函数舍入到指定范围的外面?

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

我如何获得 raster() 函数取整到 外面 的指定xy minmax?例如,我所看到的。

> raster(xmn = 0, xmx = 1.01,
+        ymn = 0, ymx = 1.01,
+        res = 1)
class      : RasterLayer 
dimensions : 1, 1, 1  (nrow, ncol, ncell)
resolution : 1, 1  (x, y)
extent     : 0, 1, 0.01, 1.01  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 

和我想看到的:

> raster(xmn = 0, xmx = 1.01,
+        ymn = 0, ymx = 1.01,
+        res = 1)
class      : RasterLayer 
dimensions : 2, 2, 4  (nrow, ncol, ncell)
resolution : 1, 1  (x, y)
extent     : 0, 2, 0, 2  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 

或任何包括指定的xmin, xmax, ymin, 和ymax的东西。 的栅格对象。我意识到这是一个简单的例子,但我正在寻找可以用于许多不同的xmn、xmx、ymn、ymx和res值的通用代码。

先谢谢你 (:

r raster r-raster
1个回答
0
投票

不知道这是否确切地回答了你的问题,你所需要的可能有点取决于你的实际工作流程,但似乎你要找的就是 floor(extent).

library(raster)
r <- raster(xmn = 0, xmx = 1.01, ymn = 0, ymx = 1.01)
e <- floor(extent(r))
rr <- raster(e, res=1, crs=crs(r))
rr

#class      : RasterLayer 
#dimensions : 2, 2, 4  (nrow, ncol, ncell)
#resolution : 1, 1  (x, y)
#extent     : 0, 2, 0, 2  (xmin, xmax, ymin, ymax)
#crs        : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 

注意 floor 办法 Extent 物体轮次 最小 x和y 下来但回合 最大 x和y . 还有一个 ceiling 的方法,以及一个 round 方法,以最接近的整数为准。

在其他情况下(取决于是否有数据需要保留,以及是否需要改变分辨率),你可能会需要其中的一个

x <- extend(r, e)
y <- setExtent(r, e)
extent(r) <- e   

如果你需要将一个范围与一个光栅*对齐,你可以执行以下操作

alignExtent(e, r, snap='near')

你也可以做一些事情,比如

e <- round(e + 15)
© www.soinside.com 2019 - 2024. All rights reserved.