我有一些分类栅格图层作为分类土地覆盖图。所有图层都具有完全相同的类别(例如:"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的另一个。什么是自动化的最佳程序
这个过程与用户的互动很少。
我想让用户加载栅格图层,然后代码将它们保存在列表中。然后我要求用户提供多年的向量,但问题是如何确保栅格图层的顺序和年份相同?是否有更优雅的方式来做到这一点。
谢谢
答案 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])