r中更改范围+分辨率后的错误

时间:2019-04-02 19:05:57

标签: r raster tiff

我有一个名为“ tiff4”的tiff文件,这是它的信息:

class : RasterLayer dimensions : 49, 89, 4361 (nrow, ncol, ncell) resolution : 0.5, 0.5 (x, y) extent : 60.64135, 105.1413, 14.99839, 39.49839 (xmin, xmax, ymin, ymax) coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 data source : C:\Users\Halima Usman\Documents\ICIMOD\hkh1.tif names : hkh1

现在,我需要一个范围,该范围是整数而不是小数位。这就是我要改变程度的方法

ext <- extent(61, 105, 16, 39) extent(tiff4)<-ext

但是在更改范围之后,分辨率也会更改。我需要0.5度的分辨率 class : RasterLayer dimensions : 49, 89, 4361 (nrow, ncol, ncell) resolution : 0.494382, 0.4693878 (x, y) extent : 61, 105, 16, 39 (xmin, xmax, ymin, ymax) coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 data source : C:\Users\Halima Usman\Documents\ICIMOD\hkh1.tif names : hkh1

然后我通过执行以下操作将分辨率更改回0.5:

res(tiff4)=0.5 但是当我绘制tiff4时,会出现错误

Error in .plotraster2(x, col = col, maxpixels = maxpixels, add = add, : no values associated with this RasterLayer

如何解决此错误,或者该错误的原因是什么? (我已经看到了这个问题Can't change raster's extent,但是作为R的初学者,我并没有得到想要的结果)

1 个答案:

答案 0 :(得分:0)

您将ymin从14.99更改为16。这不好。这样可以使您接近

ext <- extent(60.5, 105, 15, 39.5)

这将“有效”,因为(105-60.5) / .5 = 89(39.5-15) / .5 = 49。即,行数和列数与分辨率匹配。但是,您现在已经在空间上移动了值,因此它们不再“正确”。而且范围没有整数。

我建议您改做这样的事情:

r <- raster(tiff4)
extent(r) <- c(60, 105, 15, 40)
r <- resample(tiff4, r)
r