Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中更改光栅空间范围_R_R Raster_Extent - Fatal编程技术网

在R中更改光栅空间范围

在R中更改光栅空间范围,r,r-raster,extent,R,R Raster,Extent,我有两个光栅,我想把一个光栅的空间范围变成另一个光栅。然后将其另存为新光栅。我使用了以下代码。但是,我无法将具有新空间范围的2013图像保存为新光栅。非常感谢您的指导 raster_2013 <- raster("avgt2013.tif") extent(raster_2013) class : Extent xmin : 112.91 xmax : 153.64 ymin : -43.75 ymax : -9

我有两个光栅,我想把一个光栅的空间范围变成另一个光栅。然后将其另存为新光栅。我使用了以下代码。但是,我无法将具有新空间范围的2013图像保存为新光栅。非常感谢您的指导

raster_2013 <- raster("avgt2013.tif")
extent(raster_2013)
class       : Extent 
xmin        : 112.91 
xmax        : 153.64 
ymin        : -43.75 
ymax        : -9 
> res(raster_2013)
[1] 0.01 0.01
> 
> raster_2015 <- raster("avgt2015.tif")
> extent(raster_2015)
class       : Extent 
xmin        : 112 
xmax        : 154 
ymin        : -44 
ymax        : -9 
> res(raster_2015)
[1] 0.01 0.01
> 
> e <- extent(112, 154, -44, -9)
> 
> ex = extent(raster_2015)
> r2 = crop(raster_2013, ex)
> 
> 
> new_2013 <- alignExtent(e, raster_2013, snap='near')
> str(new_2013)
Formal class 'Extent' [package "raster"] with 4 slots
  ..@ xmin: num 112
  ..@ xmax: num 154
  ..@ ymin: num -44
  ..@ ymax: num -9
> 
> rc <- crop(raster_2013, e, snap='near')
> extent(rc)
class       : Extent 
xmin        : 112.91 
xmax        : 153.64 
ymin        : -43.75 
ymax        : -9 
光栅2013分辨率(光栅2013) [1] 0.01 0.01 > >光栅图2015范围(光栅图2015) 类别:范围 xmin:112 xmax:154 伊敏:-44 ymax:-9 >资源(2015年) [1] 0.01 0.01 > >e >ex=范围(光栅_2015) >r2=作物(光栅_2013,ex) > > >2013年新东区街(2013年新东区街) 带4个插槽的正式类“扩展”[包“光栅”] ..@xmin:num 112 ..@xmax:num 154 ..@ymin:num-44 ..@ymax:num-9 > >rc范围(rc) 类别:范围 xmin:112.91 xmax:153.64 ymin:-43.75 ymax:-9 请先

然后,您的代码有几个问题。 在您的情况下,
alignExtent
是无用的,因为两个光栅具有相同的分辨率,并且它们的范围与此分辨率相对应

如果您的目标是将raster_2015的范围指定给raster_2013,您需要意识到,
范围(raster_2015)
相对于
xmin
更短(更小),但在其他地方更大或相等。因此,
crop
ping本身只会影响光栅_2013的
xmin
。您首先需要
扩展
,其次需要
裁剪
,以获得完全相同的范围:

new_2013 <- crop(extend(raster_2013, raster_2015), raster_2015)
all.equal(extent(raster_2015), extent(new_2013))
#[1] TRUE
最后,为了拯救它,好吧。。。您可以使用
writerater
,因为阅读文档会导致;-)

首先请

然后,您的代码有几个问题。 在您的情况下,
alignExtent
是无用的,因为两个光栅具有相同的分辨率,并且它们的范围与此分辨率相对应

如果您的目标是将raster_2015的范围指定给raster_2013,您需要意识到,
范围(raster_2015)
相对于
xmin
更短(更小),但在其他地方更大或相等。因此,
crop
ping本身只会影响光栅_2013的
xmin
。您首先需要
扩展
,其次需要
裁剪
,以获得完全相同的范围:

new_2013 <- crop(extend(raster_2013, raster_2015), raster_2015)
all.equal(extent(raster_2015), extent(new_2013))
#[1] TRUE
最后,为了拯救它,好吧。。。您可以使用
writerater
,因为阅读文档会导致;-)


为什么不使用
重采样
功能呢。您可以使用
writerater
函数将文件保存到磁盘。
resample
可以完成这项工作,但比简单的
crop(extend())
链要耗费更多的时间和资源,因为两个光栅在此处对齐<代码>重采样应被视为仅在紧急情况下使用的暴力方法;-)为什么不使用
重采样
功能呢。您可以使用
writerater
函数将文件保存到磁盘。
resample
可以完成这项工作,但比简单的
crop(extend())
链要耗费更多的时间和资源,因为两个光栅在此处对齐<代码>重采样应被视为仅在紧急情况下使用的暴力方法;-)
system.time(new_2013 <- crop(extend(raster_2013, raster_2015), raster_2015))
#  user  system elapsed 
# 0.676   0.036   0.712 
system.time(new_2013_res <- resample(raster_2013, raster_2015))
#   user  system elapsed 
# 10.324   0.536  10.869
all.equal(new_2013, new_2013_res)
# [1] TRUE
writeRaster(new_2013, "raster_2013_extent2015.grd")