0

I'm a relatively new user of Google Earth Engine, although have some experience coding in R. I'm trying to merge several ee.FeatureCollections with identical property labels, as seen in a brief example using trees below.

I've first defined two Feature Collections (random points, just to illustrate the problem), setting two properties for each: a 'type' and a 'status' label with associated values.

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');

I then merge the two Feature Collections: var treesMerge = trees1.merge(trees2);

However, when I print the merged collection, the properties associated with each Feature have not be carried over from the individual Feature Collections:

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

screenshot of printed results

Is there a way to merge Feature Collections that preserves these properties?

Kevin Reid
  • 37,492
  • 13
  • 80
  • 108

1 Answers1

1

You wrote ee.FeatureCollection(...).set('type','Sycamore').set('status', 'dead'), which does not set properties on the individual features, but properties on the collection as a whole. .merge() doesn't preserve those properties, but it isn't a big deal that it doesn't since copying them would be easy if needed.

If you set properties on the individual features, then .merge() will preserve them.

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);
Kevin Reid
  • 37,492
  • 13
  • 80
  • 108
  • Ah, I see - thanks Kevin! In a similar vein, is it possible to add properties to each feature in a feature collection once the collection is already created? For example, I have an ee.List of ID numbers to be associated with the features in the collection (884 features in collection, and list has 884 values). – Alexis Moyer Sep 16 '21 at 09:40
  • @AlexisMoyer Possible, yes, but it will generally be best to put your ID numbers on the collection while it is being created, not afterward. If you would like more help, please post a new question that shows samples of your actual features and IDs and _how you are obtaining them._ – Kevin Reid Sep 16 '21 at 13:56