لحفظ أفضل مطابقة فقط لكل عنصر في مجموعة، استخدِم
ee.Join.saveBest()
. تعمل دالة الربط saveBest()
بطريقة
مماثلة لدالة الربط saveAll()
، باستثناء كل عنصر في مجموعة
primary
، حيث تحفظ العنصر من مجموعةsecondary
الذي يمثّل أفضل مطابقة. يتم طرح العناصر غير المطابقة في المجموعة الأساسية. لنفترض أنّ الهدف هو العثور على صورة مناخية أقرب زمنيًا إلى كل
صورة Landsat في مجموعة primary
. لإجراء هذا الدمج، يجب إعادة تعريف
ee.Filter
ليكون شرطًا واحدًا للدمج (لن تعمل الفلاتر المدمجة
مع saveBest()
لأنّه من غير الواضح كيفية دمج الترتيبات
من فلاتر فرعية متعددة):
محرِّر الرموز البرمجية (JavaScript)
// Load a primary collection: Landsat imagery. var primary = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA') .filterDate('2014-04-01', '2014-06-01') .filterBounds(ee.Geometry.Point(-122.092, 37.42)); // Load a secondary collection: GRIDMET meteorological data var gridmet = ee.ImageCollection('IDAHO_EPSCOR/GRIDMET'); // Define a max difference filter to compare timestamps. var maxDiffFilter = ee.Filter.maxDifference({ difference: 2 * 24 * 60 * 60 * 1000, leftField: 'system:time_start', rightField: 'system:time_start' }); // Define the join. var saveBestJoin = ee.Join.saveBest({ matchKey: 'bestImage', measureKey: 'timeDiff' }); // Apply the join. var landsatMet = saveBestJoin.apply(primary, gridmet, maxDiffFilter); // Print the result. print(landsatMet);
import ee import geemap.core as geemap
Colab (Python)
# Load a primary collection: Landsat imagery. primary = ( ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA') .filterDate('2014-04-01', '2014-06-01') .filterBounds(ee.Geometry.Point(-122.092, 37.42)) ) # Load a secondary collection: GRIDMET meteorological data gridmet = ee.ImageCollection('IDAHO_EPSCOR/GRIDMET') # Define a max difference filter to compare timestamps. max_diff_filter = ee.Filter.maxDifference( difference=2 * 24 * 60 * 60 * 1000, leftField='system:time_start', rightField='system:time_start', ) # Define the join. save_best_join = ee.Join.saveBest(matchKey='bestImage', measureKey='timeDiff') # Apply the join. landsat_met = save_best_join.apply(primary, gridmet, max_diff_filter) # Print the result. display(landsat_met)
يُرجى العِلم أنّ عملية الربط saveBest()
تحدِّد اسم السمة التي يتم
تخزين أفضل مطابقة بها (‘bestImage’
) واسم السمة التي يتم
تخزين مقياس جودة المطابقة بها (‘timeDiff’
). يشير فحص
النتائج إلى أنّه تمت إضافة صورة DAYMET مطابقة إلى السمة
bestImage
لكلّ مشهد Landsat في مجموعة primary
. تحتوي كل
من صور DAYMET هذه على السمة timeDiff
التي تشير إلى اختلاف
الوقت بالمللي ثانية بين صورة DAYMET وصورة Landsat، وسيكون
الحد الأدنى بين صور DAYMET التي تستوفي الشرط في الفلتر.