[英]How to access class names in a raster categorical map
我有一些分类的栅格图层作为分类的土地覆盖图。 所有层具有完全相同的类别(让我们说: "water", "Trees", "Urban","bare soil"
),但是它们来自不同的时间点(例如2005和2015),我使用栅格将它们加载到内存中像这样的功能:
comp <- raster("C:/workingDirectory4R/rasterproject/2005marsh3.rst")
ref <- raster("C:/workingDirectory4R/rasterproject/2013marsh3.rst")
"comp"
是时间t+1
的comparison map
, "ref"
是时间t
的reference map
。 然后,我使用了crosstab
函数来生成confusion table
。 该表可用于浏览时间间隔内类别的变化。
contingency.Matrix <- crosstab(comp, ref)
结果为matrix
格式,在column
具有"comp"
类别, rows
中具有"ref"
。 column
和row
名标有数字1 to 4
。
现在,我有2个问题,我非常感谢您提供有关如何解决这些问题的帮助。
1-我想将类别名称分配给matrix
的列和行,以方便其解释。
2-现在让我们说我有raster layers
和2015的三个raster layers
。这意味着我将有两个confusion tables
一个用于2005-2010,另一个用于2010-2015。 用最少的用户交互来自动执行此过程的最佳过程是什么。
我想让用户加载栅格图层,然后代码将它们保存在列表中。 然后,我要求用户提供年份的向量,但是问题是如何确保栅格图层的顺序和年份相同? 并有一种更优雅的方式来执行此操作。
谢谢
我找到了第一个问题的部分答案。 如果在TerrSet(IDRISI)软件中以“ .rst”扩展名创建了分类映射,那么我可以像这样提取类别名称:
comp <- raster("C:/rasterproject/2005subset.rst")
attributes <- data.frame(comp@data@attributes)
categories <- as.character(attributes[,8])
我得到一个带有类别名称的向量。 但是,如果使用不同的扩展名创建栅格图层,则代码将无法工作。 例如,如果栅格是在ENVI中创建的,则代码的第三行应更改为:
categories <- as.character(attributes[,2])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.