សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ (Applied GIS and Remote Sensing)

JavaScript សម្រាប់ Earth Engine

មេរៀនទី២ នៃ ១៥ · ៣ ម៉ោង
យាំ សារដ្ឋ · YAM Sarath
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២១

ផែនការមេរៀន ៣ ម៉ោង

  1. ស្ថានភាពបើកមេរៀន៖ if ដែលមិនដំណើរការ១៥ នាទី
  2. JavaScript មូលដ្ឋាន (សរសេរតាម)៣០ នាទី
  3. Client និង Server២៥ នាទី
  4. វត្ថុ Earth Engine២០ នាទី
  5. Chaining និង lazy evaluation២០ នាទី
  6. map() · ពិសោធន៍៣០ នាទី
  7. filter → map → reduce និងកំហុសទូទៅ២៥ នាទី
  8. សង្ខេប និងណែនាំលំហាត់១៥ នាទី
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២២

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

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

  • ប្រើអថេរ អារេ វត្ថុ (object) និងមុខងារ (function) ក្នុង JavaScript។
  • បែងចែកវត្ថុ JavaScript ធម្មតា ពីវត្ថុ Earth Engine (ee.*) ហើយពន្យល់ថាហេតុអ្វីវាប្រព្រឹត្តខុសគ្នា។
  • ស្គាល់ប្រភេទវត្ថុ Earth Engine សំខាន់ៗ៖ Image ImageCollection Geometry Feature FeatureCollection និង Reducer។
  • សរសេរកូដដោយភ្ជាប់មុខងារ (method chaining) និងប្រើ map() ជំនួស for loop។
  • អានសារកំហុសក្នុង Console ហើយកែកំហុសទូទៅ។
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៣

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

  • មេរៀនទី១៖ Code Editor និងស្គ្រីបដំបូង។
  • សៀវភៅទី២៖ ស្រទាប់វ៉ិចទ័រ និងតារាងគុណលក្ខណៈ (ដើម្បីយល់ Feature)។
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៤
មេរៀនទី២

ស្ថានភាពបើកមេរៀន

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៥

ស្ថានភាពបើកមេរៀន

និស្សិតម្នាក់ចង់បោះពុម្ពចំនួនរូបភាពលើខេត្តរបស់គាត់ ហើយបើចំនួនលើស ៥០ គាត់ចង់ឃើញពាក្យ «គ្រប់គ្រាន់»។ គាត់សរសេរ៖

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៦

ស្ថានភាពបើកមេរៀន

``javascript var n = s2.size(); if (n > 50) else ``

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៧

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

  • តើកូដ Earth Engine ដំណើរការនៅឯណា និងនៅពេលណា?
  • តើត្រូវសរសេរលក្ខខណ្ឌ និង loop យ៉ាងដូចម្ដេច នៅពេលទិន្នន័យនៅលើម៉ាស៊ីនមេ?
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៨

គិត · ចែករំលែក

តើកូដ Earth Engine ដំណើរការនៅឯណា និងនៅពេលណា?

គិតម្នាក់ឯង ១ នាទី · ពិភាក្សាជាគូ ២ នាទី · ចែករំលែកជាមួយថ្នាក់។

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៩

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

ព័ត៌មាន

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

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២១០

:material-presentation-play: ស្លាយបង្រៀនមេរៀននេះ

និស្សិតភូមិវិទ្យាជាច្រើនបារម្ភថា ពួកគេត្រូវក្លាយជាអ្នកសរសេរកម្មវិធីមុនប្រើ Earth Engine។ តាមពិត ស្គ្រីបភាគច្រើនក្នុងវគ្គនេះប្រើតែ ធាតុ JavaScript ប្រហែលដប់ និង លំនាំតែមួយ៖ ត្រង → អនុវត្ត → សង្ខេប។ អ្វីដែលពិបាកពិតប្រាកដ មិនមែនវាក្យសម្ពន្ធទេ ប៉ុន្តែជាការយល់ថា …

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២១១

មេរៀននេះបង្រៀន JavaScript គ្រប់គ្រាន់សម្រាប់ Earth Engine ពន្យល់ភាពខុសគ្នារវាង client និង server និងណែនាំមុខងារសំខាន់បំផុត map()។

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២១២
មេរៀនទី២

ទ្រឹស្ដីស្នូល

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២១៣

JavaScript គ្រប់គ្រាន់សម្រាប់ Earth Engine

JavaScript ជាភាសាដែលកម្មវិធីរុករកទាំងអស់យល់។

សម្រាប់វគ្គនេះ យើងត្រូវការតែធាតុដូចខាងក្រោម៖

```javascript // ១. អថេរ៖ ដាក់ឈ្មោះឱ្យតម្លៃ var province = 'Kampong Chhnang'; var year = 2024;

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២១៤

JavaScript គ្រប់គ្រាន់សម្រាប់ Earth Engine

// ២. អារេ (list)៖ តម្លៃច្រើនតាមលំដាប់ var bands = ['B4', 'B3', 'B2'];

// ៣. វត្ថុ (object/dictionary)៖ ឈ្មោះ → តម្លៃ var vis = ;

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២១៥

JavaScript គ្រប់គ្រាន់សម្រាប់ Earth Engine

// ៤. មុខងារ៖ ការងារដែលប្រើឡើងវិញបាន function addNDVI(img)

// ៥. មតិយោបល់ (comment)៖ ពន្យល់កូដ មិនដំណើរការ ```

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២១៦

JavaScript គ្រប់គ្រាន់សម្រាប់ Earth Engine

ច្បាប់តូចៗដែលត្រូវចាំ៖ បញ្ចប់បន្ទាត់ដោយ ; អក្សរត្រូវក្នុងសញ្ញា '...' ឈ្មោះប្រកាន់អក្សរធំតូច (Map ≠ map) ហើយវង់ក្រចក () [] ត្រូវបិទជាគូជានិច្ច។

Code Editor គូសក្រហមលើកំហុសវាក្យសម្ព័ន្ធមុនអ្នកចុច Run។

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២១៧

សំណួររហ័ស

រាយធាតុ JavaScript ចំនួនបួន ដែលប្រើញឹកញាប់ក្នុង Earth Engine ព្រមឧទាហរណ៍។

ឆ្លើយក្នុង ១ នាទី មុនបន្តទៅផ្នែកបន្ទាប់។

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២១៨

ហេតុអ្វី if និង for ធម្មតាមិនដំណើរការលើ ee.Number

ម៉ាស៊ីនភ្ញៀវ (client) និងម៉ាស៊ីនមេ (server)កម្មវិធីរុករករបស់អ្នកJavaScript ធម្មតា · var x = 5ម៉ាស៊ីនមេ Googleee.Image · ee.Number · ee.Listសំណើ (ពិពណ៌នាការគណនា)លទ្ធផល (ក្រឡាផែនទី · print)វត្ថុ ee.* គ្រាន់តែជា «ការពិពណ៌នា» នៅក្នុងកម្មវិធីរុករក រហូតដល់ត្រូវការលទ្ធផល
សង្កេត
  • ee.Number(5) មិនមែនលេខ ៥ ក្នុងកម្មវិធីរុករកទេ៖ វាជាការណែនាំឱ្យម៉ាស៊ីនមេគណនា។
  • ប្រើ .add() .gt() ee.Algorithms.If() ជំនួស + > និង if។
  • print() និង Map.addLayer() ស្នើលទ្ធផលពីម៉ាស៊ីនមេ។
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២១៩

Client និង Server៖ កូដដំណើរការនៅពីរកន្លែង

នៅពេលអ្នកសរសេរ var n = s2.size(); កម្មវិធីរុករកមិនបានរាប់អ្វីទាំងអស់ទេ។

  • វាបង្កើត ការពិពណ៌នា «រាប់ធាតុក្នុង s2» ហើយរក្សាទុកក្នុងអថេរ n។
  • តម្លៃពិតគណនាតែពេលអ្នកសួរវា តាមរយៈ print(n) Map.addLayer() ឬ Export។
  • ដូច្នេះ៖
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២២០

Client និង Server៖ កូដដំណើរការនៅពីរកន្លែង

  • វត្ថុ JavaScript ធម្មតា (5 'abc' [1,2]) រស់នៅលើ client (កម្មវិធីរុករក)។
  • វត្ថុ ee.* (ee.Number ee.Image ee.List) រស់នៅលើ server ហើយត្រូវប្រើមុខងាររបស់វាផ្ទាល់៖
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២២១

Client និង Server៖ កូដដំណើរការនៅពីរកន្លែង

ធ្វើលើ client (ខុសសម្រាប់ ee)ធ្វើលើ server (ត្រូវ)
n > 50n.gt(50)
a + ba.add(b)
if (...) ee.Algorithms.If(cond, a, b) ឬ filter
for (...).map(function(x) )
list[0]list.get(0)
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២២២

getInfo() ៖ ប្រើតិចបំផុត

គន្លឹះ

n.getInfo() ទាញតម្លៃពីម៉ាស៊ីនមេមកកម្មវិធីរុករក ហើយ បង្កក កម្មវិធីរុករករហូតដល់ទទួលបាន។ វាដំណើរការលើតម្លៃតូច ប៉ុន្តែធ្វើឱ្យស្គ្រីបយឺត ឬគាំងលើទិន្នន័យធំ។ ប្រើ print() ជំនួស ព្រោះវាទាញតម្លៃដោយមិនបង្កក។

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២២៣

វត្ថុសំខាន់ៗ

ប្រភេទវត្ថុ Earth Engineee.Imageរ៉ាស្ទ័រ · ក្រុមរលកច្រើនee.ImageCollectionបណ្ដុំរូបភាពee.Geometryចំណុច បន្ទាត់ ពហុកោណee.Featureធរណីមាត្រ + គុណលក្ខណៈee.FeatureCollectionស្រទាប់វ៉ិចទ័រee.Reducerស្ថិតិee.Number · ee.String · ee.List · ee.Date · ee.Dictionaryទិន្នន័យសាមញ្ញលើម៉ាស៊ីនមេ
សង្កេត
  • រ៉ាស្ទ័រ៖ ee.Image (មួយ) និង ee.ImageCollection (ច្រើន)។
  • វ៉ិចទ័រ៖ ee.Geometry → ee.Feature → ee.FeatureCollection (ដូចស្រទាប់ QGIS)។
  • Reducer៖ បម្លែងតម្លៃច្រើនទៅជាស្ថិតិ (មេរៀនទី៤)។
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២២៤

វត្ថុ Earth Engine សំខាន់ៗ

វត្ថុដូចអ្វីក្នុង QGISមុខងារប្រើញឹកញាប់
ee.Imageស្រទាប់រ៉ាស្ទ័រ (ក្រុមរលកច្រើន)select normalizedDifference updateMask clip
ee.ImageCollectionថតដែលមានរ៉ាស្ទ័រច្រើនfilterDate filterBounds map median
ee.Geometryធរណីមាត្រមួយPoint Rectangle buffer area
ee.Featureវត្ថុមួយ + គុណលក្ខណៈget set geometry
ee.FeatureCollectionស្រទាប់វ៉ិចទ័រfilter map reduceColumns
ee.Reducerស្ថិតិmean median sum histogram
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២២៥

វត្ថុ Earth Engine សំខាន់ៗ

ឈ្មោះក្រុមរលក គុណលក្ខណៈ (properties) និងប្រព័ន្ធកូអរដោនេ ត្រូវបានរក្សាទុកជាមួយវត្ថុនីមួយៗ។

print(img) បង្ហាញព័ត៌មានទាំងនេះក្នុង Console៖ ទម្លាប់ល្អគឺ print វត្ថុរាល់ពេលអ្នកមិនប្រាកដ។

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២២៦

សំណួររហ័ស

ហេតុអ្វី n > 50 មិនដំណើរការលើ ee.Number?

ឆ្លើយក្នុង ១ នាទី មុនបន្តទៅផ្នែកបន្ទាប់។

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២២៧

អានកូដពីឆ្វេងទៅស្ដាំ

ការភ្ជាប់មុខងារ (method chaining)ImageCollection៥ លាន+.filterBounds()~៧ ០០០.filterDate()~២៥០.filter(ពពក < ២០)~៨០.median()១ រូបភាពមុខងារនីមួយៗ ត្រឡប់វត្ថុថ្មី ដែលមុខងារបន្ទាប់ប្រើបន្ត · លេខរូបភាពជាប្រហាក់ប្រហែល
សង្កេត
  • មុខងារនីមួយៗមិនប្ដូរវត្ថុដើមទេ៖ វាត្រឡប់វត្ថុថ្មី។
  • ត្រងឱ្យបានច្រើនមុន (filterBounds filterDate) ទើបការគណនាលឿន។
  • ចុងក្រោយ reducer (median) បម្លែងបណ្ដុំទៅជារូបភាពមួយ។
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២២៨

ការភ្ជាប់មុខងារ និងការគណនាពន្យារពេល

មុខងារ Earth Engine នីមួយៗ ត្រឡប់វត្ថុថ្មី ដោយមិនកែវត្ថុដើមទេ។

ដូច្នេះយើងអាចភ្ជាប់វាជាខ្សែ ហើយអានពីលើចុះក្រោម ដូចជាប្រយោគ៖ «យកបណ្ណសារ → ត្រងតាមខេត្ត → ត្រងតាមឆ្នាំ → ត្រងពពក → យកតម្លៃកណ្ដាល»។

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២២៩

Earth Engine គណនាតែពេលត្រូវការ

ការគណនាពន្យារពេល (lazy evaluation)var col = ee.ImageCollection(...)គ្មានការគណនាvar comp = col.median()គ្មានការគណនាvar ndvi = comp.normalizedDifference(...)គ្មានការគណនាMap.addLayer(ndvi)គណនាឥឡូវ! តែក្រឡាដែលមើល
សង្កេត
  • បន្ទាត់ var គ្រាន់តែបង្កើតផែនការ (graph) នៃការគណនា។
  • ការគណនាពិតកើតឡើងពេល print Map.addLayer ឬ Export។
  • នៅកម្រិត zoom ទាប Earth Engine គណនាលើក្រឡាធំ (pyramid) ដើម្បីលឿន។
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៣០

ការភ្ជាប់មុខងារ និងការគណនាពន្យារពេល

ការគណនាទាំងមូល ពន្យារពេល (lazy) រហូតដល់ត្រូវការលទ្ធផល។

អត្ថប្រយោជន៍៖ Earth Engine មើលខ្សែការគណនាទាំងមូល ហើយគណនាតែក្រឡាដែលចាំបាច់ នៅគុណភាពដែលត្រូវនឹងកម្រិត zoom របស់ផែនទី។ នេះជាមូលហេតុដែលផែនទីបង្ហាញលឿន ទោះបីការគណនាប្រើរូបភាពរាប់រយក៏ដោយ។

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៣១

Scale ប្ដូរតាម zoom

ប្រុងប្រយ័ត្ន

នៅពេលអ្នក zoom ចេញ Earth Engine គណនាលើក្រឡាធំជាង (pyramid)។ ដូច្នេះតម្លៃដែលអ្នកឃើញក្នុង Inspector នៅ zoom ទាប អាចខុសពីតម្លៃនៅក្រឡា ១០ ម។ សម្រាប់ស្ថិតិ ត្រូវកំណត់ scale ដោយផ្ទាល់ (មេរៀនទី៤)។

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៣២

គិតជា «អនុវត្តលើគ្រប់ធាតុ»

map() ជំនួស for loop// ✗ មិនដំណើរការលើម៉ាស៊ីនមេfor (var i = 0; i < col.size(); i++) { var img = col.get(i); ...}// ✓ map() ស្របគ្នាvar withNdvi = col.map(function(img) { var nd = img.normalizedDifference(['B8','B4']); return img.addBands(nd.rename('NDVI'));});col.size() ជា ee.Number មិនមែនលេខ JSមុខងារត្រូវ return រូបភាព
សង្កេត
  • for loop ដំណើរការក្នុងកម្មវិធីរុករក ហើយមិនស្គាល់ទំហំពិតនៃ collection។
  • map() ផ្ញើមុខងារទៅម៉ាស៊ីនមេ ដែលអនុវត្តលើធាតុនីមួយៗស្របគ្នា។
  • ក្នុង map() មិនអាចប្រើ print() getInfo() ឬ Map.addLayer() បានទេ។
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៣៣

map()៖ អនុវត្តមុខងារលើគ្រប់ធាតុ

map() យកមុខងារមួយ ហើយអនុវត្តវាលើធាតុនីមួយៗនៃ collection ស្របគ្នា នៅលើម៉ាស៊ីនមេ។

លទ្ធផលជា collection ថ្មី ដែលមានចំនួនធាតុដូចគ្នា៖

``javascript function addNDVI(img) var s2ndvi = s2.map(addNDVI); // គ្រប់រូបភាពមានក្រុមរលក NDVI print(s2ndvi.first().bandNames()); // ពិនិត្យ ``

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៣៤

map()៖ អនុវត្តមុខងារលើគ្រប់ធាតុ

ច្បាប់បីសម្រាប់មុខងារក្នុង map()៖ (១) ត្រូវ return វត្ថុប្រភេទដដែល (Image → Image) (២) មិនអាចប្រើ print() getInfo() ឬ Map.addLayer() ខាងក្នុង និង (៣) មិនអាចប្រើអថេរ JavaScript ដែលប្ដូរតម្លៃក្នុង loop។

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៣៥

ពិសោធន៍៖ map() លើ ImageCollection

ជ្រើសមុខងារ ហើយចុច «ដំណើរការ»។ សង្កេតថារូបភាពនីមួយៗត្រូវបានប្ដូរ ដាច់ដោយឡែកពីគ្នា ហើយចំនួនរូបភាពមិនប្ដូរ។

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៣៦

សំណួររហ័ស

ពន្យល់ការគណនាពន្យារពេល និងអត្ថប្រយោជន៍របស់វា។

ឆ្លើយក្នុង ១ នាទី មុនបន្តទៅផ្នែកបន្ទាប់។

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៣៧

លំនាំស្គ្រីប Earth Engine

គំរូ filter → map → reducefilterជ្រើសតែអ្វីដែលត្រូវការmapគណនាលើធាតុនីមួយៗreduceសង្ខេបជាលទ្ធផលមួយស្គ្រីប Earth Engine ភាគច្រើនជាបន្សំនៃជំហានទាំងបី
សង្កេត
  • filter៖ តំបន់ កាលបរិច្ឆេទ ពពក។
  • map៖ លុបពពក គណនាសន្ទស្សន៍ កាត់តាមព្រំ។
  • reduce៖ median ពេលវេលា ឬស្ថិតិតាមតំបន់។
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៣៨

លំនាំ filter → map → reduce

ស្គ្រីបភាគច្រើនក្នុងសៀវភៅនេះ ធ្វើតាមលំនាំតែមួយ៖ filter (ជ្រើសតែអ្វីដែលត្រូវការ) → map (គណនាលើធាតុនីមួយៗ) → reduce (សង្ខេបជាលទ្ធផលមួយ)។

ឧទាហរណ៍ NDVI អតិបរមារដូវប្រាំង៖

```javascript var ndviMax = s2.filterDate('2024-01-01', '2024-04-30') // filter .map(addNDVI) // map .select('NDVI') .max(); // reduce Map.addLayer(ndviMax, , …

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៣៩

អានសារកំហុស

កំហុសទូទៅក្នុង Code EditorLine 5: col.get is not a functionឈ្មោះមុខងារខុស ឬវត្ថុខុសប្រភេទCollection query aborted after accumulating over 5000 elementsprint collection ធំពេក → ប្រើ .limit(10)User memory limit exceededតំបន់ធំពេក → បង្កើន scale ឬ ExportComputation timed outគណនាលើផែនទីយូរ → Export ជា TaskImage.select: Pattern 'B8' did not matchឈ្មោះក្រុមរលកខុស (Landsat vs Sentinel)
សង្កេត
  • សារកំហុសក្នុង Console ប្រាប់លេខបន្ទាត់ និងមូលហេតុ។
  • កំហុសអង្គចងចាំ និងពេលវេលា ជាទូទៅដោះស្រាយដោយ Export ឬ scale ធំជាង។
  • ឈ្មោះក្រុមរលកខុស ជាកំហុសញឹកញាប់បំផុតពេលប្ដូរពី Sentinel-2 ទៅ Landsat។
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៤០

កំហុសទូទៅ និងការកែ

នៅពេលស្គ្រីបមិនដំណើរការ សូមធ្វើតាមលំដាប់៖ (១) អានសារក្រហមក្នុង Console និងលេខបន្ទាត់ (២) print() អថេរមុនបន្ទាត់ដែលខុស ដើម្បីមើលប្រភេទ និងឈ្មោះក្រុមរលក (៣) សាកល្បងលើតំបន់តូច និងរយៈពេលខ្លីជាមុន (៤) …

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៤១
មេរៀនទី២

ឧទាហរណ៍ដែលបានដោះស្រាយ

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៤២

ជំហានទី១៖ រកមូលហេតុ

១
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៤៣

ជំហានទី២៖ សរសេរលក្ខខណ្ឌលើ server

២
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៤៤

ជំហានទី៣៖ ជម្រើសល្អជាង

៣
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៤៥

ជំហានទី៤៖ សេចក្ដីសន្និដ្ឋាន

៤
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៤៦

លំហាត់ទី២ ក្នុង Earth Engine

លំដាប់ការងារ លំហាត់ទី២វត្ថុ មុខងារ និង map()JavaScript មូលដ្ឋាន១៥ នាទីសរសេរមុខងារ២០ នាទីmap() លើមួយឆ្នាំ២៥ នាទីស្វែងរកកំហុស២០ នាទីរក្សាទុកមុខងារ១០ នាទីសរុបប្រហែល ៩០ នាទី

លំហាត់ដំណើរការក្នុង Earth Engine Code Editor ជាមួយទិន្នន័យកាតាឡុក ហើយមានរូបលទ្ធផលគំរូ តារាងកំហុសទូទៅ និងប្រអប់ពិនិត្យលទ្ធផលដោយខ្លួនឯង។

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៤៧
មេរៀនទី២

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

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៤៨

ការយល់ច្រឡំទី១

✗ «ត្រូវជាអ្នកសរសេរកម្មវិធីទើបប្រើ Earth Engine បាន»
↓
✓ ស្គ្រីបភាគច្រើនប្រើធាតុ JavaScript តិចតួច និងលំនាំ filter → map → reduce។
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៤៩

ការយល់ច្រឡំទី២

✗ «var n = col.size() គឺជាលេខ»
↓
✓ វាជា ee.Number នៅលើម៉ាស៊ីនមេ។ ត្រូវប្រើ print() ដើម្បីឃើញតម្លៃ។
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៥០

ការយល់ច្រឡំទី៣

✗ «map() គឺ for loop»
↓
✓ map() ដំណើរការស្របគ្នា ហើយមុខងារខាងក្នុងមិនអាចប្រើ print ឬប្ដូរអថេរខាងក្រៅបានទេ។
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៥១

ការយល់ច្រឡំទី៤

✗ «getInfo() ជាវិធីល្អសម្រាប់មើលតម្លៃ»
↓
✓ វាបង្កកកម្មវិធីរុករក។ print() ល្អជាង។
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៥២

ការយល់ច្រឡំទី៥

✗ «ស្គ្រីបគ្មានកំហុស = លទ្ធផលត្រូវ»
↓
✓ កំហុសតក្កវិជ្ជា (ដូចលក្ខខណ្ឌលើ client) មិនបង្ហាញសារកំហុសទេ។
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៥៣

សេចក្ដីសង្ខេប

JavaScript សម្រាប់ Earth Engine ត្រូវការតែអថេរ អារេ វត្ថុ និងមុខងារ។ ចំណុចសំខាន់គឺការបែងចែក client (កម្មវិធីរុករក) ពី server (ម៉ាស៊ីនមេ)៖ វត្ថុ ee.* ជាការពិពណ៌នាការគណនា ដែលដំណើរការតែពេលត្រូវការលទ្ធផល ហើយត្រូវប្រើមុខងាររបស់វាផ្ទាល់ ជំនួសប្រតិបត្តិករ JavaScript ធម្មតា។

map() អនុវត្តមុខងារលើគ្រប់ធាតុស្របគ្នា ហើយជាមួយ filter និង reduce វាបង្កើតលំនាំស្គ្រីបដែលប្រើក្នុងសៀវភៅទាំងមូល។

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៥៤

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

ក្នុង Earth Engine អ្នកមិនបញ្ជាកុំព្យូទ័រឱ្យធ្វើម្ដងមួយៗទេ៖ អ្នកពិពណ៌នាលទ្ធផលដែលចង់បាន ហើយម៉ាស៊ីនមេរកវិធីគណនាវា។

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៥៥

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

ពាក្យខ្មែរពាក្យអង់គ្លេសអត្ថន័យខ្លី
អថេរVariableឈ្មោះដែលរក្សាតម្លៃ
មុខងារFunctionការងារដែលប្រើឡើងវិញបាន
ម៉ាស៊ីនភ្ញៀវClientកម្មវិធីរុករករបស់អ្នក
ម៉ាស៊ីនមេServerម៉ាស៊ីនរបស់ Google ដែលគណនា
ការភ្ជាប់មុខងារMethod chainingហៅមុខងារជាខ្សែ
ការគណនាពន្យារពេលLazy evaluationគណនាតែពេលត្រូវការ
mapmapអនុវត្តមុខងារលើគ្រប់ធាតុ
ReducerReducerបម្លែងតម្លៃច្រើនជាស្ថិតិ
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៥៦

សំណួររំលឹក

  • រាយច្បាប់បីសម្រាប់មុខងារក្នុង map()។
  • ហេតុអ្វី print() ល្អជាង getInfo()?
  • សរសេរមុខងារដែលបន្ថែមក្រុមរលក NDWI (B3 និង B8) ទៅរូបភាព Sentinel-2។
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៥៧

សំណួររំលឹក

  • កែកូដ៖ var total = 0; col.map(function(img));
  • ប្ដូរ a + b * 2 ទៅជាកូដ ee ដែល a និង b ជា ee.Number។
  • ហេតុអ្វីតម្លៃក្នុង Inspector នៅ zoom ៨ ខុសពីនៅ zoom ១៥?
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៥៨

សំណួររំលឹក

  • ពិពណ៌នាជំហាន filter → map → reduce សម្រាប់ «NDVI មធ្យមខែមីនា ២០២៤ លើខេត្តតាកែវ»។
សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៥៩

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

យកស្គ្រីបពីលំហាត់ទី១ ហើយបន្ថែមមតិយោបល់ជាភាសាខ្មែរ លើបន្ទាត់នីមួយៗ ដោយប្រាប់ថាបន្ទាត់នោះដំណើរការលើ client ឬ server។

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៦០

មេរៀនបន្ទាប់

យើងអាចត្រង និងអនុវត្តមុខងារលើ collection ហើយ។ ប៉ុន្តែរូបភាពដែលយើងប្រើនៅមានពពក ហើយយើងនៅមិនទាន់ដឹងពីរបៀបផ្គុំរូបភាពរាប់រយជារូបភាពស្អាតមួយ។

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៦១

អរគុណ

អានមេរៀនពេញ និងធ្វើលំហាត់ទី២

https://khgeo.github.io/applied-gis-rs/lessons/lesson-02/

សៀវភៅទី៤ · អនុវត្តន៍ GIS និងការយកព័ត៌មានពីចម្ងាយ · មេរៀនទី២៦២