我正在尝试将以下 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
正在从哨点栅格进行彩色合成