បន្ទាប់ពីបញ្ចប់មេរៀន និស្សិតអាច៖
គណៈកម្មាធិការគ្រប់គ្រងគ្រោះមហន្តរាយខេត្តជុំវិញបឹងទន្លេសាប ចង់បានឧបករណ៍សាមញ្ញមួយ៖ ជ្រើសឆ្នាំ និងខែ ឃើញផ្ទៃទឹកលើផែនទី ឃើញក្រាបផ្ទៃទឹកប្រចាំខែ ហើយចុចលើភូមិណាមួយ ដើម្បីដឹងថាទីនោះលិចទឹកញឹកញាប់ប៉ុណ្ណា។ មន្ត្រីមិនមានគណនី Earth Engine ទេ ហើយប្រើទូរស័ព្ទ ឬកុំព្យូទ័រយួរដៃ។
សំណួរដែលមេរៀននេះឆ្លើយ៖
តើកម្មវិធី Earth Engine មានរចនាសម្ព័ន្ធយ៉ាងណា?
គិតម្នាក់ឯង ១ នាទី · ពិភាក្សាជាគូ ២ នាទី · ចែករំលែកជាមួយថ្នាក់។
រយៈពេលបង្រៀនដែលស្នើ៖ ៣ ម៉ោង · មេរៀនទី ១៤ ក្នុងចំណោម ១៥
:material-presentation-play: ស្លាយបង្រៀនមេរៀននេះ
រហូតមកដល់ពេលនេះ លទ្ធផលរបស់យើងរស់នៅក្នុង Code Editor៖ ស្គ្រីប Console និងផ្ទាំង Tasks ដែលមានតែអ្នកមានគណនី Earth Engine ទេដែលប្រើបាន។ ប៉ុន្តែអ្នកដែលត្រូវការលទ្ធផលពិតប្រាកដ (មន្ត្រីខេត្ត អង្គការ កសិករ និស្សិតផ្សេងទៀត) មិនសរសេរកូដទេ។ ពួកគេត្រូវការ តំណមួយ ដែលបើកផែនទី ជ្រើសឆ្នាំ ចុចលើភូមិ ហើយឃើញក្រាប។
មេរៀននេះបង្រៀនការបង្កើត កម្មវិធី Earth Engine (Earth Engine Apps) ដោយ ui API៖ widgets ផ្ទាំង និងផែនទី ព្រឹត្តិការណ៍ និង callback ការរក្សាឱ្យកម្មវិធីលឿន ផែនទីពីរភ្ជាប់គ្នា និងការបោះពុម្ព ព្រមទាំងជម្រើសផ្សេងសម្រាប់ចែករំលែកលទ្ធផល។
Code Editor មាន ui.root ដែលជាផ្ទាំងមេ។
កម្មវិធីភាគច្រើន៖ លុបផ្ទាំងលំនាំដើម បង្កើត ui.Panel សម្រាប់បញ្ជា និង ui.Map សម្រាប់ផែនទី ហើយដាក់ទាំងពីរក្នុង ui.root៖
```javascript ui.root.clear(); var map = ui.Map(); map.setOptions('HYBRID'); map.setCenter(104.0, 12.8, 9); var panel = ui.Panel(}); panel.add(ui.Label('ឧបករណ៍តាមដានទន្លេសាប', )); panel.add(ui.Label('ជ្រើសឆ្នាំ និងខែ …
Widget នីមួយៗមាន style (ទំហំ ពណ៌ ចន្លោះ) និងអាចមាន callback៖
```javascript var yearSel = ui.Select(); var monthSl = ui.Slider(); var info = ui.Label('ចុចលើផែនទី…'); panel.add(ui.Label('ឆ្នាំ')).add(yearSel).add(ui.Label('ខែ')).add(monthSl).add(info); …
panel.add() ត្រឡប់ panel វិញ ដូច្នេះអាចភ្ជាប់បានជាខ្សែ។ ui.Select ទទួល items ជាអក្សរ ដូច្នេះត្រូវបម្លែងទៅជាលេខ (parseInt) មុនប្រើ។
ពិពណ៌នារចនាសម្ព័ន្ធ ui.root ui.Panel និង ui.Map នៃកម្មវិធីមួយ។
ឆ្លើយក្នុង ១ នាទី មុនបន្តទៅផ្នែកបន្ទាប់។
កម្មវិធីមិនរត់ពីលើចុះក្រោមម្ដងហើយបញ្ចប់ទេ៖ វា រង់ចាំ ព្រឹត្តិការណ៍ ហើយរត់ callback៖
```javascript var gswM = ee.ImageCollection('JRC/GSW1_4/MonthlyHistory'); // ១៩៨៤–២០២១ · 0 គ្មានទិន្នន័យ · 1 ដី · 2 ទឹក function waterOf(y, m) function refresh() { var y = …
ប្រើ map.layers().set(0, …) ដើម្បីជំនួសស្រទាប់ទី ០ ជំនួសឱ្យ map.addLayer() ដែលនឹងបន្ថែមស្រទាប់ថ្មីរាល់ពេលអ្នកប្រើរំកិល។ JRC Monthly History គ្របរហូតដល់ឆ្នាំ ២០២១ ប៉ុណ្ណោះ៖ សម្រាប់ឆ្នាំថ្មីជាងនេះ ប្រើផែនទីទឹក Sentinel-1 ពីមេរៀនទី៧។
នៅពេលអ្នកប្រើចុចលើផែនទី យើងចង់បង្ហាញលេខមួយ (ឧ. ភាគរយនៃខែដែលលិច)។
លេខនោះគណនានៅម៉ាស៊ីនមេ (មេរៀនទី២)។ evaluate() ស្នើលទ្ធផល ហើយបន្តដំណើរការ៖
```javascript var occ = ee.Image('JRC/GSW1_4/GlobalSurfaceWater').select('occurrence'); map.onClick(function(c) , 'ចំណុច')); occ.reduceRegion({reducer: ee.Reducer.first(), …
getInfo() ធ្វើឱ្យកម្មវិធីទាំងមូលកក រហូតដល់ម៉ាស៊ីនមេឆ្លើយ ហើយបើម៉ាស៊ីនមេយឺត អ្នកប្រើនឹងគិតថាកម្មវិធីខូច។ ក្នុងកម្មវិធី ត្រូវប្រើ evaluate() ជានិច្ច ហើយបង្ហាញ «កំពុងគណនា…» មុន។
```javascript var chartBox = ui.Panel(); panel.add(chartBox); var lake = ee.Geometry.Rectangle([103.3, 12.2, 104.7, 13.4]); function yearChart(y) { var fc = ee.FeatureCollection(ee.List.sequence(1, 12).map(function(m) { …
ក្រាបក្នុងកម្មវិធីគួរប្រើ scale ធំល្មម (ឧ. ៣០០ ម) ដើម្បីឱ្យវាលឿន៖ អ្នកប្រើចង់ឃើញលំនាំ មិនមែនលេខត្រឹមត្រូវដល់ហិកតាទេ។
កម្មវិធីគំរូនេះធ្វើតាមរចនាសម្ព័ន្ធក្នុងមេរៀន៖ ជ្រើសឆ្នាំ រំកិលខែ ហើយចុចលើផែនទី។ មើលផ្ទាំង «កំណត់ហេតុ» ដើម្បីឃើញ callback ណាដែលរត់ ហើយនៅពេលណា។ ទិន្នន័យក្នុងពិសោធន៍ត្រូវបានក្លែងធ្វើ។
callback ជាអ្វី? ផ្ដល់ឧទាហរណ៍ពីរ។
ឆ្លើយក្នុង ១ នាទី មុនបន្តទៅផ្នែកបន្ទាប់។
```javascript var left = ui.Map(), right = ui.Map(); ui.Map.Linker([left, right]); left.addLayer(waterOf(2020, 4), , 'មេសា'); right.addLayer(waterOf(2020, 10), , 'តុលា'); …
ui.root.setLayout)។ក្នុង Code Editor ចុច Apps → New App ជ្រើសស្គ្រីប និង Cloud Project ហើយចុច Publish។
កម្មវិធីទទួលបាន URL សាធារណៈ ហើយអ្នកប្រើមិនត្រូវការគណនី Earth Engine ទេ។ ការគណនារបស់កម្មវិធីគិតលើ Cloud Project របស់អ្នកបោះពុម្ព ដូច្នេះពិនិត្យកូតា និងលក្ខខណ្ឌប្រើប្រាស់ ដែលអាចប្ដូរតាមពេលវេលា។
ជម្រើសចែករំលែកផ្សេង៖
| ជម្រើស | ពេលណាប្រើ |
|---|---|
| តំណស្គ្រីប (Get Link) | ចែករំលែកជាមួយអ្នកប្រើ Earth Engine (គ្រូ មិត្តរួមការងារ) |
| Export GeoTIFF/CSV → QGIS | ផែនទីបោះពុម្ព របាយការណ៍ ការវិភាគបន្ត (សៀវភៅទី១–២) |
| Earth Engine App | ឧបករណ៍អន្តរកម្មសម្រាប់អ្នកមិនសរសេរកូដ |
| geemap / Python | Jupyter notebook ការវិភាគធំ ការរួមបញ្ចូលជាមួយបណ្ណាល័យ Python |
| ផែនទីវេបផ្ទាល់ខ្លួន | នាំចេញ tiles ឬ GeoJSON ទៅ Leaflet/MapLibre ពេលមិនចង់ពឹងលើ Earth Engine |
ចម្លងកូដផ្នែក ១៤.៣.១ (ផ្ទាំង និងផែនទី) និង ១៤.៣.២ (widgets) ទៅក្នុងស្គ្រីបថ្មី។
រត់៖ អ្នកគួរឃើញផ្ទាំងនៅខាងឆ្វេង និងផែនទីនៅខាងស្ដាំ។
បន្ថែមកូដផ្នែក ១៤.៣.៣។
រំកិលខែ ហើយពិនិត្យថាស្រទាប់ជំនួសគ្នា (មិនជាន់គ្នា)។
បន្ថែមកូដផ្នែក ១៤.៣.៤ និង ១៤.៣.៥។
ចុចលើបឹង ព្រៃលិចទឹក និងភូមិ ហើយប្រៀបធៀបភាគរយ។
```javascript function legendRow(color, text) ), ui.Label(text)], ui.Panel.Layout.flow('horizontal')); } …
ឱ្យមិត្តម្នាក់ប្រើកម្មវិធីដោយគ្មានការពន្យល់ ហើយកត់ត្រាកន្លែងដែលគេច្រឡំ។
កែ ហើយបោះពុម្ព (ផ្នែក ១៤.៣.៨)។ សាកល្បង URL លើទូរស័ព្ទ។
កម្មវិធីបង្ហាញទិន្នន័យដែលមានដែនកំណត់របស់វា (JRC មិនមានឆ្នាំក្រោយ ២០២១ ហើយខកទឹកក្រោមព្រៃលិចទឹក)។ អ្នកប្រើមិនឃើញដែនកំណត់ទាំងនេះ លុះត្រាតែយើងសរសេរវាក្នុងកម្មវិធី។
លំហាត់ដំណើរការក្នុង Earth Engine Code Editor ជាមួយទិន្នន័យកាតាឡុក ហើយមានរូបលទ្ធផលគំរូ តារាងកំហុសទូទៅ និងប្រអប់ពិនិត្យលទ្ធផលដោយខ្លួនឯង។
កម្មវិធី Earth Engine មាន ui.Panel សម្រាប់ widgets និង ui.Map សម្រាប់ផែនទី ក្នុង ui.root។ Widgets (Label Select Slider Button Chart) មាន style និង callback ដែលរត់ពេលអ្នកប្រើធ្វើសកម្មភាព។ ប្រើ layers().set() ដើម្បីជំនួសស្រទាប់ evaluate() ដើម្បីកុំឱ្យកម្មវិធីកក និង scale ធំ ឬ Asset ដែលគណនារួច ដើម្បីល្បឿន។
SplitPanel និង Linker ប្រៀបធៀបមុន–ក្រោយ។ កម្មវិធីបោះពុម្ពតាម Cloud Project ហើយបើកបានដោយគ្មានគណនី។ ជម្រើសផ្សេង (Export ទៅ QGIS geemap ផែនទីវេប) សមសម្រាប់អ្នកប្រើ និងគោលបំណងផ្សេងៗ។
ការវិភាគដែលមានតែអ្នកវិភាគអាចប្រើ មានផលប៉ះពាល់តិច។ កម្មវិធីសាមញ្ញ លឿន និងស្មោះត្រង់អំពីដែនកំណត់ នាំលទ្ធផលទៅដល់អ្នកសម្រេចចិត្ត។
| ពាក្យខ្មែរ | ពាក្យអង់គ្លេស | អត្ថន័យខ្លី |
|---|---|---|
| កម្មវិធី Earth Engine | Earth Engine App | ស្គ្រីបដែលបោះពុម្ពជាវេប |
| ធាតុផ្ទាំង | Widget | ប៊ូតុង បញ្ជី របាររំកិល … |
| ផ្ទាំង | Panel | ប្រអប់ដែលផ្ទុក widgets |
| ព្រឹត្តិការណ៍ | Event | ការចុច ការជ្រើស ការរំកិល |
| មុខងារហៅត្រឡប់ | Callback | មុខងារដែលរត់ពេលមានព្រឹត្តិការណ៍ |
| ការស្នើមិនរង់ចាំ | Asynchronous (evaluate) | ស្នើលទ្ធផលដោយមិនកក |
| ផែនទីបំបែក | Split panel | ផែនទីពីររំកិលជាមួយគ្នា |
| ការបោះពុម្ព | Publish | ធ្វើឱ្យកម្មវិធីមាន URL សាធារណៈ |
getDownloadURL និង evaluate។បន្ថែម ui.DateSlider ទៅកម្មវិធីទន្លេសាប ដែលបង្ហាញរូបភាព Sentinel-1 VV នៃថ្ងៃដែលជ្រើស (± ៦ ថ្ងៃ)។ សរសេរកថាខណ្ឌមួយពីបញ្ហាដែលអ្នកជួប និងរបៀបដោះស្រាយ។
អ្នកឥឡូវមានឧបករណ៍ពេញលេញ៖ ពីការត្រងទិន្នន័យ ទៅការវិភាគ ការផ្ទៀងផ្ទាត់ និងការចែករំលែក។ ជំហានចុងក្រោយគឺប្រើវាដោយខ្លួនឯង លើបញ្ហាពិតមួយ ពីសំណួររហូតដល់លទ្ធផល ដោយការទទួលខុសត្រូវ។
តើគម្រោងអនុវត្តល្អមួយមានលក្ខណៈអ្វីខ្លះ ហើយយើងត្រូវគិតពីអ្វីខ្លះ មុនចែករំលែកផែនទីដែលអាចប៉ះពាល់ដល់មនុស្ស?
អានមេរៀនពេញ និងធ្វើលំហាត់ទី១៤
https://khgeo.github.io/applied-gis-rs/lessons/lesson-14/