Skip to content

មេរៀនទី៥៖ ស៊េរីពេលវេលា និងរដូវកាលរុក្ខជាតិ

ព័ត៌មានមេរៀន

រយៈពេលបង្រៀនដែលស្នើ៖ ៣ ម៉ោង · មេរៀនទី ៥ ក្នុងចំណោម ១៥

ស្លាយបង្រៀនមេរៀននេះ

កសិករនៅកម្ពុជាដឹងច្បាស់ពីប្រតិទិនស្រែរបស់ខ្លួន៖ ពេលបញ្ចូលទឹក ពេលស្ទូង ពេលស្រូវចេញផ្កា និងពេលច្រូត។ ផ្កាយរណបក៏ «មើលឃើញ» ប្រតិទិននេះដែរ ប៉ុន្តែមិនមែនក្នុងរូបភាពមួយផ្ទាំងទេ។ វាលេចឡើងតែនៅពេលយើងតម្រៀបការសង្កេតរាប់សិបដងនៃក្រឡាតែមួយ តាមលំដាប់ពេលវេលា។

មេរៀននេះបង្រៀនរបៀបបង្កើត សម្អាត និងវិភាគ ស៊េរីពេលវេលា ក្នុង Earth Engine៖ ក្រាប NDVI composite ប្រចាំខែ និន្នាការលីនេអ៊ែរ តំរែតំរង់ harmonic និងរង្វាស់រដូវកាល (phenology) ដែលប្រាប់ពេលចាប់ផ្ដើម និងបញ្ចប់រដូវដំណាំ។


៥.១. គោលបំណងសិក្សា

បន្ទាប់ពីបញ្ចប់មេរៀន និស្សិតអាច៖

  1. ពន្យល់ពីគំនិត «ហត្ថលេខាពេលវេលា» ហើយប្រើវាដើម្បីបែងចែកស្រែ ព្រៃ និងទីក្រុង។
  2. បង្កើតក្រាប NDVI តាមពេលវេលាសម្រាប់ចំណុច ឬតំបន់ ដោយ ui.Chart.image.series() និង seriesByRegion()។
  3. កាត់បន្ថយសំឡេងរំខានពីពពក ដោយ mask និង composite ប្រចាំខែ។
  4. គណនានិន្នាការលីនេអ៊ែរ និងតំរែតំរង់ harmonic ក្នុងក្រឡានីមួយៗ ហើយបកស្រាយទំហំ និងដំណាក់។
  5. ពិពណ៌នាដំណាក់កាលស្រូវក្នុងស៊េរី NDVI/LSWI ហើយវាស់ SOS POS EOS។

ចំណេះដឹងមុនត្រូវមាន

  • មេរៀនទី៣៖ ការលុបពពក និង composite។ មេរៀនទី៤៖ reducer និង reduceRegion។
  • សៀវភៅទី៣៖ NDVI និងសញ្ញាណស្ពិចត្រាល់នៃរុក្ខជាតិ ទឹក និងដី។

៥.២. ស្ថានភាពបើកមេរៀន៖ តើស្រែនេះដាំប៉ុន្មានដងក្នុងមួយឆ្នាំ?

មន្ទីរកសិកម្មខេត្តតាកែវ ចង់ដឹងថាវាលស្រែណាខ្លះ ដាំពីរដង (ប្រាំង និងវស្សា) និងស្រែណា ដាំតែរដូវវស្សា ដើម្បីរៀបចំផែនការប្រព័ន្ធធារាសាស្ត្រ។ Composite រដូវប្រាំងតែមួយ (មេរៀនទី៣) បង្ហាញស្រែទាំងពីរប្រភេទស្រដៀងគ្នា ព្រោះនៅថ្ងៃនោះ ស្រែមួយប្រហែលជាបៃតង ហើយស្រែមួយទៀតទើបច្រូតរួច។ ចម្លើយស្ថិតក្នុង របៀបដែល NDVI ប្ដូរពេញមួយឆ្នាំ។

សំណួរដែលមេរៀននេះឆ្លើយ៖

  • តើត្រូវទាញក្រាបតម្លៃតាមពេលវេលានៃក្រឡាមួយ ឬស្រែមួយពី Earth Engine យ៉ាងដូចម្ដេច?
  • តើត្រូវដោះស្រាយការសង្កេតដែលមានពពក ជាពិសេសក្នុងរដូវវស្សា យ៉ាងដូចម្ដេច?
  • តើត្រូវបម្លែងក្រាបទៅជាលេខ (ចំនួនរដូវ ពេលកំពូល និន្នាការ) សម្រាប់គ្រប់ក្រឡាយ៉ាងដូចម្ដេច?

៥.៣. ទ្រឹស្ដីស្នូល

៥.៣.១. ហត្ថលេខាពេលវេលា

គម្របដីនីមួយៗ មាន «ហត្ថលេខាពេលវេលា» ខុសគ្នាNDVI ក្នុងមួយឆ្នាំ · ស៊េរីក្លែងធ្វើតាមលំនាំពិតនៅកម្ពុជា (សម្រាប់បង្រៀន)០០.២០.៤០.៦០.៨១ស្រែពីរដង (ប្រាំង + វស្សា)ស្រែវស្សាព្រៃស្រោងទាបព្រៃរបោះស្លឹកទីក្រុងNDVIមកកមមនមសឧសមថកកសហកញតលវចធនរដូវវស្សា (ពពកច្រើន)

រូបទី៥.១៖ រូបភាពមួយផ្ទាំង មិនអាចបែងចែកបានទេ។

អានរូបនេះ

  • នៅខែមករា ស្រែវស្សា និងទីក្រុង មាន NDVI ស្រដៀងគ្នា (ទាប)។ នៅខែតុលា ស្រែ និងព្រៃស្រដៀងគ្នា (ខ្ពស់)។
  • ទម្រង់ក្រាបពេញមួយឆ្នាំ បែងចែកបានច្បាស់៖ ចំនួនកំពូល ពេលកំពូល និងកម្ពស់។
  • ខ្សែទាំងនេះជាស៊េរីក្លែងធ្វើតាមប្រតិទិនដំណាំនៅកម្ពុជា មិនមែនការវាស់ពិតទេ។

ក្នុងសៀវភៅទី៣ យើងបែងចែកគម្របដីដោយ សញ្ញាណស្ពិចត្រាល់៖ ភាពខុសគ្នាតាមក្រុមរលក។ ស៊េរីពេលវេលាបន្ថែមវិមាត្រមួយទៀត៖ ហត្ថលេខាពេលវេលា (temporal signature) គឺជាទម្រង់ដែលសន្ទស្សន៍មួយ (ជាទូទៅ NDVI) ប្ដូរពេញមួយឆ្នាំ។ លក្ខណៈសំខាន់ៗ៖

  • ចំនួនកំពូល៖ ស្រែវស្សាមានកំពូលមួយ ស្រែពីរដងមានកំពូលពីរ។
  • ពេលកំពូល៖ ស្រូវវស្សាឡើងកំពូលខែតុលា ព្រៃរបោះស្លឹកបៃតងបំផុតក្នុងរដូវវស្សា។
  • ទំហំ (amplitude)៖ ភាពខុសគ្នារវាងទាបបំផុត និងខ្ពស់បំផុត។ ព្រៃស្រោងទាបមានទំហំតូច ស្រែមានទំហំធំ។
  • កម្រិតមូលដ្ឋាន៖ ទីក្រុងទាបពេញមួយឆ្នាំ ព្រៃស្រោងទាបខ្ពស់ពេញមួយឆ្នាំ។

៥.៣.២. បង្កើតក្រាបក្នុង Earth Engine

Earth Engine ភ្ជាប់ជាមួយ Google Charts តាមរយៈ ui.Chart។ ដើម្បីទាញក្រាប NDVI នៃស្រែមួយ៖

var paddy = ee.Geometry.Point([104.79, 10.99]);   // ស្រែមួយក្នុងខេត្តតាកែវ (ប្ដូរតាមតំបន់របស់អ្នក)
function addNDVI(img) {
  var scl = img.select('SCL');
  var ok = scl.neq(3).and(scl.neq(8)).and(scl.neq(9)).and(scl.neq(10));
  return img.addBands(img.normalizedDifference(['B8', 'B4']).rename('NDVI')).updateMask(ok);
}
var s2 = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')
  .filterBounds(paddy).filterDate('2023-01-01', '2025-01-01')
  .map(addNDVI).select('NDVI');

var chart = ui.Chart.image.series({
  imageCollection: s2, region: paddy, reducer: ee.Reducer.mean(), scale: 10
}).setOptions({title: 'NDVI ស្រែ តាកែវ', vAxis: {viewWindow: {min: 0, max: 1}},
               lineWidth: 0, pointSize: 3});
print(chart);

ក្រាបមានមុខងារសំខាន់ៗផ្សេងទៀត៖

មុខងារ ប្រើពេលណា
ui.Chart.image.series() តំបន់មួយ ក្រុមរលកមួយ ឬច្រើន
ui.Chart.image.seriesByRegion() តំបន់ច្រើន (ស្រែ ព្រៃ ទីក្រុង) ក្រុមរលកមួយ ដើម្បីប្រៀបធៀប
ui.Chart.image.doySeries() តម្រួតឆ្នាំច្រើនលើអ័ក្សថ្ងៃក្នុងឆ្នាំ (១–៣៦៥)
ui.Chart.feature.byFeature() តារាងពី reduceRegions (មេរៀនទី៤)

ក្នុងផ្ទាំង Console ចុចរូបព្រួញលើជ្រុងក្រាប ដើម្បីទាញយកទិន្នន័យជា CSV ឬរូបភាព PNG។ ក្រាបសម្រាប់ចំណុច ឬស្រែតូចៗ ដំណើរការលឿន។ ក្រាបនៃតំបន់ធំ (ខេត្តទាំងមូល) ច្រើនតែ timeout៖ ត្រូវប្រើ Export វិញ។

៥.៣.៣. ពពក និងសំឡេងរំខាន

ពពកធ្វើឱ្យ NDVI ធ្លាក់ចុះស្រែវស្សាមួយ · ការសង្កេត Sentinel-2 ប្រហែល ៧៣ ដង/ឆ្នាំ · ស៊េរីក្លែងធ្វើតាមលំនាំពិតនៅកម្ពុជា (សម្រាប់បង្រៀន)០០.២០.៤០.៦០.៨១NDVIមកកមមនមសឧសមថកកសហកញតលវចធនស្អាតមានពពក (រត់ចួល)សញ្ញាពិត

រូបទី៥.២៖ ស៊េរីឆៅមានសំឡេងរំខាន។

អានរូបនេះ

  • ក្នុងរដូវវស្សា ការសង្កេត ១៦ ក្នុងចំណោម ២៧ មានពពក៖ NDVI ធ្លាក់ខ្លាំងជាងតម្លៃពិត។
  • ពពកតែងធ្វើឱ្យ NDVI ទាបជាងពិត មិនដែលខ្ពស់ជាងទេ។
  • ដំណោះស្រាយ៖ mask ពពក (SCL · Cloud Score+) រួច composite ប្រចាំខែ ឬ smooth។

ក្រាបឆៅនៃ Sentinel-2 ក្នុងរដូវវស្សា ពោរពេញដោយចំណុចដែលធ្លាក់ចុះ។ មូលហេតុ៖ ពពក ស្រមោល និងអ័ព្ទ ធ្វើឱ្យ NDVI ទាបជាងពិត ស្ទើរតែជានិច្ច (ពពកភ្លឺនៅក្រហម និង NIR ដូចគ្នា ដូច្នេះ NDVI ជិតសូន្យ)។ លក្ខណៈនេះសំខាន់ព្រោះវាប្រាប់យើងថា៖

  1. Mask ជានិច្ច ដោយ SCL ឬ Cloud Score+ (មេរៀនទី៣)។
  2. ពពកដែលរត់ចួល នៅតែធ្វើឱ្យតម្លៃ ធ្លាក់ ដូច្នេះវិធីដែលផ្ដល់អាទិភាពដល់តម្លៃខ្ពស់ (ដូចជា median ក្នុងចន្លោះខ្លី ឬ upper envelope) មានប្រសិទ្ធភាព។
  3. ក្នុងខែខ្លះ អាចគ្មានការសង្កេតស្អាតទាល់តែសោះ៖ ត្រូវការវិធីបំពេញចន្លោះ ឬទិន្នន័យ SAR (មេរៀនទី៧ និង ១១)។

៥.៣.៤. Composite ប្រចាំខែ

Composite ប្រចាំខែ ធ្វើឱ្យស៊េរីរលោងស្រែវស្សាដដែល · mask ពពក រួច median ក្នុងខែនីមួយៗ · ស៊េរីក្លែងធ្វើតាមលំនាំពិតនៅកម្ពុជា (សម្រាប់បង្រៀន)០០.២០.៤០.៦០.៨១NDVIមកកមមនមសឧសមថកកសហកញតលវចធន?ការសង្កេតស្អាតmedian ប្រចាំខែ? ខែគ្មានទិន្នន័យ

រូបទី៥.៣៖ ១២ តម្លៃ ជំនួសរាប់សិប។

អានរូបនេះ

  • ee.List.sequence(1, 12).map() បង្កើត composite មួយក្នុងមួយខែ ហើយកំណត់ system:time_start។
  • median ក្នុងខែ ដកតម្លៃពពកដែលរត់ចួលភាគច្រើន។
  • ខែខ្លះក្នុងរដូវវស្សាអាចគ្មានការសង្កេតស្អាតទាល់តែសោះ (១ ខែក្នុងឧទាហរណ៍នេះ)៖ ត្រូវការ Sentinel-1 ឬ harmonic។

ជំនួសឱ្យការប្រើការសង្កេតនីមួយៗ យើងអាចបង្កើត composite មួយក្នុងមួយខែ ដោយប្រើ ee.List.sequence និង ee.Filter.calendarRange៖

var year = 2024;
var monthly = ee.ImageCollection.fromImages(
  ee.List.sequence(1, 12).map(function(m) {
    var start = ee.Date.fromYMD(year, m, 1);
    var sub = s2.filterDate(start, start.advance(1, 'month'));
    // ខែគ្មានរូបភាព៖ median() ត្រឡប់រូបភាពគ្មានក្រុមរលក ដូច្នេះដាក់ NDVI ទទេជំនួស
    var empty = ee.Image.constant(0).rename('NDVI').updateMask(0);
    return ee.Image(ee.Algorithms.If(sub.size().gt(0), sub.median(), empty))
      .set('system:time_start', start.millis())
      .set('month', m)
      .set('n', sub.size());              // ចំនួនរូបភាពក្នុងខែនោះ
  }));
print(ui.Chart.image.series(monthly, paddy, ee.Reducer.mean(), 10));

system:time_start ចាំបាច់ព្រោះ ui.Chart ប្រើវាសម្រាប់អ័ក្សពេលវេលា។ លក្ខណៈ n ជួយរកខែដែលគ្មានទិន្នន័យ។ ចំណាំបន្ទាត់ ee.Algorithms.If៖ median() នៃ collection ទទេ ត្រឡប់រូបភាពដែល គ្មានក្រុមរលកទាល់តែសោះ ហើយក្រាប ឬ qualityMosaic នឹងបង្ហាញកំហុស «band not found»។ រូបភាព NDVI ដែលត្រូវបាន mask ទាំងស្រុង ធ្វើឱ្យក្រាបមានចន្លោះ ដែលជាលទ្ធផលត្រឹមត្រូវ។

Composite ១៦ ថ្ងៃ ឬ ១០ ថ្ងៃ ផ្ដល់ព័ត៌មានលម្អិតច្រើនជាង ប៉ុន្តែចន្លោះច្រើនជាងក្នុងរដូវវស្សា។ ការជ្រើសរយៈពេលគឺជាការសម្របសម្រួល ដូចក្នុងមេរៀនទី៣ដែរ។

៥.៣.៥. ដំណាក់កាលស្រូវក្នុងស៊េរីពេលវេលា

ដំណាក់កាលស្រូវវស្សា ក្នុងស៊េរីពេលវេលាស៊េរីក្លែងធ្វើតាមលំនាំពិតនៅកម្ពុជា (សម្រាប់បង្រៀន)០០.២០.៤០.៦០.៨១NDVILSWI (ទឹក/សំណើម)តម្លៃសន្ទស្សន៍មកកមមនមសឧសមថកកសហកញតលវចធនបញ្ចូលទឹក ស្ទូងLSWI > NDVIលូតលាស់NDVI ឡើងចេញផ្កាNDVI កំពូលច្រូតNDVI ធ្លាក់

រូបទី៥.៤៖ ទឹកមុន បៃតងក្រោយ។

អានរូបនេះ

  • ពេលបញ្ចូលទឹក និងស្ទូង វាលស្រែមានទឹកច្រើន៖ LSWI ឡើងលើស NDVI មួយរយៈខ្លី។
  • បន្ទាប់មក NDVI ឡើងដល់កំពូលពេលចេញផ្កា ហើយធ្លាក់ពេលទុំ និងច្រូត។
  • សញ្ញា «ទឹកមុន បៃតងក្រោយ» នេះ ប្រើសម្រាប់ធ្វើផែនទីស្រែក្នុងមេរៀនទី១១។

ស្រូវមានលក្ខណៈពិសេសមួយ ដែលរុក្ខជាតិដទៃភាគច្រើនគ្មាន៖ វាចាប់ផ្ដើមក្នុង វាលស្រែដែលលិចទឹក។ ដូច្នេះយើងប្រើសន្ទស្សន៍ពីរ៖

  • NDVI = (NIR − Red) / (NIR + Red)៖ ភាពបៃតង។
  • LSWI = (NIR − SWIR1) / (NIR + SWIR1)៖ ទឹក និងសំណើមក្នុងដី និងស្លឹក (Sentinel-2៖ B8 និង B11)។

ក្នុងរយៈពេលបញ្ចូលទឹក និងស្ទូង LSWI ឡើងជិត ឬលើស NDVI។ បន្ទាប់មក NDVI ឡើងយ៉ាងលឿនរហូតដល់ចេញផ្កា ហើយធ្លាក់ពេលស្រូវទុំ និងច្រូត។ លំនាំ «ទឹកមុន បៃតងក្រោយ» នេះ ជាមូលដ្ឋាននៃវិធីធ្វើផែនទីស្រែដ៏ពេញនិយមមួយ ដែលយើងនឹងប្រើក្នុងមេរៀនទី១១។

// s2raw = Sentinel-2 ដែលបានលុបពពក តែមិនទាន់ select (ត្រូវការ B4 B8 B11)
var withIdx = s2raw.map(function(img) {
  var ndvi = img.normalizedDifference(['B8', 'B4']).rename('NDVI');
  var lswi = img.normalizedDifference(['B8', 'B11']).rename('LSWI');
  return img.addBands([ndvi, lswi]);
});
print(ui.Chart.image.series(withIdx.select(['NDVI', 'LSWI']), paddy, ee.Reducer.mean(), 10));

៥.៣.៦. និន្នាការលីនេអ៊ែរ

និន្នាការលីនេអ៊ែរ៖ linearFit()NDVI អតិបរមាប្រចាំឆ្នាំ នៃក្រឡាមួយដែលព្រៃត្រូវបានកាប់បន្តិចម្ដងៗ · ស៊េរីក្លែងធ្វើតាមលំនាំពិតនៅកម្ពុជា (សម្រាប់បង្រៀន)២០១៦២០១៨២០២០២០២២២០២៤០.៥០.៦០.៧០.៨០.៩ឆ្នាំNDVI អតិបរមាvar withT = col.map(function(img){ var t = img.date().difference( '2016-01-01', 'year'); return img.select('NDVI') .addBands(ee.Image(t) .rename('t').float());});var fit = withT.select(['t','NDVI']) .reduce(ee.Reducer.linearFit());// bands: scale (slope), offsetជម្រាល = -០,០១៩ NDVI/ឆ្នាំ

រូបទី៥.៥៖ ជម្រាលមួយក្នុងមួយក្រឡា។

អានរូបនេះ

  • linearFit() ត្រូវការក្រុមរលកពីរ តាមលំដាប់ [x, y]៖ ពេលវេលា t មុន NDVI។
  • លទ្ធផលមានក្រុមរលក scale (ជម្រាល) និង offset៖ ជម្រាលអវិជ្ជមាន = រុក្ខជាតិថយចុះ។
  • ប្រើតម្លៃប្រចាំឆ្នាំ (ឧ. អតិបរមា ឬរដូវតែមួយ) ដើម្បីកុំឱ្យរដូវកាលលាក់និន្នាការ។

ដើម្បីដឹងថារុក្ខជាតិកើនឡើង (greening) ឬថយចុះ (browning) ក្នុងរយៈពេលច្រើនឆ្នាំ យើងសមបន្ទាត់ត្រង់ក្នុងក្រឡានីមួយៗ។ Earth Engine មាន ee.Reducer.linearFit() ដែលត្រូវការ collection ដែលមានក្រុមរលកពីរ តាមលំដាប់ [x, y]៖ ពេលវេលា និងតម្លៃ៖

// ls = Landsat 8/9 C2 L2 ដែលបានលុបពពក និងមានក្រុមរលក NDVI (មេរៀនទី៣)
var annualMax = ee.ImageCollection.fromImages(
  ee.List.sequence(2017, 2024).map(function(y) {
    var img = ls.filter(ee.Filter.calendarRange(y, y, 'year')).select('NDVI').max();
    return img.addBands(ee.Image.constant(ee.Number(y).subtract(2017)).rename('t').float())
              .select(['t', 'NDVI']);
  }));
var fit = annualMax.reduce(ee.Reducer.linearFit());   // ក្រុមរលក scale (ជម្រាល) និង offset
Map.addLayer(fit.select('scale'), {min: -0.03, max: 0.03, palette: ['red', 'white', 'green']}, 'ជម្រាល NDVI/ឆ្នាំ');

ចំណាំថាយើងប្រើ NDVI អតិបរមាប្រចាំឆ្នាំ មិនមែនការសង្កេតទាំងអស់ទេ។ ប្រសិនបើប្រើការសង្កេតទាំងអស់ រដូវកាល (ឡើងចុះរាល់ឆ្នាំ) និងចំនួនពពកដែលខុសគ្នាតាមឆ្នាំ នឹងលាក់និន្នាការពិត។ ជម្រាលមួយមិនបញ្ជាក់ថាការប្ដូរ «សំខាន់» ទេ៖ ការធ្វើតេស្តស្ថិតិ (ឧ. Mann-Kendall) និងការពិនិត្យនៅទីតាំង នៅតែចាំបាច់។

៥.៣.៧. តំរែតំរង់ harmonic

តំរែតំរង់ harmonicស្រែពីរដង · ការសង្កេតស្អាត និងខ្សែសម · ស៊េរីក្លែងធ្វើតាមលំនាំពិតនៅកម្ពុជា (សម្រាប់បង្រៀន)០០.២០.៤០.៦០.៨១លំដាប់ ១លំដាប់ ២NDVIមកកមមនមសឧសមថកកសហកញតលវចធនNDVI(t) =β₀ + β₁·t+ a₁·cos(2πt) + b₁·sin(2πt)+ a₂·cos(4πt) + b₂·sin(4πt)t គិតជាឆ្នាំទំហំ = √(a₁² + b₁²)ដំណាក់ = atan2(b₁, a₁)reducer៖ee.Reducer.linearRegression

រូបទី៥.៦៖ ខ្សែកោងរលោង ពីការសង្កេតមិនទៀងទាត់។

អានរូបនេះ

  • លំដាប់ ១ (cos និង sin មួយគូ) មានកំពូលតែមួយ/ឆ្នាំ៖ វាខកកំពូលទាំងពីរនៃស្រែពីរដង។ លំដាប់ ២ ចាប់បានទាំងពីរ។
  • ខ្សែសមបំពេញចន្លោះពពក ហើយផ្ដល់តម្លៃនៅថ្ងៃណាក៏បាន។
  • ទំហំ (amplitude) និងដំណាក់ (phase) ក្លាយជាក្រុមរលកថ្មី សម្រាប់ផែនទី និងការចាត់ថ្នាក់។

រដូវកាលវិលត្រឡប់មកវិញរៀងរាល់ឆ្នាំ ដូច្នេះវាអាចតំណាងដោយ cos និង sin។ ម៉ូដែល harmonic លំដាប់ ១៖

NDVI(t) = β₀ + β₁·t + a₁·cos(2πt) + b₁·sin(2πt)

ដែល t គិតជាឆ្នាំ។ β₀ ជាកម្រិតមធ្យម β₁ ជានិន្នាការ ហើយ a₁ b₁ ពិពណ៌នារដូវកាល។ ពីមេគុណទាំងនេះ យើងគណនា៖

  • ទំហំ (amplitude) = √(a₁² + b₁²)៖ កម្លាំងនៃរដូវកាល។
  • ដំណាក់ (phase) = atan2(b₁, a₁)៖ ពេលដែលខ្សែកោងឡើងដល់កំពូល។

លំដាប់ ២ បន្ថែម cos(4πt) និង sin(4πt) ដែលអនុញ្ញាតឱ្យមានកំពូលពីរក្នុងមួយឆ្នាំ ដែលចាំបាច់សម្រាប់ស្រែពីរដង។ ក្នុង Earth Engine យើងបន្ថែមក្រុមរលកអថេរឯករាជ្យ ហើយប្រើ ee.Reducer.linearRegression()៖

// s2 = collection NDVI ដែលបានលុបពពក (ផ្នែក ៥.៣.២)
var harm = s2.map(function(img) {
  var t = img.date().difference(ee.Date('2023-01-01'), 'year');
  var w = t.multiply(2 * Math.PI);
  return ee.Image([1, t, w.cos(), w.sin()]).float()
    .rename(['const', 't', 'cos', 'sin'])
    .addBands(img.select('NDVI'));
});
var reg = harm.reduce(ee.Reducer.linearRegression({numX: 4, numY: 1}));
var coef = reg.select('coefficients').arrayProject([0]).arrayFlatten([['const', 't', 'cos', 'sin']]);
var amplitude = coef.select('cos').hypot(coef.select('sin'));
var phase = coef.select('sin').atan2(coef.select('cos'));
Map.addLayer(amplitude, {min: 0, max: 0.3, palette: ['white', 'green']}, 'ទំហំរដូវកាល');

ខ្សែសមបំពេញចន្លោះពពកដោយស្វ័យប្រវត្តិ ហើយមេគុណ (amplitude phase) អាចប្រើជាលក្ខណៈសម្រាប់ចាត់ថ្នាក់ក្នុងមេរៀនទី៦។ ប៉ុន្តែម៉ូដែលនេះសន្មតថារដូវកាលស្រដៀងគ្នារៀងរាល់ឆ្នាំ៖ វាមិនចាប់ព្រឹត្តិការណ៍ភ្លាមៗ (ទឹកជំនន់ ការកាប់ព្រៃ) បានល្អទេ។

ពិសោធន៍៖ តំរែតំរង់ harmonic

ជ្រើសប្រភេទគម្របដី និងកម្រិតពពក រួចប្ដូរលំដាប់ harmonic ពី ០ ដល់ ៣។ មើលថាពេលណាខ្សែសមចាប់បានកំពូលពីរនៃស្រែពីរដង ហើយពេលណា RMSE លែងថយចុះ។ ស៊េរីក្នុងពិសោធន៍នេះត្រូវបានក្លែងធ្វើតាមលំនាំពិត។

៥.៣.៨. រង្វាស់រដូវកាល (phenology metrics)

រង្វាស់រដូវកាល (phenology metrics)វិធីកម្រិត ៥០% នៃទំហំ · ស្រែវស្សា · ស៊េរីក្លែងធ្វើតាមលំនាំពិតនៅកម្ពុជា (សម្រាប់បង្រៀន)០០.២០.៤០.៦០.៨១NDVIមកកមមនមសឧសមថកកសហកញតលវចធនកម្រិត ៥០%SOS ចាប់ផ្ដើមPOS កំពូលEOS បញ្ចប់ទំហំរយៈពេលរដូវ ≈ ៦៣ ថ្ងៃ

រូបទី៥.៧៖ ពីខ្សែកោង ទៅជាលេខដែលអ្នកកសិកម្មយល់។

អានរូបនេះ

  • SOS POS EOS ប្រាប់ពេលចាប់ផ្ដើម កំពូល និងបញ្ចប់រដូវ ជាថ្ងៃក្នុងឆ្នាំ (DOY)។
  • កម្រិត ៥០% នៃទំហំ ធន់ជាងកម្រិត NDVI ថេរ ព្រោះវាសម្របតាមក្រឡានីមួយៗ។
  • SOS ដែលយឺតជាងធម្មតា អាចបង្ហាញភ្លៀងយឺត ឬរាំងស្ងួតដើមរដូវ (មេរៀនទី៨)។

ពីខ្សែកោងរលោង (monthly composite ឬ harmonic) យើងទាញយកលេខដែលអ្នកកសិកម្មយល់៖

រង្វាស់ អត្ថន័យ វិធីទូទៅ
SOS (Start of Season) ពេលចាប់ផ្ដើមដុះលូតលាស់ ពេល NDVI ឆ្លងកាត់ ៥០% នៃទំហំ (ឡើង)
POS (Peak of Season) ពេលកំពូល ថ្ងៃដែល NDVI ខ្ពស់បំផុត
EOS (End of Season) ពេលបញ្ចប់ (ច្រូត) ពេល NDVI ឆ្លងកាត់ ៥០% (ចុះ)
LOS (Length of Season) រយៈពេលរដូវ EOS − SOS
ទំហំ កម្លាំងនៃការលូតលាស់ NDVI កំពូល − NDVI មូលដ្ឋាន

កម្រិត ៥០% នៃទំហំ ត្រូវបានគណនាសម្រាប់ក្រឡានីមួយៗ ដាច់ដោយឡែក ដូច្នេះវាធន់ជាងកម្រិត NDVI ថេរ (ឧ. ០,៤) ដែលអាចមិនសម ចំពោះដីខុសគ្នា។ POS អាចគណនាក្នុង Earth Engine យ៉ាងងាយ ដោយ qualityMosaic (មេរៀនទី៣)៖

var withDoy = monthly.map(function(img) {
  return img.addBands(ee.Image.constant(ee.Number(img.get('month'))).rename('month').float());
});
var peak = withDoy.qualityMosaic('NDVI');
Map.addLayer(peak.select('month'), {min: 1, max: 12, palette: ['blue', 'green', 'yellow', 'red']}, 'ខែកំពូល NDVI');

សម្រាប់ការវិភាគ phenology ពេញលេញ អ្នកស្រាវជ្រាវច្រើនតែនាំចេញស៊េរី ហើយប្រើកម្មវិធីឯកទេស (ឧ. TIMESAT ឬកញ្ចប់ Python/R)។ ក្នុង Earth Engine ផលិតផល MODIS Land Cover Dynamics (MCD12Q2) ផ្ដល់ SOS និង EOS រួចជាស្រេចនៅ ៥០០ ម។


៥.៤. ឧទាហរណ៍ដែលបានដោះស្រាយ៖ ស្រែពីរដង ធៀបនឹងស្រែវស្សា នៅខេត្តតាកែវ

ជំហានទី១៖ ជ្រើសចំណុចបី

ដោយប្រើ Geometry Tools ក្នុង Code Editor ដាក់ចំណុចបី៖ ស្រែជិតប្រឡាយធារាសាស្ត្រ (សន្មតថាដាំពីរដង) ស្រែឆ្ងាយពីប្រឡាយ (សន្មតថាដាំតែវស្សា) និងព្រៃមួយកន្លែងសម្រាប់ប្រៀបធៀប។ ដាក់ចំណុចទាំងបីក្នុង FeatureCollection មួយ ដោយមានលក្ខណៈ label។

var sites = ee.FeatureCollection([
  ee.Feature(ee.Geometry.Point([104.79, 10.99]), {label: 'ស្រែ ក'}),
  ee.Feature(ee.Geometry.Point([104.62, 11.05]), {label: 'ស្រែ ខ'}),
  ee.Feature(ee.Geometry.Point([104.33, 11.12]), {label: 'ព្រៃ'})
]);   // កូអរដោនេគំរូ៖ ប្ដូរតាមការសង្កេតរបស់អ្នកលើផែនទី

ជំហានទី២៖ Composite ប្រចាំខែ ២ ឆ្នាំ

ប្រើកូដក្នុងផ្នែក ៥.៣.៤ ជាមួយ ee.List.sequence(0, 23) ហើយ start = ee.Date('2023-01-01').advance(m, 'month') ដើម្បីបាន ២៤ ខែ។

ជំហានទី៣៖ ក្រាបប្រៀបធៀប

print(ui.Chart.image.seriesByRegion({
  imageCollection: monthly, regions: sites, reducer: ee.Reducer.mean(),
  band: 'NDVI', scale: 10, seriesProperty: 'label'
}).setOptions({title: 'NDVI ប្រចាំខែ ២០២៣–២០២៤', vAxis: {viewWindow: {min: 0, max: 1}}}));

ជំហានទី៤៖ បកស្រាយ

ប្រសិនបើស្រែ ក មានកំពូលពីរក្នុងមួយឆ្នាំ (ឧ. ប្រហែលខែកុម្ភៈ និងខែកញ្ញា) ហើយស្រែ ខ មានកំពូលតែមួយ (ខែតុលា) នោះការសន្មតរបស់យើងត្រូវ។ ព្រៃខ្ពស់ពេញមួយឆ្នាំ ហើយមានទំហំតូច។ ខែដែលគ្មានទិន្នន័យក្នុងរដូវវស្សា ត្រូវកត់ត្រា៖ វាមិនមែនជា NDVI សូន្យទេ។

ជំហានទី៥៖ ពង្រីកទៅគ្រប់ក្រឡា

គណនា harmonic លំដាប់ ២ លើក្រឡាទាំងអស់ ហើយបង្ហាញទំហំនៃ harmonic ទី២ (cos2 sin2)៖ ក្រឡាដែលមានតម្លៃខ្ពស់ ទំនងជាមានកំពូលពីរ។ ផែនទីនេះជាជំហានដំបូងឆ្ពោះទៅផែនទីប្រព័ន្ធដាំដុះ។

«ស៊េរី NDVI ប្រចាំខែ ២០២៣–២០២៤ បង្ហាញស្រែមួយដែលមានកំពូលពីរក្នុងមួយឆ្នាំ និងស្រែមួយទៀតដែលមានកំពូលតែមួយ។ ទំហំ harmonic ទី២ អាចប្រើដើម្បីរកស្រែពីរដងក្នុងខេត្តទាំងមូល បន្ទាប់ពីផ្ទៀងផ្ទាត់ជាមួយទិន្នន័យវាល។»

អ្វីដែលយើងមិនអាចសន្និដ្ឋាន

កំពូល NDVI ពីរ មិនមែនតែងតែជាស្រូវពីរដងទេ៖ វាអាចជាស្រូវ និងដំណាំផ្សេង ឬស្មៅដុះក្រោយច្រូត។ ចំណុចបីមិនតំណាងខេត្តទាំងមូលទេ ហើយខែដែលគ្មានការសង្កេតស្អាត អាចលាក់កំពូលខ្លីៗ។


៥.៥. សកម្មភាពអនុវត្ត

  • លំហាត់ទី៥៖ ទាញក្រាប NDVI និង LSWI នៃស្រែ ព្រៃ និងទីក្រុងក្នុងខេត្តរបស់អ្នក បង្កើត composite ប្រចាំខែ សមម៉ូដែល harmonic ហើយធ្វើផែនទីទំហំ និងខែកំពូល។ មើល លំហាត់ទី៥។
  • ក្នុងថ្នាក់៖ និស្សិតម្នាក់ៗ ទាញក្រាបនៃស្រែនៅភូមិកំណើតរបស់ខ្លួន ហើយប្រៀបធៀបជាមួយប្រតិទិនដំណាំដែលគ្រួសារដឹង។

៥.៦. ការយល់ច្រឡំដែលត្រូវប្រុងប្រយ័ត្ន

១. «NDVI ធ្លាក់ចុះភ្លាមៗ មានន័យថាដំណាំត្រូវបានច្រូត» ភាគច្រើនវាជាពពក ឬស្រមោលដែលរត់ចួល។ ការច្រូតពិតធ្វើឱ្យ NDVI ទាបជាប់ៗគ្នាច្រើនការសង្កេត។

២. «ខែគ្មានទិន្នន័យ គឺ NDVI ស្មើសូន្យ» វាគ្មានតម្លៃ (masked)។ ការគូរជាសូន្យធ្វើឱ្យក្រាប និងមធ្យមខុស។

៣. «និន្នាការពីការសង្កេតទាំងអស់ ល្អជាងពីតម្លៃប្រចាំឆ្នាំ» រដូវកាល និងពពកដែលខុសគ្នាតាមឆ្នាំ អាចបង្កើតនិន្នាការក្លែងក្លាយ។ ប្រើតម្លៃប្រចាំឆ្នាំដែលអាចប្រៀបធៀបគ្នាបាន។

៤. «harmonic លំដាប់ខ្ពស់ តែងតែប្រសើរជាង» លំដាប់ខ្ពស់ពេកសមតាមសំឡេងរំខាន ហើយបង្កើតរលកក្លែងក្លាយនៅកន្លែងគ្មានទិន្នន័យ។ លំដាប់ ១–២ គ្រប់គ្រាន់សម្រាប់ភាគច្រើន។

៥. «ស៊េរីពេលវេលាតែងតែត្រូវការ Sentinel-2» Landsat (ចាប់ពី ១៩៨៤) សម្រាប់និន្នាការវែង MODIS (ប្រចាំថ្ងៃ ២៥០–៥០០ ម) សម្រាប់តំបន់ធំ និង Sentinel-1 សម្រាប់រដូវវស្សាដែលមានពពក។


៥.៧. សេចក្ដីសង្ខេបមេរៀន

ស៊េរីពេលវេលាបង្ហាញហត្ថលេខាពេលវេលានៃគម្របដី៖ ចំនួនកំពូល ពេលកំពូល ទំហំ និងកម្រិតមូលដ្ឋាន។ ក្នុង Earth Engine ui.Chart ទាញក្រាបសម្រាប់ចំណុច និងតំបន់តូច ហើយ composite ប្រចាំខែ និងការ mask កាត់បន្ថយសំឡេងរំខានពីពពក ដែលតែងធ្វើឱ្យ NDVI ទាបជាងពិត។

linearFit() វាស់និន្នាការច្រើនឆ្នាំ ហើយ linearRegression() ជាមួយ cos និង sin សមម៉ូដែល harmonic ដែលផ្ដល់ទំហំ និងដំណាក់សម្រាប់គ្រប់ក្រឡា។ សម្រាប់ស្រូវ លំនាំ «ទឹកមុន បៃតងក្រោយ» (LSWI បន្ទាប់មក NDVI) និងរង្វាស់ SOS POS EOS បម្លែងក្រាបទៅជាព័ត៌មានកសិកម្ម។

គំនិតស្នូលនៃមេរៀន

រូបភាពមួយផ្ទាំង ប្រាប់ថាក្រឡាមួយ «មើលទៅដូចអ្វី» នៅថ្ងៃមួយ។ ស៊េរីពេលវេលា ប្រាប់ថាវា «ធ្វើអ្វី» ពេញមួយឆ្នាំ ហើយនោះជាអ្វីដែលបែងចែកស្រែ ព្រៃ និងទីក្រុងបានច្បាស់បំផុត។


៥.៨. ពាក្យគន្លឹះខ្មែរ–អង់គ្លេស

ពាក្យខ្មែរ ពាក្យអង់គ្លេស អត្ថន័យខ្លី
ស៊េរីពេលវេលា Time series តម្លៃនៃក្រឡាមួយ តាមលំដាប់ពេលវេលា
ហត្ថលេខាពេលវេលា Temporal signature ទម្រង់ប្ដូរនៃសន្ទស្សន៍ពេញមួយឆ្នាំ
រដូវកាលរុក្ខជាតិ Phenology វដ្ដលូតលាស់ប្រចាំឆ្នាំនៃរុក្ខជាតិ
និន្នាការ Trend ការប្ដូរជាមធ្យមក្នុងមួយឆ្នាំ
តំរែតំរង់ harmonic Harmonic regression សមរដូវកាលដោយ cos និង sin
ទំហំ Amplitude កម្លាំងនៃការឡើងចុះតាមរដូវ
ដំណាក់ Phase ពេលវេលានៃកំពូលក្នុងវដ្ដ
ថ្ងៃក្នុងឆ្នាំ Day of year (DOY) លេខថ្ងៃ ១–៣៦៦

៥.៩. សំណួររំលឹក និងវាយតម្លៃ

ក. សំណួរយល់ដឹង

  1. ពិពណ៌នាហត្ថលេខាពេលវេលានៃស្រែវស្សា ព្រៃស្រោងទាប និងទីក្រុង ដោយប្រើលក្ខណៈបួន។
  2. ហេតុអ្វីពពកធ្វើឱ្យ NDVI ទាបជាងពិត ស្ទើរតែជានិច្ច?
  3. ហេតុអ្វី composite ប្រចាំខែត្រូវការ system:time_start?
  4. ពន្យល់អត្ថន័យនៃ amplitude និង phase ក្នុងម៉ូដែល harmonic។
  5. ហេតុអ្វី LSWI ជួយរកស្រែ ក្នុងរយៈពេលដំបូងនៃរដូវ?

ខ. សំណួរអនុវត្តគោលគំនិត

  1. សរសេរកូដបង្កើត composite ១៦ ថ្ងៃ សម្រាប់ឆ្នាំ ២០២៤ (២៣ រូបភាព)។
  2. ក្រាប NDVI នៃស្រែមួយ មានតម្លៃ ០,០៥ នៅថ្ងៃតែមួយក្នុងខែកញ្ញា រវាងតម្លៃ ០,៦៥ និង ០,៧០។ តើអ្នកបកស្រាយយ៉ាងណា ហើយធ្វើអ្វី?
  3. ក្រឡាមួយមាន a₁ = ០,០៣ និង b₁ = −០,១៥។ គណនាទំហំ ហើយប្រាប់ថារដូវកាលខ្លាំង ឬខ្សោយ។
  4. ហេតុអ្វីមិនគួរគណនានិន្នាការ NDVI ពីរូបភាព Landsat ទាំងអស់ ២០០០–២០២៤ ដោយផ្ទាល់?
  5. ស្នើវិធីរកស្រែពីរដងក្នុងខេត្តទាំងមូល ដោយប្រើមេរៀននេះ។

គ. កិច្ចការខ្លី

ទាញក្រាប NDVI ប្រចាំខែ ២០២៣–២០២៤ នៃស្រែមួយ និងព្រៃមួយនៅក្នុងខេត្តរបស់អ្នក។ កំណត់ SOS POS EOS នៃស្រែដោយភ្នែក ហើយសរសេរកថាខណ្ឌមួយប្រៀបធៀបជាមួយប្រតិទិនដំណាំនៅតំបន់នោះ។


កំណត់សម្គាល់សម្រាប់គ្រូបង្រៀន

ក. ការបែងចែកពេលវេលា ១៨០ នាទី

សកម្មភាព ពេលវេលា
ស្ថានភាពបើកមេរៀន៖ ស្រែពីរដង ១៥ នាទី
ហត្ថលេខាពេលវេលា · ui.Chart ២៥ នាទី
ពពក និង composite ប្រចាំខែ ២៥ នាទី
ដំណាក់កាលស្រូវ · NDVI និង LSWI ២០ នាទី
និន្នាការលីនេអ៊ែរ ២០ នាទី
Harmonic · ពិសោធន៍ ៣៥ នាទី
Phenology metrics · ឧទាហរណ៍តាកែវ ២៥ នាទី
សង្ខេប និងណែនាំលំហាត់ ១៥ នាទី
សរុប ១៨០ នាទី / ៣ ម៉ោង

ខ. ការភ្ជាប់ទៅមេរៀនបន្ទាប់

យើងបានឃើញថា ស្រែ ព្រៃ និងទីក្រុង មានហត្ថលេខាស្ពិចត្រាល់ និងពេលវេលាខុសគ្នា។ ប៉ុន្តែការមើលក្រាបម្ដងមួយក្រឡា មិនអាចធ្វើផែនទីខេត្តទាំងមូលបានទេ។

តើត្រូវបង្រៀនកុំព្យូទ័រឱ្យចាត់ថ្នាក់គ្រប់ក្រឡាក្នុងខេត្ត ដោយប្រើចំណុចគំរូពីរបីរយ ហើយដឹងថាផែនទីនោះត្រឹមត្រូវប៉ុណ្ណាយ៉ាងដូចម្ដេច?

សំណួរនេះនាំទៅ មេរៀនទី៦៖ ការចាត់ថ្នាក់គម្របដីដោយ Random Forest។

⬅️ មេរៀនទី៤ · ➡️ មេរៀនទី៦