我正在尝试在R中保存一个光栅,该光栅是从GLC2000裁剪的。由此产生的栅格有4390行和4390列,覆盖巴西和南美洲的部分地区。保存它的命令(作为GeoTIFF)是
writeRaster(r1,'Raster1.tif')
或
writeRaster(r1,'Raster1.tif','GTiff')
两者都在尝试将文件保存几个小时,但它们甚至都没有创建文件,更不用说完成写入过程了。
我怀疑这是因为文件的大小(我认为文件至少应该开始保存,临时文件出现,可见或隐藏 - 不存在)。另外两个类似的TIFF文件(几乎相同的区域,尽管除巴西以外的所有南美洲都是黑色)都有2.7 MB(索引,在Gimp上打开时出错:“遇到标记33550(0x830e)的未知字段”,以及其他标签)和19.3 MB(也是索引,在Gimp上没有错误)。
我认为这不是因为目录权限,因为R可以将脚本保存在同一目录中(权限是drwxr-xr-x,我是所有者和组所有者)。
指定的文件系统中有11.6 GB可用。
我正在使用Debian Jessie 64位与Gnome 3.14.1,以及R 3.3.3与RStudio 1.0.136。
我的处理器是英特尔®酷睿™i3-6100 CPU @ 3.70GHz×4,内存为7.8 GiB。
writeRaster应该花这么长时间来保存一个甚至不是那么大的光栅吗?可能出现什么问题?
修改
所以我正在尝试更小的尺寸。
ext <- extent(-67,-65,-1,1)
r1 <- crop(r,ext)
dim(r1) # 224 224 1
writeRaster(r1,'Raster1','GTiff') # works
ext <- extent(-68,-64,-2,2)
r1 <- crop(r,ext)
dim(r1) # 448 448 1
writeRaster(r1,'Raster2','GTiff') # works
ext <- extent(-69,-63,-3,3)
r1 <- crop(r,ext)
#Warning message:
#In .getRat(x, ratvalues, ratnames, rattypes) : NAs introduced by coercion
dim(r1) # 672 672 1
writeRaster(r1,'Raster3','GTiff') # takes forever
看起来错误是强制引入的NA,这可以防止文件被保存。我试过了
r1[is.na(r1)] <- 0
但是文件仍然无法保存。如果我在光栅的范围内进行裁剪,为什么世界会将NAs引入常见的栅格?
extent(r)
# class : Extent
# xmin : -180.0045
# xmax : 179.9955
# ymin : -56.01339
# ymax : 89.99554
编辑2
> levels(r)
[[1]]
ID COUNT CLASSNAMES
1 1 12875179 Tree Cover, broadleaved, evergreen
2 2 8688097 Tree Cover, broadleaved, deciduous, closed
3 3 4099003 Tree Cover, broadleaved, deciduous, open
4 4 15080165 Tree Cover, needle-leaved, evergreen
5 5 8054159 Tree Cover, needle-leaved, deciduous
6 6 5606446 Tree Cover, mixed leaf type
7 7 579763 Tree Cover, regularly flooded, fresh water
8 8 115705 Tree Cover, regularly flooded, saline water
9 9 4269938 Mosaic: Tree Cover / Other natural vegetation
10 10 587270 Tree Cover, burnt
11 11 3195387 Shrub Cover, closed-open, evergreen
12 12 15605651 Shrub Cover, closed-open, deciduous
13 13 17560702 Herbaceous Cover, closed-open
14 14 23573022 Sparse herbaceous or sparse shrub cover
15 15 3089962 Regularly flooded shrub and/or herbaceous cover
16 16 21692769 Cultivated and managed areas
17 17 4025653 Mosaic: Cropland / Tree Cover / Other natural vegetation
18 18 3921904 Mosaic: Cropland / Shrub and/or grass cover
19 19 24629888 Bare Areas
20 20 471034157 Water Bodies
21 21 10660085 Snow and Ice
22 22 378999 Artificial surfaces and associated areas
23 23 29056 No Data
答案 0 :(得分:1)
通过评论中的讨论,错误消息表明栅格属性表发生了错误。问题可能与特殊字符或标签长度有关。只要一个“违规标签”被子集引入,就会出现问题。
使用
简化类名levels(r)[[1]]$CLASSNAMES <- letters[1:23]
解决了这个问题。
查看这个相关的问题Why is crop introducing NAs to my raster?表明问题在于在类的名称中有半个数组(:
),这会导致在裁剪时“拆分”类名。