2017-10-06 12 views
0

J'ai certaines couches raster classées en tant que cartes de couverture terrestre catégorielles. Toutes les couches ayant exactement les mêmes catégories (permet de dire: "water", "Trees", "Urban","bare soil"), mais ils sont des points de temps différents (par exemple 2005 et 2015) je les charge en mémoire en utilisant la fonction de trame comme ceci:Comment accéder aux noms de classes dans une carte catégorielle raster

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

"comp" est le comparison map à l'instant t+1 et "ref" est le reference map à partir de l'heure t. Ensuite, j'ai utilisé la fonction crosstab pour générer le confusion table. Cette table peut être utilisée pour explorer les changements dans les catégories à travers l'intervalle de temps.

contingency.Matrix <- crosstab(comp, ref) 

Le résultat est au format matrix avec les "comp" catégories dans le column et "ref" dans le rows. Et column et row noms étiquetés avec des numéros numéros 1 to 4.

Maintenant, j'ai 2 questions et j'apprécie vraiment toute aide sur la façon de les résoudre.

1- Je veux assigner les noms de catégorie aux colonnes et aux rangées de le matrix pour faciliter son interprétation.

2- Maintenant, nous allons dire que j'ai trois raster layers pour 2005, 2010 et 2015. Cela signifie que j'aurais deux confusion tables un pour 2005-2010 et autre pour 2010-2015. Quelle est la meilleure procédure pour automatiser ce processus avec l'interaction minimale de l'utilisateur.

J'ai pensé à demander à l'utilisateur de charger les couches raster, puis le code les enregistrer dans une liste. Ensuite, je demande un vecteur d'années de l'utilisateur mais le problème est comment puis-je m'assurer que l'ordre des couches raster et les années sont les mêmes? Et y a-t-il une manière plus élégante de faire ceci.

Merci

Répondre

0

J'ai trouvé une réponse partielle à ma première question. Si la carte est catégorique créé dans le logiciel TerrSet (IDRISI) avec l'extention « .rst » je peux extraire les noms des catégories comme celle-ci:

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

et je reçois un vecteur avec le nom des catégories. Toutefois, si les couches raster sont créées avec une extension différente, le code ne fonctionnera pas. Par exemple, si le raster est créé dans ENVI, la troisième ligne du code doit être remplacée par:

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