2017-02-13 141 views
0

在谷歌地球编辑器中,我们创建使用reduceRegion()函数的对象:javascript - 无法使用其密钥访问对象的属性?

var meanValue2015 = ndvi2015.reduceRegion({ 
    reducer: ee.Reducer.mean(), 
    geometry: justEC15.geometry(), 
    crs: 'EPSG:4326', 
    scale: 30, 
}); 

我的问题是,meanValue2015似乎是一个对象 - 我输入

print(meanValue2015); 
print(typeof(meanValue2015)); 
print(Object.keys(meanValue2015)); 

,并获得“ Object(1 property) - NDVI:0.3177 ...“,”Object“,然后是”[]“?然后

print(meanValue2015.NDVI); 
print(meanValue2015['NDVI']); 

是未定义?有什么明显的我在这里做错了吗?

+0

'打印(meanValue2015(“NDVI”);'访问属性,你需要使用方括号 –

+0

@AlexanderDerck对不起,这就是我的意思是,在错误键入它,上述编辑 – Conor

+0

越来越不确定你确定'meanValue2015'会成为一个对象吗?毕竟,'typeof [] ==='object'' – dargue3

回答

0

meanValue2015是一个地球引擎对象:一个字典。所以..

var meanValue2015 = ndvi2015.reduceRegion({ 
    reducer: ee.Reducer.mean(), 
    geometry: justEC15.geometry(), 
    crs: 'EPSG:4326', 
    scale: 30, 
}); 

var realValue = ee.Number(meanValue2015.get("ndvi")); 
print("real value (object):", realValue) 

// realValue is a EE object, so you have to use it as is.. 
// this would be easy, but it is wrong.. 
var newValueWrong = realValue + 1 

// this is the right way.. 
var newValueRight = realValue.add(ee.Number(1)) 

print("wrong:", newValueWrong) 
print("right:", newValueRight) 

// there is another way, but it is not recommendable because you'd 
// be wasting EE computing capacity (Google's gift! don't waste it) 

var localValue = realValue.getInfo() + 1 

print("value in the local scope (try to avoid)", localValue) 
+0

谢谢!对不起,我有一段时间没有在堆栈中,但你说得对,这个评论是真实的。 – Conor