Alexis Moyer
Alexis Moyer

Reputation: 3

Keeping feature collection properties when merging with another feature collection in Google Earth Engine

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?

Upvotes: 0

Views: 2118

Answers (1)

Kevin Reid
Kevin Reid

Reputation: 43733

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

Upvotes: 1

Related Questions