2017-10-06 11 views
0

私はいくつかの分類されたラスタレイヤをカテゴリの土地カバーマップとして持っています。ラスタカテゴリマップのクラス名にアクセスする方法

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

"comp"がある:私はこのようなラスター機能を使用してメモリにロードしますが、それらは異なる時点(例えば2005年と2015年) から、次のとおりです。まったく同じカテゴリを持つすべての層は、("water", "Trees", "Urban","bare soil"を言うことができます) comparison mapの時刻はであり、"ref"は時刻tからreference mapです。次に、confusion tableを生成するためにcrosstab関数を使用しました。この表を使用して、時間間隔によるカテゴリの変更を調べることができます。

contingency.Matrix <- crosstab(comp, ref) 

結果はrowscolumn"ref""comp"カテゴリとmatrixフォーマットです。また、columnrowの名前は、数字の番号が1 to 4となっています。

今私は2つの質問があり、本当にそれらを解決するための助けに感謝します。

1-私は matrixの列と行にカテゴリ名を割り当てて、解釈を容易にしたいと考えています。

2-が今の私はこれは私が2 confusion tables 2005年から2010年用と 2010年から2015年のために別のものを持っているだろうこと2005年、2010年と2015年 ための3つのraster layersを持っているとしましょう。 このプロセスを最小限のユーザーとのやりとりで自動化する最良の手順は何ですか?

ラスタレイヤーをロードしてから、コードをリストに保存するようにユーザーに依頼すると考えました。ユーザーから何年ものベクトルを求めていますが、問題はラスターレイヤーの順序と年数が同じであることを確認する方法です。そしてこれを行うもっとエレガントな方法があります。

ありがとうございました

答えて

0

私の最初の質問に対する部分的な答えが見つかりました。カテゴリマップは「.rst」拡張子でTerrSet(IDRISI)ソフトウェアで作成されている場合、私はこのようなカテゴリ名を抽出することができます。

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

と私は、カテゴリの名前を持つベクトルを取得します。しかし、ラスターレイヤーを異なる拡張子で作成すると、コードは機能しません。たとえば、ENVIでラスタを作成した場合、コードの3行目は次のように変更されます。

categories <- as.character(attributes[,2]) 
関連する問題