2017-09-13 5 views
0

私はこの側の他の場所で同様の問題を見落としていないことを願っていますが、私の問題はまだ解決できませんでした...ラスターから特定のピクセルを選択する方法(スロープ> =一定の値)

私は10x10mの解像度のDEMを持っています。 35°を超える勾配を持つすべてのピクセルを見つけて、その解説を見つける必要があります。 (この後(?)これを100x100mの別のプログラムのグリッドと何らかの形でリンクさせ、さらにそれらのプログラムで作業する必要があります)。どうやってこれを行うことができますか?私が今までやった

DEM=raster("DEM_10m.tif") 

DEM 
class  : RasterLayer 
dimensions : 2731, 2407, 6573517 (nrow, ncol, ncell) 
resolution : 10, 10 (x, y) 
extent  : 57495.5, 81565.5, 202547.5, 229857.5 (xmin, xmax, ymin, ymax) 
coord. ref. : +proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=0 +y_0=-5000000 +datum=hermannskogel +units=m +no_defs +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 
names  : DEM_10m 
values  : -32768, 32767 (min, max) 

slope_aspect <- terrain(DEM, opt=c("slope", "aspect"), unit="degrees") 
slope_aspect$elevation <- DEM 
slope_aspect 
       x  y  slope  aspect 
1  79560.5 229462.5 3.007349e+01 3.273391e+02 
2  79570.5 229462.5 2.946020e+01 3.351363e+02 
3  79550.5 229452.5 3.025771e+01 3.150000e+02 
4  79560.5 229452.5 3.200538e+01 3.231301e+02 
5  79570.5 229452.5 2.902189e+01 3.374794e+02 
6  79540.5 229442.5 2.391028e+01 3.195739e+02 
7  79550.5 229442.5 3.054151e+01 3.063844e+02 
8  79560.5 229442.5 2.719728e+01 3.110548e+02 

など

を私が行います

slope_35<-slope_aspect[slope_aspect$slope>=35] 
slope_35 
slope  aspect elevation 
     [1,] 35.14579 7.349564e+01  969 
     [2,] 35.13729 1.465922e+02  975 
     [3,] 35.94211 4.639718e+01  1063 
     [4,] 36.00673 4.081508e+01  1057 
     [5,] 36.19906 9.785331e+01  917 

など それが行列を返し、座標はなくなっている(これはおそらく、IピクセルをDEMから.ascファイルのピクセルにリンクする必要があります)。 まあ、私はこの仕事を解決する方法を本当に知っているだけで、不運にも私はR初心者です... ありがとうございました!

答えて

0

あなたはこのしきい値を超える画素だけでラスタを得ることができます。

slope_aspect <- terrain(DEM, opt=c("slope", "aspect"), unit="degrees") 

slope_aspect_masked <- mask(x = slope_aspect , mask = slope_aspect[[1]]>35 , maskvalue = 0) 

出力はあなたが他のグリッドでそれを使用することができます35の上に勾配値を持つピクセル単位の有効な値を持つラスタファイルになりますさらなる分析。

+0

ありがとうございます!レイヤ "アスペクト"の値に応じて "N"/"E"/"S"/"W"を印刷するラスタレイヤを追加する方法を教えてください。たとえばアスペクトが316-360または0-45の場合は、北には「N」、アスペクト46-135度は「E」、アスペクト136-225は「S」、アスペクトは226-315が印刷されます。 W "である。あるいは、それをデータフレームに変換してそのようなことをする必要がありますか? – Lara

+0

また、このラスタをより大きなものに変換する必要があります。これは、10x10mピクセルの値(アスペクト/スロープ/標高)を示しています.100x100mピクセルのラスターを得るために、値を変換する必要があります。ですから、どういうわけか10x10の隣接セルで平均を計算する必要があるでしょうか?これらの質問すべて申し訳ありません... – Lara

+0

@Lara [resample](https://www.rdocumentation.org/packages/raster/versions/2.5-8/topics/resample)または[projectRaster](https: /www.rdocumentation.org/packages/raster/versions/2.5-8/topics/projectRaster)関数を使用します。また、[集計](https://www.rdocumentation.org/packages/raster/versions/2.5-8/topics/aggregate)の平均値を 'fact = 10'と使用することもできます –

関連する問題