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

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

我有一个名为“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的初学者我没有得到理想的结果)

r raster tiff
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.