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