EarthEngine JavaScript转RGEE代码报错,请求故障排查与修复
RGEE代码错误修复方案
错误原因分析
reduceRegion参数传递格式错误:Rgee中调用该方法时,无需将参数包裹在list()中,需直接传递命名参数,原代码的参数包裹方式导致GEE识别异常。- 变量引用错误:STR计算中误用未定义的
SWIR变量,应改为已定义的SWIR_param。 - NDVI波段不匹配:原JS代码使用B8和B4计算NDVI,R代码误写为B8和B3,需修正。
- maxPixels值不一致:原JS使用
1e13,R代码写为1e+09,可能导致像素数量不足报错,建议统一。
修复后的完整代码
collection_index <- function(image){ setNdviMinMax <- function(img){ # 修复reduceRegion参数传递方式,直接传命名参数而非list包裹 minMax <- img$select('NDVI')$ reduceRegion( reducer = ee$Reducer$minMax(), scale = 20, maxPixels = 1e13 # 与原JS代码保持一致 ) return(img$set( list( 'NDVI_min' = minMax$get('NDVI_min'), 'NDVI_max' = minMax$get('NDVI_max') ) )) } # 修正NDVI计算的波段,从B3改回B4 ndvi_param <- image$normalizedDifference(list("B8", "B4")) ndvi_param <- ndvi_param$rename('NDVI') SWIR_param <- image$select('B12')$rename('SWIR')$divide(10000) # 修复STR计算中的变量引用,SWIR改为SWIR_param STR_param <- SWIR_param$expression( '((1-SWIR)**2)/(2*SWIR)', list('SWIR' = SWIR_param$select('SWIR')) )$rename('STR') ndvi_param <- setNdviMinMax(ndvi_param) ndvi_param <- ndvi_param$updateMask(agrico) return(ndvi_param$addBands(STR_param)) } coll <- S2$map(collection_index) ee_print(coll)
内容的提问来源于stack exchange,提问作者cven
相关产品推荐
相关产品推荐

