En İyi Birleştirmeleri Kaydetme

Koleksiyondaki her öğe için yalnızca en iyi eşleşmeyi kaydetmek isterseniz ee.Join.saveBest() kullanın. saveBest() birleştirme işlevi, saveAll() birleştirme işlevine eşdeğer bir şekilde çalışır. Bununla birlikte, primary koleksiyonundaki her öğe için en iyi eşleşmeye sahip secondary koleksiyonundaki öğeyi kaydeder. Birincil koleksiyondaki eşleşmeyen öğeler atlanır. Amaç, primary koleksiyonundaki her Landsat görüntüsüne en yakın zamanlı bir meteorolojik görüntü bulmak olsun. Bu birleştirme işlemini gerçekleştirmek için ee.Filter, tek bir birleştirme koşulu için yeniden tanımlanmalıdır (birden fazla alt filtredeki sıralamaların nasıl birleştirileceği belirsiz olduğundan birleşik filtreler saveBest() ile çalışmaz):

Kod Düzenleyici (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);

Python kurulumu

Python API'si ve etkileşimli geliştirme için geemap kullanımı hakkında bilgi edinmek üzere Python Ortamı sayfasına bakın.

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() birleştirme işleminin, en iyi eşleşmeyi (‘bestImage’) ve eşleşme metriğinin iyiliğini (‘timeDiff’) depolamak için kullanılacak mülkün adını tanımladığını unutmayın. Sonuçların incelenmesi, primary koleksiyonundaki her Landsat sahnesi için bestImage mülküne eşleşen bir DAYMET resminin eklendiğini gösterir. Bu DAYMET resimlerinin her biri, DAYMET resmi ile Landsat resmi arasındaki milisaniye cinsinden zaman farkını belirten timeDiff özelliğine sahiptir. Bu özellik, filtredeki koşulu karşılayan DAYMET resimleri arasında minimum değere sahiptir.