在 Google Earth Engine 中按系统索引拆分特征集合?

Splitting a feature collection by system index in Google Earth Engine?

我正在尝试从 GEE 导出一个大型特征集合。我意识到 Python API 比 Java 更容易做到这一点,但鉴于我的研究时间有限,我想看看我是否可以提取特征集合分段,然后在导出后附加单独的 CSV 文件。

我尝试使用过滤功能来执行任务,这是我以前在图像集上看到过的功能。这是我正在尝试做的事情的一个小例子

鉴于名为 "points" 的 10 个空间点的特征集合,我尝试创建一个仅包含前五个点的新特征集合:

var points_chunk1 = points.filter(ee.Filter.rangeContains('system:index', 0, 5));

当我执行这个函数时,我收到以下错误:"An internal server error has occurred"

我不确定为什么这段代码没有按预期执行。如果您对这个问题的了解比我多,请就拆分样本的替代方法或代码中的错误所在提出建议。

非常感谢!

system:index 实际上是 GEE 为该功能提供的 ID,它不应该像数组中的索引一样使用。我认为 JS 应该足以导出大型功能集合,但有一种方法可以在不依赖 system:index 的情况下完成您想做的事情,因为这可能不一致。

首先,了解您正在处理的功能的数量是个好主意。这是因为通常当您对大型要素集合使用 size().getInfo() 时,UI 可能会冻结,有时选项卡会变得无响应。这里我定义了 chunks 和 collectionSize。它应该在客户端定义,因为我们想在循环中执行 Export,这在服务器大小循环中是不可能的。在循环中,您可以简单地创建一个从不同点开始的特征子集,方法是将特征转换为列表并将子集更改回特征集合。

var chunk = 1000;
var collectionSize = 10000
for (var i = 0; i<collectionSize;i=i+chunk){
  var subset = ee.FeatureCollection(fc.toList(chunk, i));
  Export.table.toAsset(subset, "description", "/asset/id")
}