簡體   English   中英

如何在柵格分類地圖中訪問類名

[英]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+1comparison map"ref"是時間treference map 然后,我使用了crosstab函數來生成confusion table 該表可用於瀏覽時間間隔內類別的變化。

contingency.Matrix <- crosstab(comp, ref)

結果為matrix格式,在column具有"comp"類別, rows中具有"ref" columnrow名標有數字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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM