មេរៀនទី៥៖ មូលទិន្នន័យ ការភ្ជាប់តារាង និង Field Calculator¶
ព័ត៌មានមេរៀន
រយៈពេលបង្រៀនដែលស្នើ៖ ៣ ម៉ោង · មេរៀនទី ៥ ក្នុងចំណោម ១៥
មេរៀនទី៤ បានបង្ហាញតារាងគុណលក្ខណៈមួយ។ ប៉ុន្តែព័ត៌មានដែលយើងត្រូវការ ច្រើនតែនៅរាយប៉ាយក្នុងឯកសារច្រើន៖ ព្រំឃុំពីស្ថាប័នមួយ ជំរឿនពីវិទ្យាស្ថានជាតិស្ថិតិ និងទិន្នន័យកសិកម្មពីក្រសួងមួយទៀត។
មេរៀននេះបង្រៀនពីរបៀបរៀបចំ មូលទិន្នន័យ ភ្ជាប់តារាងតាមវាលរួម និងបង្កើតព័ត៌មានថ្មីដោយ Field Calculator។
៥.១. គោលបំណងសិក្សា¶
បន្ទាប់ពីបញ្ចប់មេរៀន និស្សិតអាច៖
- ពន្យល់គោលគំនិតមូលទិន្នន័យទំនាក់ទំនង៖ តារាង លេខសម្គាល់ចម្បង និងលេខសម្គាល់បរទេស។
- ពន្យល់ទំនាក់ទំនងមួយទល់មួយ មួយទល់ច្រើន និងផលប៉ះពាល់ពេលភ្ជាប់តារាង។
- រៀបចំវាលភ្ជាប់ឱ្យមានទម្រង់ដូចគ្នា និងពិនិត្យកំណត់ត្រាដែលគ្មានដៃគូ។
- ប្រើ Field Calculator ដើម្បីគណនាផ្ទៃ ដង់ស៊ីតេ ភាគរយ និងចាត់ថ្នាក់។
- ពន្យល់ហេតុអ្វីផែនទី choropleth ត្រូវប្រើអត្រា ឬដង់ស៊ីតេ មិនមែនចំនួនដុល។
ចំណេះដឹងមុនត្រូវមាន¶
- ខ្លឹមសារមេរៀនទី៤៖ វាល ប្រភេទវាល NULL កន្សោម។
៥.២. ស្ថានភាពបើកមេរៀន៖ ជំរឿនមាន ព្រំឃុំក៏មាន ប៉ុន្តែភ្ជាប់មិនបាន¶
និស្សិតម្នាក់ចង់ធ្វើផែនទីដង់ស៊ីតេប្រជាជនខេត្តកំពង់ឆ្នាំង។ គាត់មានស្រទាប់ Kh_Commune_area (ព្រំឃុំ ២០១៩) និងតារាង Census_Commune (ជំរឿន ២០០៨)។ គាត់ភ្ជាប់តារាងទាំងពីរតាមលេខកូដឃុំ។ លទ្ធផល៖ គ្មានកំណត់ត្រាណាមួយត្រូវគ្នាទេ។
ពេលមើលឱ្យជិត ព្រំឃុំប្រើលេខកូដ KH040301 ឯជំរឿនប្រើ 040301។ តួអក្សរពីរ KH ធ្វើឱ្យការភ្ជាប់បរាជ័យទាំងស្រុង។
សំណួរដែលមេរៀននេះឆ្លើយ៖
- តើការភ្ជាប់តារាងធ្វើការយ៉ាងដូចម្ដេច?
- តើត្រូវរៀបចំវាលភ្ជាប់ដូចម្ដេច និងពិនិត្យលទ្ធផលយ៉ាងណា?
- ក្រោយភ្ជាប់រួច តើត្រូវគណនាអ្វី ដើម្បីធ្វើផែនទីដែលមិនបំភាន់?
៥.៣. ទ្រឹស្ដីស្នូល¶
៥.៣.១. មូលទិន្នន័យទំនាក់ទំនង¶
មូលទិន្នន័យ (Database) គឺជាសំណុំតារាងដែលរៀបចំឱ្យអាចភ្ជាប់គ្នាបាន។ ជំនួសឱ្យការដាក់ព័ត៌មានទាំងអស់ក្នុងតារាងធំមួយ យើងបំបែកតាមប្រធានបទ ហើយភ្ជាប់តាម វាលរួម។
- លេខសម្គាល់ចម្បង (Primary key)៖ វាលដែលមានតម្លៃតែមួយគត់ក្នុងតារាងមួយ ដូចជា
CommGisក្នុងស្រទាប់ឃុំ។ - លេខសម្គាល់បរទេស (Foreign key)៖ វាលក្នុងតារាងមួយទៀត ដែលយោងទៅលេខសម្គាល់ចម្បង ដូចជា
COMM_CODEក្នុងជំរឿន។
អត្ថប្រយោជន៍៖ ព្រំឃុំអាចប្រើជាមួយជំរឿនឆ្នាំ ២០០៨ ឆ្នាំ ២០១៩ ឬទិន្នន័យកសិកម្ម ដោយមិនចាំបាច់ចម្លងធរណីមាត្រច្រើនដង។ ពេលកែឈ្មោះឃុំ យើងកែតែកន្លែងមួយ។
GeoPackage ជាមូលទិន្នន័យ
ឯកសារ .gpkg មួយអាចមានស្រទាប់ និងតារាងច្រើន។ វាជាមូលទិន្នន័យ SQLite តូចមួយ ដែលស័ក្ដិសមសម្រាប់គម្រោងនិស្សិតជាង Shapefile ច្រើន។
៥.៣.២. ការភ្ជាប់តារាងតាមគុណលក្ខណៈ¶
ការភ្ជាប់តារាង (Table join) បន្ថែមវាលពីតារាងមួយ ទៅតារាងមួយទៀត ដោយផ្គូផ្គងតម្លៃក្នុងវាលរួម។
| ពាក្យ | អត្ថន័យក្នុង QGIS |
|---|---|
| Target layer | ស្រទាប់ដែលទទួលវាលថ្មី (ជាធម្មតាស្រទាប់មានធរណីមាត្រ) |
| Join layer | តារាងដែលផ្ដល់វាល |
| Target field / Join field | វាលដែលត្រូវផ្គូផ្គង |
ការភ្ជាប់ត្រូវគ្នាលុះត្រាតែតម្លៃ ដូចគ្នាទាំងស្រុង៖ KH040301 ≠ 040301 · 040301 ≠ 40301 · B'er ≠ Ph'er · Khsam ≠ Khsam (ដកឃ្លាខាងក្រោយ)។
ពិសោធន៍៖ ភ្ជាប់តារាង
ប្ដូរវាលភ្ជាប់ ហើយរាប់ចំនួនកំណត់ត្រាដែលត្រូវគ្នា។ ហេតុអ្វីការភ្ជាប់តាមឈ្មោះមិនល្អ? ហេតុអ្វីនៅតែមានកំណត់ត្រាពីរដែលគ្មានដៃគូ ទោះប្រើកន្សោមត្រឹមត្រូវ?
ក្រោយភ្ជាប់ ត្រូវពិនិត្យជានិច្ច៖ តើមានកំណត់ត្រាប៉ុន្មានដែលគ្មានដៃគូ ហើយហេតុអ្វី? មូលហេតុទូទៅ៖ ទម្រង់លេខកូដ · ឆ្នាំនៃព្រំដែនខុសពីឆ្នាំនៃតារាង (ឃុំបង្កើតថ្មី ឬប្ដូរខេត្ត) · កំហុសវាយ។
៥.៣.៣. ទំនាក់ទំនងមួយទល់មួយ និងមួយទល់ច្រើន¶
| ទំនាក់ទំនង | ឧទាហរណ៍ | លទ្ធផលពេលភ្ជាប់ |
|---|---|---|
| មួយទល់មួយ | ឃុំមួយ ↔ ជួរជំរឿនមួយ | ងាយស្រួល វាលថ្មីមួយតម្លៃក្នុងមួយឃុំ |
| ច្រើនទល់មួយ | ភូមិច្រើន → ឃុំមួយ | ភូមិនីមួយៗទទួលឈ្មោះឃុំដូចគ្នា ត្រឹមត្រូវ |
| មួយទល់ច្រើន | ឃុំមួយ ↔ សាលាច្រើន | QGIS ភ្ជាប់ តែកំណត់ត្រាដំបូង ព័ត៌មានផ្សេងបាត់ដោយស្ងាត់ |
សម្រាប់ទំនាក់ទំនងមួយទល់ច្រើន ត្រូវ សង្ខេបមុន (ឧទាហរណ៍ រាប់សាលាតាមឃុំដោយ Statistics by categories) ទើបភ្ជាប់តារាងសង្ខេបនោះ។
Join ក្នុង QGIS ជាការភ្ជាប់បណ្ដោះអាសន្ន
Join ក្នុង Layer Properties មិនប្ដូរឯកសារដើមទេ។ បើលុបតារាង ឬផ្លាស់ទីឯកសារ វាលដែលភ្ជាប់នឹងបាត់។ ដើម្បីរក្សាទុក ត្រូវ Export ជាស្រទាប់ថ្មី។
៥.៣.៤. Field Calculator¶
Field Calculator បង្កើត ឬធ្វើបច្ចុប្បន្នភាពវាល ដោយប្រើកន្សោម។ វាលថ្មីអាចគណនាពីវាលផ្សេង ពីធរណីមាត្រ ឬពីអនុគមន៍។
| គោលបំណង | កន្សោម |
|---|---|
| ផ្ទៃ (គម²) | $area / 1000000 |
| ប្រវែង (គម) | $length / 1000 |
| ដង់ស៊ីតេ | "TOTPOP" / ($area / 1000000) |
| ភាគរយ | 100 * "FEMALES" / "TOTPOP" |
| ភ្ជាប់អក្សរ | 'KH' || "COMM_CODE" |
| ចាត់ថ្នាក់ | CASE WHEN "dens" < 100 THEN 'ទាប' ELSE 'ខ្ពស់' END |
| បំពេញលេខ ០ | lpad("code", 6, '0') |
$area គណនាពីធរណីមាត្របច្ចុប្បន្ន ដូច្នេះត្រឹមត្រូវជាងវាលផ្ទៃចាស់ៗក្នុងតារាង ដែលអាចមកពីព្រំដែនកំណែផ្សេង។ ពេលចែក ត្រូវប្រុងប្រយ័ត្នការចែកនឹងសូន្យ ឬ NULL។
៥.៣.៥. ចំនួនដុល ទល់នឹង អត្រា¶
ផែនទីពណ៌តាមតំបន់ (choropleth) ធ្វើឱ្យភ្នែកមើលផ្ទៃ។ បើយើងដាក់ពណ៌តាម ចំនួនប្រជាជនដុល ឃុំធំៗជនបទនឹងមើលទៅ «សំខាន់» ដោយសារតែមានផ្ទៃធំ មិនមែនដោយសារមានមនុស្សក្រាស់ទេ។
ក្បួន៖ ផែនទី choropleth ត្រូវប្រើតម្លៃដែល ធ្វើឱ្យស្តង់ដារ រួច៖
- ចែកនឹងផ្ទៃ → ដង់ស៊ីតេ (នាក់/គម²)
- ចែកនឹងចំនួនសរុប → ភាគរយ (% គ្រួសារមានទឹកស្អាត)
- ចែកនឹងចំនួនប្រជាជន → អត្រា (គ្រូពេទ្យក្នុងប្រជាជន ១០ ០០០)
ចំនួនដុលគួរបង្ហាញជានិមិត្តសញ្ញាសមាមាត្រ (រង្វង់ធំតូច) ជំនួសវិញ។ ការជ្រើសវិធីចាត់ថ្នាក់ និងពណ៌យោងទៅសៀវភៅទី១។
៥.៤. ឧទាហរណ៍ដែលបានដោះស្រាយ៖ ដង់ស៊ីតេប្រជាជនឃុំខេត្តកំពង់ឆ្នាំង¶
យើងភ្ជាប់ Census_Commune ទៅ Kh_Commune_area សម្រាប់ខេត្តកំពង់ឆ្នាំង (ProvGis = KH04) ហើយគណនាដង់ស៊ីតេ។
ជំហានទី១៖ ពិនិត្យវាលភ្ជាប់¶
ស្រទាប់ឃុំមាន ៦៩ ឃុំ វាល CommGis = KH040301។ ជំរឿនមានវាល COMM_CODE = 040301 ជាអក្សរ។ ភ្ជាប់ដោយផ្ទាល់ត្រូវគ្នា ០។
ជំហានទី២៖ កែទម្រង់¶
បង្កើតវាល join_code = 'KH' || "COMM_CODE"។ ភ្ជាប់ម្ដងទៀត ត្រូវគ្នា ៦៩ / ៦៩។ គ្មានឃុំបាត់ក្នុងខេត្តនេះ (ខុសពីខេត្តកំពង់ចាម និងត្បូងឃ្មុំ ដែលមានការប្ដូរលេខកូដក្រោយឆ្នាំ ២០០៨)។
ជំហានទី៣៖ គណនាដង់ស៊ីតេ¶
dens = "TOTPOP" / ($area / 1000000)៖
| ឃុំ | ប្រជាជន ២០០៨ | ដង់ស៊ីតេ (នាក់/គម²) |
|---|---|---|
| B'er | ៦ ៥៤៣ | ២ ៨២១ |
| Phsar Chhnang | ២០ ២២៦ | ១ ៩០៦ |
| Ponley | ៧ ២៧៥ | ១ ១៦៥ |
ជំហានទី៤៖ ប្រៀបធៀបផែនទីពីរ¶
ផែនទីចំនួនដុល បន្លិច Phsar Chhnang (២០ ២២៦ នាក់) និងឃុំជនបទធំៗ។ ផែនទីដង់ស៊ីតេ បន្លិច B'er ដែលមានប្រជាជនតិចជាង Phsar Chhnang ស្ទើរបីដង ប៉ុន្តែផ្ទៃតូចណាស់។ សំណួរ «តើមនុស្សរស់នៅក្រាស់នៅឯណា?» ត្រូវឆ្លើយដោយផែនទីទីពីរ។
សេចក្ដីសន្និដ្ឋានដែលសមស្រប¶
«ក្រោយកែទម្រង់លេខកូដ ជំរឿនឆ្នាំ ២០០៨ ភ្ជាប់បានទាំង ៦៩ ឃុំ។ ដង់ស៊ីតេខ្ពស់បំផុតនៅឃុំតូចៗក្នុងក្រុងកំពង់ឆ្នាំង ដែល B'er មាន ២ ៨២១ នាក់/គម²។»
អ្វីដែលយើងមិនអាចសន្និដ្ឋាន
យើងមិនអាចរាយការណ៍ថាដង់ស៊ីតេនេះជាស្ថានភាពបច្ចុប្បន្នទេ ព្រោះប្រជាជនមកពីឆ្នាំ ២០០៨ ឯព្រំដែនមកពីឆ្នាំ ២០១៩។ ដង់ស៊ីតេក៏ជាតម្លៃមធ្យមលើផ្ទៃទាំងមូល ដែលរួមបញ្ចូលស្រែ និងទឹក ដូច្នេះមិនប្រាប់ពីភាពក្រាស់ក្នុងភូមិពិតប្រាកដទេ។
៥.៥. សកម្មភាពអនុវត្ត¶
លំហាត់នេះស្ថិតក្នុងសៀវភៅអនុវត្ត
ការអនុវត្តលើ QGIS សម្រាប់មេរៀននេះស្ថិតក្នុង លំហាត់ទី៥។
និស្សិតធ្វើលំហាត់នេះ ដោយខ្លួនឯង នៅក្រៅម៉ោងរៀន។
៥.៦. ការយល់ច្រឡំដែលត្រូវប្រុងប្រយ័ត្ន¶
១. «ឈ្មោះដូចគ្នា គឺភ្ជាប់បាន» ឈ្មោះអាចសរសេរខុសគ្នា ឬស្ទួន។ ឃុំ B'er ក្នុងស្រទាប់មួយ ជា Ph'er ក្នុងជំរឿន។ ប្រើលេខកូដ។
២. «ភ្ជាប់រួច គឺចប់» ត្រូវរាប់កំណត់ត្រាដែលគ្មានដៃគូជានិច្ច ហើយពន្យល់មូលហេតុ។ ការភ្ជាប់បរាជ័យមួយផ្នែក មិនបង្ហាញសារកំហុសទេ។
៣. «QGIS ភ្ជាប់តារាងមួយទល់ច្រើនបាន» Join ក្នុង QGIS យកតែកំណត់ត្រាដំបូងដែលត្រូវគ្នា។ ត្រូវសង្ខេបតារាងជាមុន។
៤. «វាលផ្ទៃក្នុងតារាងចាស់ អាចប្រើបាន»
វាលផ្ទៃអាចមកពីព្រំដែនកំណែផ្សេង ឬគណនាក្នុង CRS ផ្សេង។ គណនាឡើងវិញពីធរណីមាត្រដោយ $area។
៥. «ផែនទីចំនួនប្រជាជនដុល ប្រាប់ពីភាពក្រាស់» ផែនទីចំនួនដុលបំភាន់ ព្រោះតំបន់ធំមើលទៅសំខាន់។ ប្រើដង់ស៊ីតេ ឬភាគរយសម្រាប់ choropleth។
៥.៧. សេចក្ដីសង្ខេបមេរៀន¶
មូលទិន្នន័យបំបែកព័ត៌មានទៅតាមតារាង ហើយភ្ជាប់តាមវាលរួម។ ការភ្ជាប់ត្រូវការតម្លៃដូចគ្នាទាំងស្រុង ដូច្នេះត្រូវរៀបចំទម្រង់លេខកូដ និងពិនិត្យកំណត់ត្រាដែលគ្មានដៃគូ។
Field Calculator បង្កើតព័ត៌មានថ្មីពីវាល និងធរណីមាត្រ។ ផែនទី choropleth ត្រូវប្រើអត្រា ឬដង់ស៊ីតេ មិនមែនចំនួនដុល។
គំនិតស្នូលនៃមេរៀន
ការភ្ជាប់តារាងគឺជាស្ពានរវាងផែនទី និងស្ថិតិ។ ស្ពាននោះរឹងមាំលុះត្រាតែលេខកូដស៊ីគ្នា ឆ្នាំស៊ីគ្នា ហើយអ្នកពិនិត្យអ្វីដែលមិនបានឆ្លង។
៥.៨. ពាក្យគន្លឹះខ្មែរ–អង់គ្លេស¶
| ពាក្យខ្មែរ | ពាក្យអង់គ្លេស | អត្ថន័យខ្លី |
|---|---|---|
| មូលទិន្នន័យ | Database | សំណុំតារាងដែលភ្ជាប់គ្នា |
| លេខសម្គាល់ចម្បង | Primary key | វាលតែមួយគត់ក្នុងតារាង |
| លេខសម្គាល់បរទេស | Foreign key | វាលដែលយោងទៅតារាងផ្សេង |
| ការភ្ជាប់តារាង | Table join | បន្ថែមវាលតាមវាលរួម |
| មួយទល់ច្រើន | One-to-many | កំណត់ត្រាមួយត្រូវនឹងច្រើន |
| ម៉ាស៊ីនគិតវាល | Field Calculator | ឧបករណ៍គណនាវាល |
| ដង់ស៊ីតេ | Density | បរិមាណក្នុងឯកតាផ្ទៃ |
| ផែនទីពណ៌តាមតំបន់ | Choropleth map | ពណ៌តំបន់តាមតម្លៃ |
៥.៩. សំណួររំលឹក និងវាយតម្លៃ¶
ក. សំណួរយល់ដឹង¶
- ពន្យល់ Primary key និង Foreign key ដោយប្រើឧទាហរណ៍ឃុំ និងជំរឿន។
- ហេតុអ្វី
KH040301មិនភ្ជាប់ជាមួយ040301? សរសេរកន្សោមកែ។ - បើភ្ជាប់តារាងសាលា (សាលាច្រើនក្នុងមួយឃុំ) ទៅស្រទាប់ឃុំ តើនឹងកើតអ្វី?
- ហេតុអ្វីគួរគណនាផ្ទៃដោយ
$areaជំនួសឱ្យវាលផ្ទៃក្នុងតារាងជំរឿន? - ហេតុអ្វីផែនទី choropleth មិនគួរប្រើចំនួនប្រជាជនដុល?
ខ. សំណួរអនុវត្តគោលគំនិត¶
- បន្ទាប់ពីភ្ជាប់ជំរឿនខេត្តកំពង់ចាម មានឃុំ ២០ គ្មានដៃគូ។ ចូររាយមូលហេតុដែលអាចកើត និងវិធីពិនិត្យនីមួយៗ។
- សរសេរកន្សោម Field Calculator គណនាភាគរយស្ត្រី និងចាត់ថ្នាក់ឃុំជា «តុល្យភាព» (៤៨–៥២%) ឬ «មិនតុល្យភាព»។
- អ្នកមានតារាងមណ្ឌលសុខភាពដែលមានលេខកូដឃុំ។ រៀបរាប់ជំហានដើម្បីធ្វើផែនទី «ចំនួនមណ្ឌលសុខភាពក្នុងប្រជាជន ១០ ០០០» តាមឃុំ។
- លេខកូដភូមិក្នុងតារាង Excel បាត់លេខ ០ ខាងមុខ (
1020101)។ សរសេរកន្សោមស្ដារវាឱ្យមាន ៨ ខ្ទង់។ - ផែនទីពីរ (ចំនួនដុល និងដង់ស៊ីតេ) ផ្ដល់ឃុំ «ខ្ពស់បំផុត» ខុសគ្នា។ តើមួយណាត្រឹមត្រូវ? ពន្យល់ដោយផ្អែកលើសំណួរ។
គ. កិច្ចការខ្លី¶
ជ្រើសខេត្តមួយក្រៅពីកំពង់ឆ្នាំង។ ពិពណ៌នាជាមួយទំព័រពីរបៀបភ្ជាប់ Census_Commune ទៅ Kh_Commune_area៖ វាលភ្ជាប់ · កន្សោមកែទម្រង់ · ចំនួនឃុំដែលគ្មានដៃគូ (ប៉ាន់ស្មាន ឬពិនិត្យក្នុងលំហាត់) · អត្រាដែលអ្នកនឹងធ្វើផែនទី និងហេតុផល។
កំណត់សម្គាល់សម្រាប់គ្រូបង្រៀន¶
ក. ការបែងចែកពេលវេលា ១៨០ នាទី¶
| សកម្មភាព | ពេលវេលា |
|---|---|
| ស្ថានភាពបើកមេរៀន៖ KH ពីរតួ | ១៥ នាទី |
| មូលទិន្នន័យ Primary/Foreign key | ២៥ នាទី |
| ការភ្ជាប់តារាង និងពិសោធន៍ | ៣៥ នាទី |
| ទំនាក់ទំនងមួយទល់ច្រើន | ២០ នាទី |
| Field Calculator | ៣០ នាទី |
| ចំនួនដុល ទល់នឹង អត្រា | ២០ នាទី |
| ឧទាហរណ៍ដង់ស៊ីតេកំពង់ឆ្នាំង | ៣០ នាទី |
| សង្ខេប និងណែនាំលំហាត់ | ៥ នាទី |
| សរុប | ១៨០ នាទី / ៣ ម៉ោង |
ខ. ការភ្ជាប់ទៅមេរៀនបន្ទាប់¶
រហូតមកដល់ពេលនេះ យើងប្រើទិន្នន័យដែលមានស្រាប់។ ប៉ុន្តែទិន្នន័យទាំងនោះមកពីណា? អ្នកណាផលិត ផលិតឆ្នាំណា ហើយបើមិនមាន តើយើងប្រមូលដោយខ្លួនឯងយ៉ាងដូចម្ដេច?
សំណួរនេះនាំទៅ មេរៀនទី៦៖ ប្រភព និងការប្រមូលទិន្នន័យ។