gpt4 book ai didi

google-earth-engine - 谷歌地球引擎 : trying to get an array of values from a feature collection but I'm getting an empty array out

转载 作者:行者123 更新时间:2023-12-05 02:08:49 24 4
gpt4 key购买 nike

我有一个点特征,我用它来减少图像集合中的值。

通过使用此代码映射图像(特别是获取 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() 返回一个空数组。

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() 返回的对象执行此操作的方法)。

有谁知道为什么会这样,或者是否有更好的方法能够以我可以使用它们以编程方式进行数学运算的方式获取这些值?

对于这里的初学者问题,我深表歉意,这是我一直在努力解决的问题。

谢谢!

最佳答案

为什么 getArray 不起作用:

collection.getArray('x')ee.Array(collection.get('x')) 相同——也就是说,它查找属性你称之为什么。由于您的集合本身 没有名为“nd”的属性,因此没有数据。 get 系列不对集合的内容进行操作。

改为做什么:

要从集合中获取任何类型的数据,请使用reduceColumns 操作;如果您需要所有这些,请使用 ee.Reducer.toList() 作为 reducer。

print(my_vals
.reduceColumns(ee.Reducer.toList(), ['nd'])
.get('list'));

关于google-earth-engine - 谷歌地球引擎 : trying to get an array of values from a feature collection but I'm getting an empty array out,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60516181/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com