【问题标题】:Create new raster using 'if statement' in R在 R 中使用“if 语句”创建新栅格
【发布时间】:2016-10-14 09:42:45
【问题描述】:

我想根据另一个栅格的值在 R 中创建一个新栅格。我可以使用 CON 工具在 ArcGIS 中执行此操作,但我似乎无法在 R 中找到方法。以下是我所做的:

r<-raster("b1.tif")
if (r>33){
r2<-200
}else{
r2<--0.156*r^2 + 11.2*r + 0.1
}

上面是返回错误:

Error in if (slp > 33) { : argument is not interpretable as logical

我哪里错了?

【问题讨论】:

  • 你打算用 r>33 做什么?您正在将苹果与香蕉进行比较。 r 是“rasterLayer”类的对象,33 是整数。

标签: r gis raster


【解决方案1】:

r &lt; 33 不起作用,因为您正在将“rasterLayer”类的对象与整数进行比较。您必须比较 tiff 的值(如最大值)。

r <- raster("b1.tif")
if (r@data@max > 33){
  r2 <- 200
}else{
  r2 <-- 0.156*r^2 + 11.2*r + 0.1
}

如果您想访问 tiff 的所有值,请执行以下操作:r@data@values 根据此值,您可以创建第二个 tiff。 如果你想复制整个 tiff 就这样做:r &lt;- r2

【讨论】:

  • 我试过了
  • 我试过这个,但我得到一个错误'缺少 TRUE/FALSE 需要的值'和另一个'条件长度 > 1,并且只使用第一个元素。
  • 请更准确地解释你想做什么,我可以帮忙..你想和 33 比较什么?
猜你喜欢
  • 1970-01-01
  • 2016-10-13
  • 2020-03-03
  • 1970-01-01
  • 2015-09-17
  • 2020-12-14
  • 1970-01-01
  • 2020-10-07
  • 2019-06-20
相关资源
最近更新 更多