17.10. Raster ဂဏန်းတွက်ချက်- No-data တန်ဖိုးများ (The raster calculator. No-data values)

Note

Raster layer များတွင် operation အချို့လုပ်ဆောင်ရန် raster calculator အသုံးပြုနည်းကို ဤသင်ခန်းစာတွင်လေ့လာရမည်ဖြစ်ပါသည်။ No-data တန်ဖိုးများအကြောင်းနှင့် ထိုတန်ဖိုးများကို calculator နှင့် အခြားသော algorithm များဖြင့် မည်သို့လုပ်ကိုင်ဆောင်ရွက်ရမည်ကိုလည်း ရှင်းပြပေးမည်ဖြစ်ပါသည်။

Raster calculator သည် အသုံးအဝင်ဆုံး algorithm များထဲမှ တစ်ခုဖြစ်ပါသည်။ ၎င်းသည် အမျိုးမျိုးသော တွက်ချက်မှုများစွာအတွက် အသုံးပြုနိုင်သော လွန်စွာလိုက်လျောညီထွေဖြစ်သည့် algorithm တစ်ခုဖြစ်ပြီး မကြာမီတွင် သင့် toolbox ၏အရေးကြီးသောအစိတ်အပိုင်းတစ်ခုဖြစ်ပါလိမ့်မည်။

ဤသင်ခန်းစာတွင် raster calculator ဖြင့် တွက်ချက်မှုအချို့ကို လုပ်ဆောင်မည်ဖြစ်ပြီး အများစုသည် ရိုးရှင်းပါသည်။ ထိုသို့လုပ်ဆောင်ခြင်းဖြင့် ၎င်း၏အသုံးပြုပုံကို မြင်တွေ့ရမည်ဖြစ်ပြီး အချို့သော သီးခြားအခြေအနေများတွင် ၎င်းကို မည်ကဲ့သို့အသုံးပြုရမည်ကို မြင်တွေ့ရမည်ဖြစ်ပါသည်။ အသုံးပြုပုံကို နားလည်ခြင်းသည် မျှော်လင့်ထားသောရလာဒ်များကို ရရှိစေပြီး calculator ဖြင့်အသုံးများသော နည်းစနစ်အချို့ကို သဘောပေါက်စေမည်ဖြစ်သည်။

ဤသင်ခန်းစာနှင့်သက်ဆိုင်သော QGIS project ကိုဖွင့်ပါ၊ raster layer များစွာ ပါဝင်သည်ကို မြင်တွေ့ရပါမည်။

Toolbox ကိုဖွင့်ပြီး raster calculator dialog ကိုဖွင့်ပါ။

../../../_images/calculator_dialog.png

Note

နောက်ဆုံးထွက်သော ဗားရှင်းများတွင် interface သည် ကွာခြားပါသည်။

Dialog တွင် parameter ၂ ခုပါဝင်ပါသည်။

  • ပထမတစ်ခုသည် Analysis အတွက်အသုံးပြုမည့် layer များဖြစ်သည်။ ၎င်းတွင် input များစွာ ထည့်သွင်းရမည်ဖြစ်ပြီး၊ သင်လိုချင်သလောက် layer များကို ရွေးချယ်ပေးနိုင်ပါသည်။ ညာဘက်ရှိ ခလုတ်ကို click နှိပ်ပြီး ပေါ်လာသော dialog ထဲတွင် သင်အသုံးပြုလိုသော layer များကို ရွေးချယ်ပါ။

  • ဒုတိယတစ်ခုသည် အသုံးပြုမည့် formula ဖြစ်သည်။ Formula သည် ပထမ parameter တွင်ရွေးချယ်ထားသော layer များကိုအသုံးပြုပါသည်၊ ထို layer များကို variable နာမည်များအဖြစ် (a, b, c...) သို့မဟုတ် g1, g2, g3... ဟုအသုံးပြုပြီး နာမည်ပေးထားပါသည်။ ဆိုလိုသည်မှာ a + 2 * b formula သည် g1 + 2 * g2 နှင့်အတူတူပင်ဖြစ်ပါသည်၊ ဒုတိယ layer ထဲရှိတန်ဖိုး၏နှစ်ဆ နှင့် ပထမ layer ထဲရှိတန်ဖိုး၏ ပေါင်းလဒ်ကို တွက်ချက်ပေးမည်ဖြစ်ပါသည်။ Layer များ၏ order သည် selection dialog ထဲတွင်မြင်တွေ့ရသည့် order အတိုင်းဖြစ်ပါသည်။

Warning

Calculator သည် case-sensitive (စာလုံးအကြီးအသေးဂရုပြု) ဖြစ်ပါသည်။

စတင်ရန် DEM ၏ယူနစ်များကို မီတာမှ ပေ သို့ ပြောင်းလဲပါမည်။ အသုံးပြုရမည့် formula သည် အောက်ပါအတိုင်းဖြစ်ပါသည်-

h' = h * 3.28084

Layers field ထဲတွင် DEM ကိုရွေးချယ်ပြီး formula field ထဲတွင် a * 3.28084 ကိုရိုက်ထည့်ပါ။

Warning

English အသုံးပြုသူမဟုတ်သူများအတွက် - “.” ကိုသာ အမြဲတမ်းအသုံးပြုပါ၊ “,” ကိုအသုံးမပြုပါနှင့်။

Algorithm ကိုလုပ်ဆောင်ရန် Run ကိုနှိပ်ပါ။ Input layer နှင့်ပုံပန်းသဏ္ဍာန်တူညီပြီး တန်ဖိုးများမတူညီသော layer တစ်ခုကို ရရှိပါလိမ့်မည်။ အသုံးပြုခဲ့သော input layer ၏ cell များအားလုံးတွင် ဆီလျော်သောတန်ဖိုးများရှိပါသည်၊ ထို့ကြောင့် နောက်ဆုံး parameter တွင်သက်ရောက်မှုရှိမည်မဟုတ်ပါ။

အခြားတွက်ချက်မှုလုပ်ဆောင်ကြည့်ပါမည်၊ ဤတစ်ကြိမ်တွင် accflow layer တွင်လုပ်ဆောင်ပါမည်။ ဤ layer တွင် hydrological (မိုးဇလနှင့်ဆိုင်သော) parameter တစ်ခုဖြစ်သော accumulated flow (စုပုံစီးဆင်းမှု) တန်ဖိုးများပါဝင်ပါသည်။ အဆိုပါတန်ဖိုးများသည် ပေးထားသော watershed (ရေဝေရေလဲ) ဧရိယာအတွင်း၌သာရှိသော တန်ဖိုးများဖြစ်ပြီး ဧရိယာပြင်ပတွင် no–data တန်ဖိုးများဖြစ်ပါသည်။ သင်မြင်တွေ့ရသည့်အတိုင်း ပုံသည် တန်ဖိုးများဖြန့်ကျက်သည့် နည်းလမ်းကြောင့် အချက်အလက်များကို ကောင်းမွန်စွာမြင်နိုင်စွမ်းမရှိပါ။ ထို flow accumulation ၏ လော်ဂရပ်သမ် (log) ကို အသုံးပြုခြင်းဖြင့် အချက်အလက်များပိုမိုပေးစွမ်းနိုင်မည်ဖြစ်သည်။ ထိုအရာကို raster calculator အသုံးပြုပြီး တွက်ချက်နိုင်ပါသည်။

Algorithm dialog ကိုနောက်တစ်ကြိမ်ထပ်ဖွင့်ပါ၊ accflow layer ကို တစ်ခုတည်းသော input layer အဖြစ်ရွေးချယ်ပြီး log(a) formula ကိုရိုက်ထည့်ပါ။

အောက်ပါ layer ကိုရရှိပါလိမ့်မည်။

../../../_images/log.png

Point တစ်ခုတွင်ရှိသော layer ၏တန်ဖိုးကို သိရှိနိုင်ရန် Identify tool ကိုအသုံးပြုပြီး basin ဧရိယာ၏ အပြင်ဘက်ရှိ point တစ်ခုတွင် click နှိပ်ပါက no–data တန်ဖိုးဖြစ်နေသည်ကို တွေ့ရပါလိမ့်မည်။

../../../_images/identify.png

နောက်လာမည့်လေ့ကျင့်ခန်းတွင် layer တစ်ခုထဲအစား layer နှစ်ခုကို အသုံးပြုပါမည်၊ ဒုတိယ layer ထဲတွင်သတ်မှတ်ထားသော basin အတွင်း၌သာရှိသည့် DEM တစ်ခုကို ရယူမည်ဖြစ်ပါသည်။ Calculator dialog ကိုဖွင့်ပြီး input layers field ထဲတွင် project ၏ layer နှစ်ခုစလုံးကို ရွေးချယ်ပါ။ သက်ဆိုင်ရာ field ထဲတွင် အောက်ပါ formula ကိုရိုက်ထည့်ပါ-

a/a * b

a သည် accumulated flow layer (၎င်းသည် စာရင်းထဲတွင် ပထမဆုံး layer ဖြစ်သောကြောင့်) ကိုကိုယ်စားပြုပြီး b သည် DEM ကိုကိုယ်စားပြုပါသည်။ Formula ၏ပထမအပိုင်းတွင် accumulated flow layer ကို သူကိုယ်တိုင်ဖြင့် စား (divide) မည်ဖြစ်ပါသည်၊ ရလာဒ်အနေဖြင့် basin အတွင်းတွင် တန်ဖိုး 1 ရရှိမည်ဖြစ်ပြီး basin အပြင်ဘက်တွင် no–data တန်ဖိုးရရှိမည်ဖြစ်သည်။ ထို့နောက် ရလာဒ်ကို DEM ဖြင့် မြှောက် (multiply) မည်ဖြစ်ပါသည်၊ ရလာဒ်အနေဖြင့် basin အတွင်း cell များထဲရှိ elevation တန်ဖိုးကို ရရှိမည်ဖြစ်ပြီး (DEM * 1 = DEM) basin အပြင်ဘက်တွင် no–data တန်ဖိုးရရှိမည်ဖြစ်သည် (DEM * no_data = no_data)။

ရလာဒ် layer သည် အောက်ပါအတိုင်းဖြစ်ပါသည်။

../../../_images/masked.png

ဤနည်းလမ်းကို raster layer တစ်ခုထဲတွင် တန်ဖိုးများကို mask လုပ်ရာတွင် အသုံးများလေ့ရှိပြီး၊ raster layer မှအသုံးပြုသော ထောင့်မှန်စတုဂံ region မဟုတ်သည့် region တစ်ခုအတွက် တွက်ချက်မှုများကိုလုပ်ဆောင်သည့်အချိန်တိုင်း အသုံးဝင်ပါသည်။ ဥပမာအားဖြင့် raster layer တစ်ခု၏ elevation histogram (ကြိမ်နှုန်းပြဂရပ်) တစ်ခုသည် အဓိပ္ပါယ်များစွာရှိမည်မဟုတ်ပါ၊ ထိုအစား basin တစ်ခုနှင့်သက်ဆိုင်သော တန်ဖိုးများကိုသာအသုံးပြုပြီး (အထက်တွင်ဖော်ပြခဲ့သောဥပမာကဲ့သို့) histogram တွက်ချက်ပါက ရလာဒ်သည် အဓိပ္ပါယ်ရှိမည်ဖြစ်ပြီး basin အကြောင်းအချက်အလက်များကို အမှန်တကယ်သိရှိနိုင်မည်ဖြစ်သည်။

ဤ algorithm နှင့်ပတ်သက်သော အခြားစိတ်ဝင်စားစရာများရှိပါသေးသည်။ မြှောက် (multiply) ထားသော layer များ၏ extent ကိုကြည့်ပါက (Table of contents ထဲရှိ layer ပေါ်တွင် click နှစ်ချက်နှိပ်ပြီး ၎င်းတို့၏ property များကိုဖွင့်ကြည့်နိုင်ပါသည်) ၎င်းတို့၏ extent သည် မတူညီသည်ကို တွေ့ရပါမည်၊ အဘယ်ကြောင့်ဆိုသော် flow accumulation layer ၏ extent သည် DEM တစ်ခုလုံး၏ extent ထက် ပိုသေးသောကြောင့်ဖြစ်ပါသည်။

ဆိုလိုသည်မှာ Layer များသည် ကိုက်ညီမှုမရှိပဲ၊ layer များ၏ အရွယ်အစားများနှင့် extent များကိုတစ်သားတည်းဖြစ်အောင် resampling မလုပ်ဆောင်ပဲ တိုက်ရိုက် မြှောက် (multiply) ခြင်း မပြုလုပ်နိုင်ပါ။ QGIS သည် ထိုသို့သောအခြေအနေမျိုးတွင် လိုအပ်ပါက input layer များကို အလိုအလျောက် resampling လုပ်ဆောင်ပေးပါသည်။ Output ၏ extent သည် input layer များမှ တွက်ချက်ထားသော အနည်းဆုံးလွှမ်းခြုံသော extent ဖြစ်ပြီး၊ cell အရွယ်အစားသည် input layer များ၏ အနည်းဆုံး cell အရွယ်အစားဖြစ်ပါသည်။

ဤဥပမာတွင် (နှင့် အများစုတွင်) algorithm သည် လိုချင်သောရလာဒ်များကို ထုတ်ပေးပါသည်၊ သို့သော် ရလာဒ်ကိုသက်ရောက်မှုရှိနိုင်သော ထပ်ဆောင်း operation များကိုလည်း အမြဲတမ်းဂရုပြုနေသင့်ပါသည်။ လိုချင်သော ရလာဒ်မရရှိသည့် ကိစ္စများတွင် ကိုယ်တိုင် resampling ပြုလုပ်ပေးသင့်ပါသည်။ နောက်ပိုင်းအခန်းများတွင် raster layer များစွာအသုံးပြုသောအခါ algorithm များ၏ပြုမူလုပ်ဆောင်ပုံအကြောင်းကို ပိုမိုတွေ့မြင်ရပါမည်။

အခြားသော masking လေ့ကျင့်ခန်းလုပ်ဆောင်ကြည့်ပါမည်။ Elevation တန်ဖိုး 1000 နှင့် 1500 မီတာအကြားရှိသော ဧရိယာများအားလုံးရှိ slope (လျှောစောက်) တန်ဖိုးကို တွက်ချက်ပါမည်။

ဤဥပမာတွင် mask အနေဖြင့်အသုံးပြုမည့် layer မရှိပါ၊ သို့သော် ထို layer ကို calculator အသုံးပြုပြီး ဖန်တီးပေးနိုင်ပါသည်။

DEM ကို တစ်ခုထဲသော input layer အဖြစ်အသုံးပြုပြီး အောက်ပါ formula ကိုထည့်သွင်းကာ calculator ကို run ပါ

ifelse(abs(a-1250) < 250, 1, 0/0)

မြင်တွေ့ရသည့်အတိုင်း calculator ကို ရိုးရိုး အက္ခရာသင်္ချာ operation များလုပ်ဆောင်ရန်အတွက်သာမက conditional sentence (အခြေအနေအရလုပ်ဆောင်သော) များပါဝင်သော ပိုမိုရှုပ်ထွေးသည့်တွက်ချက်မှုများလုပ်ဆောင်ရန်အတွက်လည်း အသုံးပြုနိုင်ပါသည်။

ကျွန်ုပ်တို့လုပ်ဆောင်လိုသော အတိုင်းအတာအတွင်းတွင် တန်ဖိုး 1 ရှိပြီး အတိုင်းအတာအပြင်ဘက်ရှိ cell များတွင် no–data ဖြစ်နေပါသည်။

../../../_images/elevation_mask.png

No-data တန်ဖိုးသည် 0/0 expression မှရရှိလာပါသည်။ ၎င်းသည် undetermined (မဆုံးဖြတ်နိုင်သော) တန်ဖိုးတစ်ခုဖြစ်သည့်အတွက် SAGA သည် NaN (Not a Number) တန်ဖိုးတစ်ခုကို ထည့်သွင်းပေးပါသည်၊ ၎င်းတန်ဖိုးကို no-data တန်ဖိုးအဖြစ် ကိုင်တွယ်ပေးပါသည်။ ဤနည်းလမ်းဖြင့် ဘယ်အရာသည် cell ၏ no–data တန်ဖိုးဖြစ်သည်ကိုသိရန်မလိုအပ်ပဲ no-data တန်ဖိုးတစ်ခုကို သတ်မှတ်ပေးနိုင်ပါသည်။

ယခုအခါ ရရှိလာသော layer ကို project ထဲရှိ slope layer ဖြင့် မြှောက် (multiply) မည်ဖြစ်ပြီး လိုချင်သောရလာဒ်ကို ရရှိပါလိမ့်မည်။

ထိုအဆင့်များအားလုံးကို calculator ထဲတွင် တစ်ကြိမ်ထဲဖြင့် လုပ်ဆောင်နိုင်ပါသည်။ ထိုလုပ်ဆောင်မှုကို လေ့ကျင့်ခန်းပြုလုပ်ရန်အတွက် ချန်ထားခဲ့ပါမည်။