我想让writeRaster编写我在R中构建的RAT (栅格属性表)。
我运行的是R3.0.1,raster2.1-49和rgdal 0.8-10。
我的输入栅格如下所示:
r <-raster("F:/test.img")
class : RasterLayer
dimensions : 3, 3, 9 (nrow, ncol, ncell)
resolution : 30, 30 (x, y)
extent : 347325, 347415, 4301655, 4301745 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=18 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
data source : F:\test.img
names : test
values : 1, 19 (min, max)然后我构建我的属性表:
r <- ratify(r)
rat <- levels(r)[[1]]
rat$Pixel_Values <- c(1, 7, 8, 9, 19)
rat$Class_Names <- c("A", "B", "C", "D", "E")
levels(r) <- rat这会产生一个带有属性的raster:
r
# class : RasterLayer
# dimensions : 3, 3, 9 (nrow, ncol, ncell)
# resolution : 30, 30 (x, y)
# extent : 347325, 347415, 4301655, 4301745 (xmin, xmax, ymin, ymax)
# coord. ref. : +proj=utm +zone=18 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
# data source : F:\test.img
# names : test
# values : 1, 19 (min, max)
# attributes :
# ID Pixel_Values Class_Names
# 1 1 A
# 7 7 B
# 8 8 C
# 9 9 D
# 19 19 E然后,我尝试将我的栅格和它的RAT一起写入:
ratRaster <- "F:/testRat.img"
writeRaster(r, filename=ratRaster, datatype="INT1U", RAT=TRUE, progress="window", overwrite=TRUE)但当我将它读回R时,很明显这些属性并没有持久存在:
r2 <- raster(ratRaster)
r2
# class : RasterLayer
# dimensions : 3, 3, 9 (nrow, ncol, ncell)
# resolution : 30, 30 (x, y)
# extent : 347325, 347415, 4301655, 4301745 (xmin, xmax, ymin, ymax)
# coord. ref. : +proj=utm +zone=18 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
# data source : F:\testRat.img
# names : testRat
# values : 1, 19 (min, max)这将是快速和可怕的构建鼠在R中,我如何创建和导出的栅格,并保留鼠?
发布于 2017-09-23 02:21:37
请注意,如果使用光栅的原生.grd格式(请参阅doc,3.3节),则RAT表将被保存:
library(raster)
r <- raster(nrows=5, ncols=5)
r[] <- rep(1:5, 5)
r <- ratify(r)
rat <- levels(r)[[1]]
rat$Pixel_Values <- 1:5
rat$Class_Names <- c("A", "B", "C", "D", "E")
levels(r) <- rat
r
writeRaster(r, filename="raster_rat.grd")现在重新打开:
r2 <- raster("raster_rat.grd")
r2发布于 2017-09-09 05:10:16
您可以始终将RAT编写为csv文件,然后在以后连接该数据。
按照您指定的方式写入栅格:
writeRaster(r, filename=ratRaster, datatype="INT1U", RAT=TRUE, progress="window", overwrite=TRUE)将属性数据/table/RAT作为.csv文件写入:
write.csv(rat, file="C:\\merp\\rat.csv", row.names = F)然后,您可以稍后将此数据连接到另一个程序中。例如,如果从R输出到ArcMap,请将栅格写入磁盘,将属性数据作为csv文件写入,然后使用ArcMap中的Add Join工具将RAT关联到栅格。
发布于 2015-03-13 05:35:05
读取写入RAT的definition of writeRaster显然没有实现,至少对于本机格式和GTif格式是这样。实际上,首先要做的一件事就是移除老鼠。考虑到comments ()帮助中的注释,这并不令人惊讶:
此处记录的函数主要用于读取和处理包含RAT的文件;目前没有太多进一步的支持。
From和to R总是可以使用
save(r,file=ratRaster)然后
load(ratRaster)它保留了所有的东西。
https://stackoverflow.com/questions/23840178
复制相似问题