如何从栅格中选择特定像素(斜率> =特定值)

时间:2017-09-13 22:43:25

标签: r raster

我希望我没有忽视这方面的其他地方的类似问题,但我还无法解决我的问题......

我有一个分辨率为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

等。 它返回一个矩阵,坐标消失了(我可能需要稍后将DEM中的像素链接到.asc文件的像素)。 好吧,我真的不知道如何解决这个问题,不幸的是我是一个R-beginner ...... 谢谢你的帮助!

1 个答案:

答案 0 :(得分: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.您可以将其与其他网格一起使用以进行进一步分析。