【问题标题】:How to access class names in a raster categorical map如何访问栅格分类地图中的类名
【发布时间】:2018-03-18 12:28:27
【问题描述】:

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

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

"comp"comparison map 在时间 t+1"ref"reference map 从时间 t。然后我使用crosstab 函数生成confusion table。该表可用于探索类别在时间间隔内的变化。

contingency.Matrix <- crosstab(comp, ref)

结果采用matrix 格式,"comp" 类别位于column 中,"ref" 位于rows 中。还有columnrow 的名字标有数字1 to 4

现在我有 2 个问题,非常感谢有关如何解决这些问题的任何帮助。

1- 我想将类别名称分配给 matrix 方便其解释。

2- 现在假设我有 2005、2010 和 2015 年的三个 raster layers。 这意味着我将有两个 confusion tables 一个用于 2005-2010 和 2010-2015 年的另一个。自动化的最佳程序是什么 这个过程与用户的交互最少。

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

谢谢

【问题讨论】:

    标签: r raster


    【解决方案1】:

    我找到了第一个问题的部分答案。如果分类图是在 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])
    

    【讨论】:

      猜你喜欢
      • 2013-10-08
      • 2017-11-02
      • 2018-09-15
      • 2019-02-18
      • 1970-01-01
      • 2019-06-28
      • 2020-12-13
      • 1970-01-01
      • 2014-11-01
      相关资源
      最近更新 更多