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