İki koleksiyonun öğeleri arasındaki tüm eşleşmeleri listelemek için ee.Join.inner()
kullanın. İç birleştirme işleminin çıkışı bir FeatureCollection
olur (bir ImageCollection
ile başka bir ImageCollection
birleştirilse bile). Çıkıştaki her özellik bir eşleşmeyi temsil eder. Eşleşen öğeler, özelliğin iki özelliğinde depolanır. Örneğin, feature.get('primary')
, birincil koleksiyondaki ve feature.get('secondary')
içinde depolanan ikincil koleksiyondaki öğeyle eşleşen öğedir. (Bu mülkler için farklı adlar inner()
bağımsız değişkeni olarak belirtilebilir ancak varsayılan olarak ‘primary’
ve ‘secondary’
kullanılır.) Bire çok ilişkiler, çıkışta birden fazla özellikle temsil edilir. Her iki koleksiyondaki bir öğenin eşleşmesi yoksa bu öğe çıkışta yer almaz.
ImageCollection
girişlerini kullanan birleştirme örnekleri, FeatureCollection
girişlerine herhangi bir değişiklik yapılmadan uygulanır. Bir FeatureCollection
'yi ImageCollection
'a ve bunun tersini de bağlayabilirsiniz. Aşağıdaki iç birleştirmeyle ilgili örnek
Kod Düzenleyici (JavaScript)
// Create the primary collection. var primaryFeatures = ee.FeatureCollection([ ee.Feature(null, {foo: 0, label: 'a'}), ee.Feature(null, {foo: 1, label: 'b'}), ee.Feature(null, {foo: 1, label: 'c'}), ee.Feature(null, {foo: 2, label: 'd'}), ]); // Create the secondary collection. var secondaryFeatures = ee.FeatureCollection([ ee.Feature(null, {bar: 1, label: 'e'}), ee.Feature(null, {bar: 1, label: 'f'}), ee.Feature(null, {bar: 2, label: 'g'}), ee.Feature(null, {bar: 3, label: 'h'}), ]); // Use an equals filter to specify how the collections match. var toyFilter = ee.Filter.equals({ leftField: 'foo', rightField: 'bar' }); // Define the join. var innerJoin = ee.Join.inner('primary', 'secondary'); // Apply the join. var toyJoin = innerJoin.apply(primaryFeatures, secondaryFeatures, toyFilter); // Print the result. print('Inner join toy example:', toyJoin);
import ee import geemap.core as geemap
Colab (Python)
# Create the primary collection. primary_features = ee.FeatureCollection([ ee.Feature(None, {'foo': 0, 'label': 'a'}), ee.Feature(None, {'foo': 1, 'label': 'b'}), ee.Feature(None, {'foo': 1, 'label': 'c'}), ee.Feature(None, {'foo': 2, 'label': 'd'}), ]) # Create the secondary collection. secondary_features = ee.FeatureCollection([ ee.Feature(None, {'bar': 1, 'label': 'e'}), ee.Feature(None, {'bar': 1, 'label': 'f'}), ee.Feature(None, {'bar': 2, 'label': 'g'}), ee.Feature(None, {'bar': 3, 'label': 'h'}), ]) # Use an equals filter to specify how the collections match. toy_filter = ee.Filter.equals(leftField='foo', rightField='bar') # Define the join. inner_join = ee.Join.inner('primary', 'secondary') # Apply the join. toy_join = inner_join.apply(primary_features, secondary_features, toy_filter) # Print the result. display('Inner join toy example:', toy_join)
Önceki örnekte, tablolar arasındaki ilişkinin filtrede tanımlandığına dikkat edin. Bu, ‘foo’
ve ‘bar’
alanlarının birleştirme alanları olduğunu gösterir. Ardından, bir iç birleştirme belirtilir ve koleksiyonlara uygulanır. Çıktıyı inceleyin ve olası her eşleşmenin bir Feature
olarak temsil edildiğini gözlemleyin.
MODIS ImageCollection
nesnelerini birleştirme örneğini inceleyebilirsiniz. MODIS kalite verileri bazen görüntü verilerinden ayrı bir koleksiyonda depolanır. Bu nedenle, kalite verilerini uygulamak için iki koleksiyonu birleştirmek üzere bir iç birleştirme kullanmak uygundur. Bu durumda, görüntü edinme süreleri aynı olduğundan iki koleksiyon arasındaki bu ilişkiyi belirtme işini eşitlik filtresi üstlenir:
Kod Düzenleyici (JavaScript)
// Make a date filter to get images in this date range. var dateFilter = ee.Filter.date('2014-01-01', '2014-02-01'); // Load a MODIS collection with EVI data. var mcd43a4 = ee.ImageCollection('MODIS/MCD43A4_006_EVI') .filter(dateFilter); // Load a MODIS collection with quality data. var mcd43a2 = ee.ImageCollection('MODIS/006/MCD43A2') .filter(dateFilter); // Define an inner join. var innerJoin = ee.Join.inner(); // Specify an equals filter for image timestamps. var filterTimeEq = ee.Filter.equals({ leftField: 'system:time_start', rightField: 'system:time_start' }); // Apply the join. var innerJoinedMODIS = innerJoin.apply(mcd43a4, mcd43a2, filterTimeEq); // Display the join result: a FeatureCollection. print('Inner join output:', innerJoinedMODIS);
import ee import geemap.core as geemap
Colab (Python)
# Make a date filter to get images in this date range. date_filter = ee.Filter.date('2014-01-01', '2014-02-01') # Load a MODIS collection with EVI data. mcd43a4 = ee.ImageCollection('MODIS/MCD43A4_006_EVI').filter(date_filter) # Load a MODIS collection with quality data. mcd43a2 = ee.ImageCollection('MODIS/006/MCD43A2').filter(date_filter) # Define an inner join. inner_join = ee.Join.inner() # Specify an equals filter for image timestamps. filter_time_eq = ee.Filter.equals( leftField='system:time_start', rightField='system:time_start' ) # Apply the join. inner_joined_modis = inner_join.apply(mcd43a4, mcd43a2, filter_time_eq) # Display the join result: a FeatureCollection. display('Inner join output:', inner_joined_modis)
Çıktıda birleştirilen resimleri kullanmak için FeatureCollection
,
map()
birleştirme işlevi uygulayın. Örneğin, eşleşen resimler kalite bantlarının resim verilerine eklenmesi
Kod Düzenleyici (JavaScript)
// Map a function to merge the results in the output FeatureCollection. var joinedMODIS = innerJoinedMODIS.map(function(feature) { return ee.Image.cat(feature.get('primary'), feature.get('secondary')); }); // Print the result of merging. print('Inner join, merged bands:', joinedMODIS);
import ee import geemap.core as geemap
Colab (Python)
# Map a function to merge the results in the output FeatureCollection. joined_modis = inner_joined_modis.map( lambda feature: ee.Image.cat( feature.get('primary'), feature.get('secondary') ) ) # Print the result of merging. display("Inner join, merged 'bands':", joined_modis)
Bu işlev bir FeatureCollection
üzerinde eşlenir ancak sonuç bir ImageCollection
olur. Sonuçta elde edilen ImageCollection
içindeki her resim, birincil koleksiyondaki resimlerin tüm bantlarını (bu örnekte yalnızca ‘EVI’
) ve ikincil koleksiyondaki eşleşen resmin tüm bantlarını (kalite bantları) içerir.