【问题标题】:How to get the raster() function in R to round to the outside of a specified extent?如何让 R 中的 raster() 函数舍入到指定范围的外部?
【发布时间】:2020-05-23 18:45:57
【问题描述】:

如何让raster() 函数舍入到指定 x/y 最小值/最大值的外部?比如我看到的:

> 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】:

    不确定这是否能准确回答您的问题,您需要的可能有点取决于您的实际工作流程,但您正在寻找的似乎是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 
    

    请注意,Extent 对象的 floor 方法会舍入 min x 和 y down,但会舍入 max x 和 y 向上。还有一个 ceiling 方法做相反的事情,还有一个 round 方法去最接近的整数。

    在其他情况下(取决于您是否要保留数据,以及是否需要更改分辨率)您可能需要其中之一

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

    如果您需要将范围与 Raster* 对齐,您可以这样做

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

    你也可以做类似的事情

    e <- round(e + 15)
    

    【讨论】:

    • 这很有帮助,非常感谢!不幸的是 res 在我的情况下实际上不是 1 。你知道有一个函数与 floor(extent(r)) 做同样的事情,但会四舍五入到最接近的 15,例如?
    • 查看我的答案。
    • 谢谢!!我认为e &lt;- floor(extent(r)/res)*res 然后rr &lt;- raster(e, res = res) 最终会做我需要的。
    • 啊,是的,这就是你如何“四舍五入”到另一个数字而不是 1
    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 2014-06-10
    相关资源
    最近更新 更多