【问题标题】:Keeping feature collection properties when merging with another feature collection in Google Earth Engine与 Google 地球引擎中的另一个要素集合合并时保留要素集合属性
【发布时间】:2021-09-15 14:27:23
【问题描述】:

我是 Google Earth Engine 的一个相对较新的用户,虽然在 R 中具有一些编码经验。我正在尝试将几个具有相同属性标签的 ee.FeatureCollections 合并,如下面使用树的简短示例所示。

我首先定义了两个特征集合(随机点,只是为了说明问题),为每个集合设置两个属性:一个“类型”和一个带有相关值的“状态”标签。

var trees = ee.FeatureCollection(ee.Geometry.Point([-122.22599, 37.17605])).set('type','Sycamore').set('status', 'dead');

var trees2 = ee.FeatureCollection(ee.Geometry.Point([-125.3456, 38.16578])).set('type','Aspen').set('status','alive');

然后我合并两个特征集合: var treesMerge = trees1.merge(trees2);

但是,当我打印合并的集合时,与每个功能相关的属性并没有从各个功能集合中继承:

print(trees1); print(trees2); print(treesMerge);

有没有办法合并保留这些属性的特征集合?

【问题讨论】:

    标签: javascript merge google-earth-engine


    【解决方案1】:

    您写了ee.FeatureCollection(...).set('type','Sycamore').set('status', 'dead'),它没有设置单个功能的属性,而是设置整个集合的属性.merge() 不会保留这些属性,但它不会保留这些属性并没有什么大不了的,因为如果需要,复制它们会很容易。

    如果您为各个功能设置属性,则.merge() 将保留它们。

    var trees1 = ee.FeatureCollection([
      ee.Feature(ee.Geometry.Point([-122.22599, 37.17605]))
        .set('type', 'Sycamore')
        .set('status', 'dead')
    ]);
    
    var trees2 = ee.FeatureCollection([
      // This is equivalent to using .set()
      ee.Feature(
        ee.Geometry.Point([-125.3456, 38.16578]),
        {'type': 'Aspen', 'status': 'alive'}
      )
    ]);
    
    var treesMerge = trees1.merge(trees2);
    
    print(trees1);
    print(trees2);
    print(treesMerge);
    

    【讨论】:

    • 啊,我明白了 - 谢谢凯文!类似地,一旦集合已经创建,是否可以为特征集合中的每个特征添加属性?例如,我有一个 ee.List 与集合中的特征相关联的 ID 号(集合中有 884 个特征,列表有 884 个值)。
    • @AlexisMoyer 可能,是的,但通常最好在创建集合时将您的 ID 号放在集合上,而不是之后。如果您需要更多帮助,请发布一个新问题,其中显示您的实际功能和 ID 示例以及您如何获得它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 2017-10-07
    • 2011-10-28
    • 1970-01-01
    • 2011-05-23
    • 2013-01-10
    • 2017-11-28
    相关资源
    最近更新 更多