Skip to content

លំហាត់ទី១២៖ LST ភ្នំពេញ

ព័ត៌មានលំហាត់

មេរៀនពាក់ព័ន្ធ៖ មេរៀនទី១២៖ ទីក្រុង ការពង្រីក និងសីតុណ្ហភាពផ្ទៃដី ការអនុវត្តដោយខ្លួនឯង · Earth Engine Code Editor · QGIS · ប្រហែល ១២៥ នាទី

ស្ថានភាព

អ្នកនឹងរៀបចំ «ផែនទីកំដៅ» សម្រាប់ភ្នំពេញ៖ LST រដូវក្ដៅ UHI ទំនាក់ទំនង LST–NDVI តារាងខណ្ឌជាមួយប្រជាជន និងការពង្រីកទីក្រុងពីទិន្នន័យពីរប្រភព។

គោលបំណង

  • គណនា LST ជា °C ពី Landsat 8/9 C2 L2 ជាមួយការលុបពពក។
  • គណនា UHI ដោយនិយមន័យជនបទពីរ។
  • វាស់ទំនាក់ទំនង LST–NDVI ដោយ linearFit។
  • ធ្វើតារាងខណ្ឌ (LST NDVI ប្រជាជន) ហើយប្រៀបធៀបការពង្រីកពី Dynamic World និង GHSL។

លំដាប់ការងារ លំហាត់ទី១២LST ភ្នំពេញLST រដូវក្ដៅ២៥ នាទីUHI និងនិយមន័យជនបទ២៥ នាទីLST–NDVI២០ នាទីតារាងខណ្ឌ២៥ នាទីការពង្រីកពីពីរប្រភព២០ នាទីសរុបប្រហែល ១១៥ នាទី

លំដាប់ការងារនៃលំហាត់ទី១២ និងពេលវេលាប្រហាក់ប្រហែល។

ឯកសារដែលប្រើ

  • LANDSAT/LC08/C02/T1_L2 · LANDSAT/LC09/C02/T1_L2 · ESA/WorldCover/v200 · GOOGLE/DYNAMICWORLD/V1 · JRC/GHSL/P2023A/GHS_BUILT_S · WorldPop/GP/100m/pop · FAO/GAUL/2015/level2។

ពិសោធន៍មុនចាប់ផ្ដើម · ១០ នាទី

រកកម្រិត ΔNDVI ដែលបង្ហាញសំណង់ថ្មីច្បាស់ ដោយមិនរាប់ព្រៃ ឬដំណាំដែលប្ដូរតាមរដូវ។

សកម្មភាពទី១៖ LST រដូវក្ដៅ · ២៥ នាទី

var aoi = ee.FeatureCollection('FAO/GAUL/2015/level1').filter(ee.Filter.eq('ADM1_NAME', 'Phnom Penh'));
function prepL(img) {
  var qa = img.select('QA_PIXEL');
  var clear = qa.bitwiseAnd(1 << 1).eq(0).and(qa.bitwiseAnd(1 << 3).eq(0)).and(qa.bitwiseAnd(1 << 4).eq(0));
  var lst = img.select('ST_B10').multiply(0.00341802).add(149.0).subtract(273.15).rename('LST');
  var ndvi = img.select(['SR_B5', 'SR_B4']).multiply(0.0000275).add(-0.2).normalizedDifference(['SR_B5', 'SR_B4']).rename('NDVI');
  return lst.addBands(ndvi).updateMask(clear).copyProperties(img, ['system:time_start']);
}
var land = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2').merge(ee.ImageCollection('LANDSAT/LC09/C02/T1_L2'))
  .filterBounds(aoi).filterDate('2021-01-01', '2025-01-01').filter(ee.Filter.calendarRange(3, 5, 'month')).map(prepL);
var med = land.median().clip(aoi);
print('រូបភាព', land.size());
Map.centerObject(aoi, 11);
Map.addLayer(med.select('LST'), {min: 28, max: 45, palette: ['#313695', '#74add1', '#ffffbf', '#f46d43', '#a50026']}, 'LST (°C)');
Map.addLayer(land.select('LST').count().clip(aoi), {min: 0, max: 20, palette: ['red', 'white', 'green']}, 'ចំនួនការសង្កេតស្អាត', false);

សកម្មភាពទី២៖ UHI និងនិយមន័យជនបទ · ២៥ នាទី

var wc = ee.ImageCollection('ESA/WorldCover/v200').first();
var region = aoi.geometry().buffer(15000);
var lstR = land.select('LST').median();
function meanIn(mask, geom) {
  return ee.Number(lstR.updateMask(mask).reduceRegion({reducer: ee.Reducer.mean(), geometry: geom, scale: 30, maxPixels: 1e10, tileScale: 4}).get('LST'));
}
var tUrban = meanIn(wc.eq(50), aoi.geometry());
var ring = region.difference(aoi.geometry());
print('UHI (ជនបទ = ដំណាំ)', tUrban.subtract(meanIn(wc.eq(40), ring)));
print('UHI (ជនបទ = ព្រៃ + ស្មៅ)', tUrban.subtract(meanIn(wc.eq(10).or(wc.eq(30)), ring)));

ហេតុអ្វីតម្លៃទាំងពីរខុសគ្នា? តើមួយណាសមជាងសម្រាប់ការពិភាក្សាគោលនយោបាយ?

សកម្មភាពទី៣៖ LST–NDVI · ២០ នាទី

var fit = med.select(['NDVI', 'LST']).updateMask(wc.neq(80)).reduceRegion({reducer: ee.Reducer.linearFit(),
  geometry: aoi.geometry(), scale: 30, maxPixels: 1e10, tileScale: 4});
print('ជម្រាល', fit.get('scale'), 'offset', fit.get('offset'));
var sample = med.select(['NDVI', 'LST']).updateMask(wc.neq(80)).sample({region: aoi.geometry(), scale: 30, numPixels: 1000, seed: 3});
print(ui.Chart.feature.byFeature(sample, 'NDVI', 'LST').setChartType('ScatterChart')
  .setOptions({pointSize: 2, hAxis: {title: 'NDVI'}, vAxis: {title: 'LST (°C)'}}));

wc.neq(80) ដកទឹកអចិន្ត្រៃយ៍ចេញ ព្រោះវាមាន NDVI ទាប និង LST ទាប ហើយធ្វើឱ្យជម្រាលខុស។

សកម្មភាពទី៤៖ តារាងខណ្ឌ · ២៥ នាទី

var khan = ee.FeatureCollection('FAO/GAUL/2015/level2').filter(ee.Filter.eq('ADM1_NAME', 'Phnom Penh'));
var pop = ee.ImageCollection('WorldPop/GP/100m/pop').filter(ee.Filter.eq('country', 'KHM')).filter(ee.Filter.eq('year', 2020)).first();
var t = med.reduceRegions({collection: khan, reducer: ee.Reducer.mean(), scale: 30, tileScale: 4})
  .map(function(f) {
    var p = pop.reduceRegion({reducer: ee.Reducer.sum(), geometry: f.geometry(), scale: 100, maxPixels: 1e9}).values().get(0);
    var hot = med.select('LST').gt(40).multiply(100).reduceRegion({reducer: ee.Reducer.mean(), geometry: f.geometry(), scale: 30, maxPixels: 1e9}).get('LST');
    return f.set({pop: p, pct_hot: hot});
  });
print(t.select(['ADM2_NAME', 'LST', 'NDVI', 'pop', 'pct_hot']).sort('LST', false));
Export.table.toDrive({collection: t, description: 'pp_khan_heat', folder: 'applied_gis', fileFormat: 'CSV',
  selectors: ['ADM2_CODE', 'ADM2_NAME', 'LST', 'NDVI', 'pop', 'pct_hot']});
Export.image.toDrive({image: med.select('LST').toFloat(), description: 'pp_lst_hot_season', folder: 'applied_gis',
  region: aoi.geometry(), scale: 30, crs: 'EPSG:32648', maxPixels: 1e10});

សកម្មភាពទី៥៖ ការពង្រីកពីពីរប្រភព · ២០ នាទី

var km2 = ee.Image.pixelArea().divide(1e6);
function dwBuilt(y) {
  return ee.ImageCollection('GOOGLE/DYNAMICWORLD/V1').filterBounds(aoi).filterDate(y + '-01-01', (y + 1) + '-01-01')
    .select('built').mean().gt(0.5);
}
function sumKm2(mask) { return km2.updateMask(mask).reduceRegion({reducer: ee.Reducer.sum(), geometry: aoi.geometry(), scale: 10, maxPixels: 1e10, tileScale: 4}).get('area'); }
print('Dynamic World ២០១៧', sumKm2(dwBuilt(2017)), '២០២៤', sumKm2(dwBuilt(2024)));
var g15 = ee.Image('JRC/GHSL/P2023A/GHS_BUILT_S/2015').select('built_surface');
var g20 = ee.Image('JRC/GHSL/P2023A/GHS_BUILT_S/2020').select('built_surface');
print('GHSL ២០១៥ (គម²)', g15.divide(1e6).reduceRegion({reducer: ee.Reducer.sum(), geometry: aoi.geometry(), scale: 100}),
      '២០២០', g20.divide(1e6).reduceRegion({reducer: ee.Reducer.sum(), geometry: aoi.geometry(), scale: 100}));

GHSL built_surface ជា ម² សំណង់ក្នុងក្រឡានីមួយៗ ដូច្នេះការបូក ÷ ១ ០០០ ០០០ ផ្ដល់ គម² ដោយផ្ទាល់។ Dynamic World ប្រើកម្រិតប្រូបាប៊ីលីតេ ដូច្នេះលេខរបស់វាមិនស្មើ GHSL ទេ។ ប្រៀបធៀបអត្រាកើនឡើង មិនមែនតម្លៃដាច់ខាតទេ។

លទ្ធផលដែលរំពឹងទុក

ប្រៀបធៀបលទ្ធផលរបស់អ្នកជាមួយរូបខាងក្រោម។ លេខ និងពណ៌មិនចាំបាច់ដូចបេះបិទទេ ប៉ុន្តែលំនាំគួរតែស្រដៀងគ្នា។

LST និង NDVILST ក្លែងធ្វើពីគម្របដីពិត និង NDVI ពិត នៃ Landsat 8 ភ្នំពេញ (សម្រាប់បង្រៀន)-០.២០០.២០.៤០.៦២៥៣០៣៥៤០៤៥NDVILST (°C)LST (°C)ជម្រាល -២១,៦ °C / ១ NDVI (ដី)

លទ្ធផលគំរូ ១៖ រុក្ខជាតិធ្វើឱ្យត្រជាក់។

អ្វីដែលត្រូវពិនិត្យ

  • តំបន់សាងសង់ (ក្រហម) និងដីទទេក្ដៅបំផុត ទឹក (ខៀវ) ត្រជាក់បំផុត។
  • ក្នុងចំណោមដី LST ថយនៅពេល NDVI កើន៖ ការបញ្ចេញចំហាយពីស្លឹកធ្វើឱ្យផ្ទៃត្រជាក់។
  • LST ក្នុងរូបនេះត្រូវបានក្លែងធ្វើពីគម្របដីពិត ដើម្បីបង្ហាញទំនាក់ទំនង៖ លំហាត់ទី១២ ប្រើ ST_B10 ពិត។

កោះកំដៅទីក្រុង (UHI)ផ្នែកកាត់ LST ក្លែងធ្វើ ពីជនបទ ឆ្លងកាត់ទីក្រុង · ទន្លេនៅ +៤ គម-២០-១០០១០២០៣០៣៥៤០ចម្ងាយពីកណ្ដាលទីក្រុង (គម)LST (°C)ទីក្រុងទន្លេជនបទUHI ≈ ៨ °C

លទ្ធផលគំរូ ២៖ ទីក្រុងក្ដៅជាងជនបទជុំវិញ។

អ្វីដែលត្រូវពិនិត្យ

  • UHI = LST មធ្យមក្នុងទីក្រុង − LST មធ្យមក្នុងជនបទជុំវិញ។
  • ទន្លេ បឹង និងឧទ្យាន បង្កើត «កោះត្រជាក់» ក្នុងទីក្រុង។
  • តម្លៃ UHI អាស្រ័យលើរបៀបកំណត់ «ជនបទ»៖ ស្រែស្ងួតក្នុងរដូវប្រាំងក៏ក្ដៅដែរ។ ផ្នែកកាត់នេះជាការក្លែងធ្វើ។

កំហុសទូទៅ និងដំណោះស្រាយ

បញ្ហាដែលឃើញ មូលហេតុទូទៅ ដំណោះស្រាយ
LST ≈ ៤០០០០ ឬ −២៧៣ ភ្លេចមាត្រដ្ឋាន ST_B10 × 0.00341802 + 149 − 273.15
ចំណុចត្រជាក់ខុសប្រក្រតី ពពកមិនបាន mask QA_PIXEL bits 1 3 4
ជម្រាល LST–NDVI វិជ្ជមាន ទឹកនៅក្នុងសំណាក updateMask(wc.neq(80))
pop = null ឈ្មោះក្រុមរលក WorldPop values().get(0)
GHSL image not found ឈ្មោះយុគខុស ប្រើ ១៩៧៥ … ២០៣០ រៀងរាល់ ៥ ឆ្នាំ

លទ្ធផលត្រូវប្រគល់

  • តំណស្គ្រីប។
  • ផែនទី LST និងផែនទីចំនួនការសង្កេតស្អាត (រូបអេក្រង់)។
  • តម្លៃ UHI ពីរ និងការពន្យល់ភាពខុសគ្នា។
  • ជម្រាល LST–NDVI និងក្រាប scatter។
  • CSV តារាងខណ្ឌ និងផែនទីអាទិភាពពី QGIS (LST × ប្រជាជន)។
  • តារាងការពង្រីកពី Dynamic World និង GHSL ជាមួយកថាខណ្ឌពន្យល់។

ពិនិត្យលទ្ធផលដោយខ្លួនឯង

១. ST_B10 ត្រូវគុណនឹងប៉ុន្មាន មុនបូក ១៤៩,០?

២. ក្នុង QA_PIXEL តើ bit ណាជាពពក (cloud)?

៣. Reducer ណាផ្ដល់ជម្រាល និង offset នៃ LST ធៀបនឹង NDVI?

៤. ក្រុមរលកណានៃ Dynamic World ជាប្រូបាប៊ីលីតេសំណង់?