Untuk hanya menyimpan kecocokan terbaik untuk setiap elemen dalam koleksi, gunakan
ee.Join.saveBest()
. Fungsi join saveBest()
berfungsi dengan cara yang setara dengan join saveAll()
, kecuali untuk setiap elemen dalam koleksi primary
, fungsi ini menyimpan elemen dari koleksi secondary
dengan kecocokan terbaik. Elemen yang tidak cocok dalam koleksi utama akan
dihapus. Misalkan tujuannya adalah menemukan gambar meteorologi yang paling dekat waktunya dengan setiap gambar Landsat dalam koleksi primary
. Untuk melakukan join ini, ee.Filter
harus ditentukan ulang untuk satu kondisi join (filter gabungan
tidak akan berfungsi dengan saveBest()
karena cara menggabungkan peringkat
dari beberapa sub-Filter tidak jelas):
Editor Kode (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)
Perhatikan bahwa join saveBest()
menentukan nama properti yang akan digunakan untuk
menyimpan kecocokan terbaik (‘bestImage’
) dan nama properti yang akan digunakan untuk
menyimpan kualitas metrik kecocokan (‘timeDiff’
). Pemeriksaan
hasil menunjukkan bahwa gambar DAYMET yang cocok telah ditambahkan ke properti
bestImage
untuk setiap scene Landsat dalam koleksi primary
. Setiap
gambar DAYMET ini memiliki properti timeDiff
yang menunjukkan perbedaan
waktu dalam milidetik antara gambar DAYMET dan gambar Landsat, yang akan
minimum di antara gambar DAYMET yang lulus kondisi dalam filter.