如何访问栅格分类地图中的类名

时间:2017-10-06 16:28:10

标签: r raster

我有一些分类栅格图层作为分类土地覆盖图。所有图层都具有完全相同的类别(例如:"water", "Trees", "Urban","bare soil"),但它们来自不同的时间点(例如2005年和2015年) 我使用像这样的光栅函数将它们加载到内存中:

comp <- raster("C:/workingDirectory4R/rasterproject/2005marsh3.rst")
ref <-  raster("C:/workingDirectory4R/rasterproject/2013marsh3.rst")

"comp"是时间comparison map的{​​{1}},而t+1是时间"ref"的{​​{1}}。然后我使用reference map函数生成t。此表可用于通过时间间隔探索类别中的更改。

crosstab

结果采用confusion table格式,contingency.Matrix <- crosstab(comp, ref) 中的matrix类别和"comp"中的column类别。 "ref"rows名称标有数字column

现在我有2个问题,我真的很感激有关如何解决它们的任何帮助。

1-我想将类别名称分配给列和行     row以促进其解释。

2-现在让我们说我在2005年,2010年和2015年有三个1 to 4。     这意味着2005-2010我将有两个matrix     2010-2015的另一个。什么是自动化的最佳程序     这个过程与用户的互动很少。

我想让用户加载栅格图层,然后代码将它们保存在列表中。然后我要求用户提供多年的向量,但问题是如何确保栅格图层的顺序和年份相同?是否有更优雅的方式来做到这一点。

谢谢

1 个答案:

答案 0 :(得分:0)

我找到了第一个问题的部分答案。如果使用&#34; .rst&#34;在TerrSet(IDRISI)软件中创建分类图。然后,我可以提取类别名称:

comp <- raster("C:/rasterproject/2005subset.rst")
attributes <- data.frame(comp@data@attributes)
categories <- as.character(attributes[,8])

我得到一个带有类别名称的向量。但是,如果使用不同的扩展名创建栅格图层,则代码将无法正常工作。例如,如果栅格是在ENVI中创建的,那么代码的第三行应该更改为:

categories <- as.character(attributes[,2])