首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R栅格软件包中写入带有RAT因子的栅格

如何在R栅格软件包中写入带有RAT因子的栅格
EN

Stack Overflow用户
提问于 2014-05-24 08:47:13
回答 3查看 3.4K关注 0票数 9

我想让writeRaster编写我在R中构建的RAT (栅格属性表)。

我运行的是R3.0.1,raster2.1-49和rgdal 0.8-10。

我的输入栅格如下所示:

代码语言:javascript
复制
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)

然后我构建我的属性表:

代码语言:javascript
复制
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

代码语言:javascript
复制
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一起写入:

代码语言:javascript
复制
ratRaster <- "F:/testRat.img"
writeRaster(r, filename=ratRaster, datatype="INT1U", RAT=TRUE, progress="window", overwrite=TRUE)

但当我将它读回R时,很明显这些属性并没有持久存在:

代码语言:javascript
复制
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中,我如何创建和导出的栅格,并保留鼠?

EN

回答 3

Stack Overflow用户

发布于 2017-09-23 02:21:37

请注意,如果使用光栅的原生.grd格式(请参阅doc,3.3节),则RAT表将被保存:

代码语言:javascript
复制
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")

现在重新打开:

代码语言:javascript
复制
r2 <- raster("raster_rat.grd")
r2
票数 4
EN

Stack Overflow用户

发布于 2017-09-09 05:10:16

您可以始终将RAT编写为csv文件,然后在以后连接该数据。

按照您指定的方式写入栅格:

代码语言:javascript
复制
writeRaster(r, filename=ratRaster, datatype="INT1U", RAT=TRUE, progress="window", overwrite=TRUE)

将属性数据/table/RAT作为.csv文件写入:

代码语言:javascript
复制
write.csv(rat, file="C:\\merp\\rat.csv", row.names = F)

然后,您可以稍后将此数据连接到另一个程序中。例如,如果从R输出到ArcMap,请将栅格写入磁盘,将属性数据作为csv文件写入,然后使用ArcMap中的Add Join工具将RAT关联到栅格。

票数 2
EN

Stack Overflow用户

发布于 2015-03-13 05:35:05

读取写入RAT的definition of writeRaster显然没有实现,至少对于本机格式和GTif格式是这样。实际上,首先要做的一件事就是移除老鼠。考虑到comments ()帮助中的注释,这并不令人惊讶:

此处记录的函数主要用于读取和处理包含RAT的文件;目前没有太多进一步的支持。

From和to R总是可以使用

代码语言:javascript
复制
    save(r,file=ratRaster)

然后

代码语言:javascript
复制
    load(ratRaster)

它保留了所有的东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23840178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档