0

我正在尝试将以下 JavaScript 翻译成 R 但遇到问题:

/*
Author of the script: Carlos Bentes
*/

// Normalized Difference Vegetation Index
var ndvi = (B08-B04)/(B08+B04);

// Threshold for vegetation
var veg_th = 0.4;

// Simple RGB
var R = 2.5*B04;
var G = 2.5*B03;
var B = 2.5*B02;

// Transform to Black and White
var Y = 0.2*R + 0.7*G + 0.1*B;
var pixel = [Y, Y, Y];

// Change vegetation color
if(ndvi >= veg_th)
  pixel = [0.1*Y, 1.8*Y, 0.1*Y];

return pixel;

这是绿色城市索引,它是可与 Sentinel-Hub 服务一起使用的自定义脚本存储库的一部分。

具体来说,我遇到了以下问题:

var pixel = [Y, Y, Y];

if(ndvi >= veg_th)
  pixel = [0.1*Y, 1.8*Y, 0.1*Y];

return pixel;

我认为var pixel = [Y, Y, Y];是一样的pixel <- c(Y, Y, Y)?这意味着在if声明中我会:

if(ndvi >= veg_th){ 
   pixel <- c(0.1*Y, 1.8*Y, 0.1*Y) 
   return(pixel)
}

但我收到一个错误:

错误if (ndvi >= veg_th) {:参数不能解释为逻辑

对于那些不熟悉哨兵的人,关于我确实理解的部分的一些注释:

  • B04并且B08是来自 Sentinel 的栅格波段,所以
  • ndvi也是一个栅格(归一化差异植被指数)
  • veg_th是一个值,设置为解释结果的阈值ndvi
  • R, G, 并且B正在从哨点栅格进行彩色合成
4

0 回答 0