দুটি সংগ্রহের উপাদানগুলির মধ্যে সমস্ত মিল গণনা করতে, একটি ee.Join.inner()
ব্যবহার করুন। একটি অভ্যন্তরীণ যোগদানের আউটপুট হল একটি FeatureCollection
(এমনকি যদি একটি ImageCollection
অন্য একটি ImageCollection
যোগদান করা হয়)। আউটপুটের প্রতিটি বৈশিষ্ট্য একটি মিল উপস্থাপন করে, যেখানে মিলিত উপাদানগুলি বৈশিষ্ট্যের দুটি বৈশিষ্ট্যে সংরক্ষণ করা হয়। উদাহরণস্বরূপ, feature.get('primary')
হল প্রাথমিক সংগ্রহের উপাদান যা feature.get('secondary')
এ সংরক্ষিত মাধ্যমিক সংগ্রহের উপাদানের সাথে মেলে। (এই বৈশিষ্ট্যগুলির জন্য বিভিন্ন নাম inner()
এর আর্গুমেন্ট হিসাবে নির্দিষ্ট করা যেতে পারে, তবে 'primary'
এবং 'secondary'
ডিফল্ট)। এক-থেকে-অনেক সম্পর্কগুলি আউটপুটে একাধিক বৈশিষ্ট্য দ্বারা উপস্থাপিত হয়। যদি উভয় সংগ্রহের একটি উপাদানের সাথে মিল না থাকে তবে এটি আউটপুটে উপস্থিত থাকে না।
ImageCollection
ইনপুট ব্যবহার করে উদাহরণে যোগ দিন FeatureCollection
ইনপুট পরিবর্তন ছাড়াই প্রযোজ্য। FeatureCollection
ImageCollection
যোগ দেওয়াও সম্ভব এবং এর বিপরীতে। অভ্যন্তরীণ যোগদানের নিম্নলিখিত খেলনা উদাহরণটি বিবেচনা করুন:
কোড এডিটর (জাভাস্ক্রিপ্ট)
// 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 (পাইথন)
# 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)
আগের উদাহরণে, লক্ষ্য করুন যে টেবিলগুলির মধ্যে সম্পর্ক ফিল্টারে সংজ্ঞায়িত করা হয়েছে, যা নির্দেশ করে যে 'foo'
এবং 'bar'
ক্ষেত্রগুলি যোগদানের ক্ষেত্র। একটি অভ্যন্তরীণ যোগদান তারপর নির্দিষ্ট করা হয় এবং সংগ্রহগুলিতে প্রয়োগ করা হয়। আউটপুট পরিদর্শন করুন এবং লক্ষ্য করুন যে প্রতিটি সম্ভাব্য মিল একটি Feature
হিসাবে উপস্থাপন করা হয়েছে।
একটি অনুপ্রাণিত উদাহরণের জন্য, MODIS ImageCollection
অবজেক্টে যোগদানের কথা বিবেচনা করুন। MODIS মানের ডেটা কখনও কখনও চিত্র ডেটা থেকে একটি পৃথক সংগ্রহে সংরক্ষণ করা হয়, তাই গুণগত ডেটা প্রয়োগ করার জন্য দুটি সংগ্রহে যোগদানের জন্য একটি অভ্যন্তরীণ যোগদান সুবিধাজনক। এই ক্ষেত্রে, চিত্র অধিগ্রহণের সময়গুলি অভিন্ন, তাই একটি সমান ফিল্টার দুটি সংগ্রহের মধ্যে এই সম্পর্ক নির্দিষ্ট করার কাজ পরিচালনা করে:
কোড এডিটর (জাভাস্ক্রিপ্ট)
// 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 (পাইথন)
# 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)
আউটপুট FeatureCollection
যোগ করা ছবিগুলি ব্যবহার করতে, আউটপুটের উপর একটি সম্মিলিত ফাংশন map()
। উদাহরণস্বরূপ, মিলে যাওয়া ছবিগুলিকে একত্রে স্ট্যাক করা যেতে পারে যাতে ছবির ডেটাতে গুণমানের ব্যান্ডগুলি যোগ করা হয়:
কোড এডিটর (জাভাস্ক্রিপ্ট)
// 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 (পাইথন)
# 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)
যদিও এই ফাংশনটি একটি FeatureCollection
কালেকশনে ম্যাপ করা হয়েছে, ফলাফলটি হল একটি ImageCollection
। ফলস্বরূপ ImageCollection
প্রতিটি ছবিতে প্রাথমিক সংগ্রহে থাকা ছবির সমস্ত ব্যান্ড রয়েছে (এই উদাহরণে শুধুমাত্র 'EVI'
) এবং সেকেন্ডারি সংগ্রহে থাকা ছবির সমস্ত ব্যান্ড (গুণমানের ব্যান্ড)।