Объединение двух наборов функций по идентификатору в Earth Engine Javascript API
Я просто хочу объединить две коллекции таким образом, чтобы объединенная коллекция объектов имела все свойства первичных и вторичных коллекций объектов.
// Create the primary collection.
var primaryFeatures = ee.FeatureCollection([
ee.Feature(null, {foo: 0, ID: 'a'}),
ee.Feature(null, {foo: 1, ID: 'b'}),
ee.Feature(null, {foo: 1, ID: 'c'}),
ee.Feature(null, {foo: 2, ID: 'd'}),
]);
// Create the secondary collection.
var secondaryFeatures = ee.FeatureCollection([
ee.Feature(null, {bar: 1, ID: 'a'}),
ee.Feature(null, {bar: 1, ID: 'b'}),
ee.Feature(null, {bar: 2, ID: 'c'}),
ee.Feature(null, {bar: 3, ID: 'd'}),
]);
// Use an equals filter to specify how the collections match.
var toyFilter = ee.Filter.equals({
leftField: 'ID',
rightField: 'ID'
});
// Define the join.
var innerJoin = ee.Join.simple()
// Apply the join.
var toyJoin = innerJoin.apply(primaryFeatures, secondaryFeatures, toyFilter);
// Print the result.
print('Inner join toy example:', toyJoin);
В финальной коллекции игрушек toyJoin должно быть 5 Feature с идентификатором 3 properties, foo и bar. Большое спасибо!
1 ответ
Я не ожидаю 5 функций в выводе, потому что у вас есть только четыре уникальных идентификатора и соотношение 1:1 между идентификаторами в ваших входных коллекциях. Независимо от того, чтобы получить внутреннее соединение, используйте ee.Join.inner()
, Чтобы объединить результаты, сопоставьте внутреннее соединение:
// Create the primary collection.
var primaryFeatures = ee.FeatureCollection([
ee.Feature(null, {foo: 0, ID: 'a'}),
ee.Feature(null, {foo: 1, ID: 'b'}),
ee.Feature(null, {foo: 1, ID: 'c'}),
ee.Feature(null, {foo: 2, ID: 'd'}),
]);
// Create the secondary collection.
var secondaryFeatures = ee.FeatureCollection([
ee.Feature(null, {bar: 1, ID: 'a'}),
ee.Feature(null, {bar: 1, ID: 'b'}),
ee.Feature(null, {bar: 2, ID: 'c'}),
ee.Feature(null, {bar: 3, ID: 'd'}),
]);
// Use an equals filter to specify how the collections match.
var toyFilter = ee.Filter.equals({
leftField: 'ID',
rightField: 'ID'
});
// Define the join.
var innerJoin = ee.Join.inner();
// Apply the join.
var toyJoin = innerJoin.apply(primaryFeatures, secondaryFeatures, toyFilter);
// Print the result.
print('Inner join toy example:', toyJoin);
print(toyJoin.map(function(pair) {
var f1 = ee.Feature(pair.get('primary'));
var f2 = ee.Feature(pair.get('secondary'));
return f1.set(f2.toDictionary());
}));