Google Earth Engine:尝试从要素集合中获取值数组,但我得到的是一个空数组
Google Earth Engine: trying to get an array of values from a feature collection but I'm getting an empty array out
我有一个点特征,我用它来减少图像集合中的值。
通过使用此代码映射图像(特别是获取 ndvi 值),这些值作为新特征的 属性 获得:
var my_vals = images.map(function (img){
var ndviImg = img.normalizedDifference(['B5', 'B4']);
return ee.Feature(area, ndviImg.reduceRegion(ee.Reducer.mean(), point));
});
我需要将这些值放入一个数组中,以便我可以对它们进行额外的计算。但是,函数 Feature.getArray() returns 一个空数组。
var myArray = my_vals.getArray("nd");
print(my_vals); // returns "[]"
但是我知道这些值确实存在于属性中,因为如果我 运行 下面的代码我可以打印出属性列表。
var myList = my_vals.aggregate_array("nd");
print(myList) // this prints a list of my values
我的目标是将这些值的一个列表除以另一个。据我所知,我需要数组中的值才能执行此操作(我找不到使用 .aggregate_array() returns 的对象执行此操作的方法)。
有人知道这是为什么吗?或者有更好的方法来获取这些值,我可以使用它们以编程方式进行数学计算吗?
对于这里的初学者问题,我深表歉意,这是我一直在努力解决的问题。
谢谢!
为什么 getArray
不起作用:
collection.getArray('x')
与 ee.Array(collection.get('x'))
相同——也就是说,它查找您调用它的对象的属性。由于您的 collection 本身 没有名为 'nd' 的 属性,因此没有数据。 get
系列不对 collection 的内容进行操作。
改为做什么:
要从 collection 中获取任何类型的数据,请使用 reduceColumns
操作;如果您需要所有这些,请使用 ee.Reducer.toList()
作为减速器。
print(my_vals
.reduceColumns(ee.Reducer.toList(), ['nd'])
.get('list'));
我有一个点特征,我用它来减少图像集合中的值。
通过使用此代码映射图像(特别是获取 ndvi 值),这些值作为新特征的 属性 获得:
var my_vals = images.map(function (img){
var ndviImg = img.normalizedDifference(['B5', 'B4']);
return ee.Feature(area, ndviImg.reduceRegion(ee.Reducer.mean(), point));
});
我需要将这些值放入一个数组中,以便我可以对它们进行额外的计算。但是,函数 Feature.getArray() returns 一个空数组。
var myArray = my_vals.getArray("nd");
print(my_vals); // returns "[]"
但是我知道这些值确实存在于属性中,因为如果我 运行 下面的代码我可以打印出属性列表。
var myList = my_vals.aggregate_array("nd");
print(myList) // this prints a list of my values
我的目标是将这些值的一个列表除以另一个。据我所知,我需要数组中的值才能执行此操作(我找不到使用 .aggregate_array() returns 的对象执行此操作的方法)。
有人知道这是为什么吗?或者有更好的方法来获取这些值,我可以使用它们以编程方式进行数学计算吗?
对于这里的初学者问题,我深表歉意,这是我一直在努力解决的问题。
谢谢!
为什么 getArray
不起作用:
collection.getArray('x')
与 ee.Array(collection.get('x'))
相同——也就是说,它查找您调用它的对象的属性。由于您的 collection 本身 没有名为 'nd' 的 属性,因此没有数据。 get
系列不对 collection 的内容进行操作。
改为做什么:
要从 collection 中获取任何类型的数据,请使用 reduceColumns
操作;如果您需要所有这些,请使用 ee.Reducer.toList()
作为减速器。
print(my_vals
.reduceColumns(ee.Reducer.toList(), ['nd'])
.get('list'));