gpt4 book ai didi

javascript - 将看起来像数字但不是整数的内容转换为整数(Google Earth Engine)

转载 作者:行者123 更新时间:2023-11-28 14:52:47 25 4
gpt4 key购买 nike

我正在尝试在 Google Earth Engine (GEE) 代码编辑器中获取图像集合中的图像数量。图像集合 filteredCollection 包含 GEE 上覆盖格林威治的所有 Landsat 8 图像(仅作为示例)。

图像数量打印为 113,但它似乎不是整数类型,我也无法将其强制为整数。看起来像这样:

var imageCollection = ee.ImageCollection("LANDSAT/LC8_SR");
var point = ee.Geometry.Point([0.0, 51.48]);
var filteredCollection = imageCollection.filterBounds(point);

var number_of_images = filteredCollection.size();
print(number_of_images); // prints 113
print(number_of_images > 1); // prints false
print(+number_of_images); // prints NaN
print(parseInt(number_of_images, 10)); // prints NaN
print(Number(number_of_images)); // prints NaN
print(typeof number_of_images); // prints object
print(number_of_images.constructor); // prints <Function>
print(number_of_images.constructor.name); // prints Ik

var number_of_images_2 = filteredCollection.length;
print(number_of_images_2); // prints undefined

知道这里发生了什么以及如何以整数形式获取集合中的图像数量吗?

P.S.:Collection.size() 是获取 GEE docs 中图像数量的推荐函数。 .

最佳答案

这是由于 GEE 架构、GEE 客户端和服务器端交互的方式造成的。您可以在docs中阅读相关内容。 .

但简而言之:

如果您正在编写 Collection.size(),那么您基本上是在您这边(客户端)构建一个 JSON 对象,该对象不包含任何信息-se。调用 print 函数后,您会将 JSON 对象发送到服务器端,在服务器端对其进行评估并返回输出。这也适用于包含变量 number_of_images 的任何其他函数。如果该函数在服务器端评估,它将起作用(因为它将在那里评估),如果该函数仅在本地执行(如 number_of_images > 1),它将失败。这对于如何在 GEE 中使用循环也有“重大”影响,文档中对此进行了更好的描述(上面的链接)。

解决方案:

您可以使用函数.getInfo(),它基本上从服务器检索结果,并让您将其分配给变量。

所以

var number_of_images =filteredCollection.size().getInfo();

将带您到达您想要的地方。请谨慎使用此方法,如文档中所述:

You shouldn't use getInfo() unless you absolutely need to. If you call getInfo() in your code, Earth Engine will open the container and tell you what's inside, but it will block the rest of your code until that's done

HTH

关于javascript - 将看起来像数字但不是整数的内容转换为整数(Google Earth Engine),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43948008/

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