PPrrooggrraamm FFoorr CCaallccuullaattee EETT EETToo AANNDD WWaatteerr SSuuppppllyy IInn DDiiffe fferreenntt LLooccaattiioonnss Computer Application For Irrigation Engineering Computer Application For Irrigation Engineering
Term Project Program Calculate ETo ET and Water supply by Penman-Monteith Method โปรแกรมการคำนüณคŠา ETo ET และ Water supply ของพืชแตŠละชนิดในแตŠละพื้นที่ จัดทำโดย นายพิทüัÿ นายคีตฤทธิ์ นายชินพัฒนŤ นายธนüัฒนŤ นายÿินธุมาý นายกฤþฎา นางÿาüณัฐริกา นายทรงพล นายüชิระÿรณŤ นายýุภüิชญŤ นายÿมการ ÿิงĀพล ชŠอผูก ÿมบูรณŤ โพธิ์ยอด แกšüพิทยา พรĀมแทนÿุด ภิระบรรณŤ ปŦตพี เตชÿิทธิ์เดโช โÿภณรัตนกุล ตรงดี 6480100042 6480100107 6480100131 6480100212 6480100387 6480100441 6480100557 6480100581 6480100867 6480100883 6480100891 เÿนอ อาจารยŤภคüัต ลำจüน รายงานฉบับนี้เปŨนÿŠüนĀนึ่งของüิชา 02207351 การประยุกตŤคอมพิüเตอรŤÿำĀรับ üิýüกรรมชลประทาน (Computer Application for Irrigation Engineering) ภาคปลาย ปŘการýึกþา 2566 üิทยาลัยการชลประทาน ÿถาบันÿมทบมĀาüิทยาลัยเกþตรýาÿตรŤ
ก คำนำ รายงานฉบับนี้เป็นÿ่üนĀนึ่งของüิชา 02207351 การประยุกต์คอมพิüเตอร์ÿำĀรับüิýüกรรม ชลประทาน (Computer Application for Irrigation Engineering) มีเนื้อĀาเกี่ยüกับการเขียน ภาþาโปรแกรม Python เขียนเพื่อใช้งานĀาปริมาณการใช้น้ำของพืชอ้างอิงซึ่งเป็นÿิ่งÿำคัญในการüาง แผนการจัดการน้ำแก่พืชและเกþตรกรได้อย่างมีประÿิทธิภาพ และมีคüามจำเป็นในĀลายๆด้าน เช่น การüางแผนการใช้น้ำ เพื่อช่üยใĀ้เกþตรกรÿามารถüางแผนการใช้น้ำใĀ้เĀมาะÿมกับพืชที่ปลูก การ จัดการทรัพยากรน้ำ เพื่อช่üยใĀ้เกþตรกรÿามารถจัดการทรัพยากรน้ำได้เป็นอย่างดีรüมทั้งการüิจัย และพัฒนา เพื่อช่üยใĀ้นักüิจัยและผู้ที่ทำการพัฒนาÿามารถüิเคราะĀ์และพัฒนาเทคโนโลยีที่ช่üยลด การใช้น้ำในการเกþตรกรรม และเพิ่มประÿิทธิภาพการใช้น้ำในการเพาะปลูกในอนาคตได้ ทั้งนี้ ผู้จัดทำĀüังเป็นอย่างยิ่งü่ารายงานเล่มนี้จะเป็นประโยชน์กับผู้อ่าน นักเรียนนักýึกþา Āรือคนที่ÿนใจในการเขียนภาþา Python เกี่ยüกับงานระบบชลประทาน และĀากรายงานเล่มนี้มี ข้อผิดพลาดประการใด คณะผู้จัดทำต้องขออภัยมา ณ ที่นี้ด้üย คณะผู้จัดทำ
ข ÿารบัญ เรื่อง คำนำ ÿารบัญ ÿารบัญรูปภาพ ทฤþฎีที่เกี่ยüข้องกับปัญĀาของการýึกþา การüัดและการคำนüณĀาการใช้น้ำของพืชและปริมาณน้ำที่ต้องÿ่งออก 1. Reference Crop Evapotranspiration (ETo) 2. Crop Evapotranspiration (ET) 3. Water Supply 4. คüามÿัมพันธ์ระĀü่าง Reference Crop Evapotranspiration (ETo) กับ Water Supply 5. คüามถี่ในการใĀ้น้ำ (Irrigation frequency) 6. รอบเüรในการใĀ้น้ำ (Irrigation period) 7. üัตถุประÿงค์ของการüัดĀาค่า ETo 8. คüามจำเป็นในการĀาค่า ETo 9. ปัจจัยที่มีผลต่อการคำนüณปริมาณการใช้น้ำของพืช 10. üิธีการตรüจüัดคำนüณปริมาณการใช้น้ำของพืช 11. เครื่องมือที่ใช้ในการüัดค่า ETo 12. คุณÿมบัติพื้นฐานและที่มาของตัüแปรในÿมการ 13. üัตถุประÿงค์ของโปรแกรมคำนüณĀาค่า ET ETo and Water Supply 14. üัตถุประÿงค์ในการใช้ÿูตรคำนüณĀาค่า ETo โดยüิธี üิธี Penman-Monteith ผังการทำงานของโปรแกรม (Flow Chart) อธิบายการทำงานของโปรแกรม üิธีการใช้งานโปรแกรมคำนüณค่า ET , ETo , Water supply บรรณานุกรม Āนšา ก ข ค 1 1 1 2 2 3 3 3 3 4 4 5 6 9 12 12 13 15 35 42
ค ÿารบัญรูปภาพ เรื่อง รูปที่ 1 แÿดงเครื่องวัดน้ำระเĀยแบบถาด รูปที่ 2 แÿดงเครื่องวัดแÿงแดดแบบแคมป์เบลÿโตกÿ์ รูปที่ 3 แÿดงกระดาþโค้งยาวÿำĀรับวัดค่าแÿงแดด รูปที่ 4 แÿดงกระดาþตรงÿำĀรับวัดค่าแÿงแดด รูปที่ 5 แÿดงกระดาþโค้งÿั้นÿำĀรับวัดค่าแÿงแดด รูปที่ 6 แÿดงการไĀม้ของกระดาþ รูปที่ 7 แÿดงดาด้า ล็อคเกอร์ (Data Logger) รูปที่ 8 แÿดง code python บรรทัดที่ 1-14 รูปที่ 9 แÿดง code python บรรทัดที่ 18-45 รูปที่ 10 แÿดง code python บรรทัดที่ 47-61 รูปที่ 11 แÿดง code python บรรทัดที่ 64-71 รูปที่ 12 แÿดง code python บรรทัดที่ 73-77 รูปที่ 13 แÿดง code python บรรทัดที่ 79-81 รูปที่ 14 แÿดง code python บรรทัดที่ 83-88 รูปที่ 15 แÿดง code python บรรทัดที่ 96-126 รูปที่ 16 แÿดง code python บรรทัดที่ 130-165 รูปที่ 17 แÿดง code python บรรทัดที่ 167-185 รูปที่ 18 แÿดง code python บรรทัดที่ 187-203 รูปที่ 19 แÿดง code python บรรทัดที่ 205-206 รูปที่ 20 แÿดง code python บรรทัดที่ 208-220 รูปที่ 21 แÿดง code python บรรทัดที่ 222-260 รูปที่ 22 แÿดง code python บรรทัดที่ 262-287 รูปที่ 23 แÿดง code python บรรทัดที่ 289-307 รูปที่ 24 แÿดง code python บรรทัดที่ 308-322 Āนšา 6 7 7 7 8 8 9 15 16 17 17 17 18 18 18 20 21 22 22 23 23 25 26 27
ง เรื่อง รูปที่ 25 แÿดง code python บรรทัดที่ 324-352 รูปที่ 26 แÿดง code python บรรทัดที่ 353-366 รูปที่ 27 แÿดง code python บรรทัดที่ 367-380 รูปที่ 28 แÿดง code python บรรทัดที่ 384-397 รูปที่ 29 แÿดง code python บรรทัดที่ 401-408 รูปที่ 30 แÿดง code python บรรทัดที่ 411-427 รูปที่ 31 แÿดง code python บรรทัดที่ 428-434 รูปที่ 32 แÿดง code python บรรทัดที่ 430-438 รูปที่ 33 แÿดง code python บรรทัดที่ 440-457 รูปที่ 34 แÿดง code python บรรทัดที่ 459-464 รูปที่ 35 แÿดง code python บรรทัดที่ 466-477 รูปที่ 36 แÿดง code python บรรทัดที่ 479-495 รูปที่ 37 แÿดงĀน้าต่างโปรแกรมคำนวณค่า ET , ETo , Water supply รูปที่ 38 แÿดงĀน้าต่าง Plant Information รูปที่ 39 แÿดงĀน้าต่าง Penman-monteith to fnd ETo & ET รูปที่ 40 แÿดงตาราง INFORMATION รูปที่ 41 แÿดงĀน้าต่าง Input เพื่อใÿ่ค่า Kc ของพืช รูปที่ 42 แÿดงĀน้าต่าง Enter the day in period รูปที่ 43 แÿดงĀน้าต่าง Enter the number of locations รูปที่ 44 แÿดงĀน้าต่าง Enter the following values for Wheat รูปที่ 45 แÿดงĀน้าต่าง Input เพื่อใÿ่ชื่อÿถานที่ปลูกพืช รูปที่ 46 แÿดงĀน้าต่างเปรียบเทียบค่า ET ของพืชในแต่ละÿถานที่ รูปที่ 47 แÿดงĀน้าต่าง Plant Information รูปที่ 48 แÿดงĀน้าต่าง Input เพื่อใÿ่ค่าพื้นที่เป็นตารางเมตร รูปที่ 49 แÿดงĀน้าต่างปริมาณน้ำที่พืชต้องการในแต่ละÿถานที่ รูปที่ 50 แÿดงĀน้าต่าง Plant Information หนšา 28 29 30 31 31 31 32 32 33 33 34 34 35 35 36 36 36 37 37 38 38 39 39 40 40 40
จ เรื่อง รูปที่ 51 แสดงการเลือกไฟล์ที่ต้องการบันทึกค่า ETo และ ET รูปที่ 52 แสดงตัวอย่างข้อมูล ค่า ETo และ ET ที่ได้จากการคำนวณของโปรแกรม หนšา 41 41
1 Program Calculate ETo ET and Water supply by Penman-Monteith Method (โปรแกรมการคำนüณค่า ETo ET และ Water supply ของพืชแต่ละชนิดในแต่ละพื้นที่) ทฤþฎีที่เกี่ยüข้องกับปัญĀาของการýึกþา ÿภาพแüดล้อมตามธรรมชาติ ĀรือในแĀล่งทำการเกþตรกรรมปลูกพืช น้ำเป็นปัจจัยÿำคัญที่คüบคุม การเจริญเติบโต พัฒนา น้ำเกี่ยüข้องกับขบüนการต่างๆ ภายในต้นพืช เช่น ขบüนการĀารใจ การเคลื่อนย้าย ÿารต่างๆ รüมทั้งการÿร้างและÿลายตัüของÿารต่างๆในต้นพืช ดังนั้น การเจริญเติบโตรüมทั้งการใĀ้ผลผลิต ของพืชจึงขึ้นอยู่กับคüามเป็นประโยชน์ของน้ำในดินĀรือปริมาณน้ำที่พืชที่ได้รับคüามÿำคัญ โดยน้ำที่ได้มาจาก น้ำฝนตามธรรมชาติมันไม่มีคüามพอเĀมาะที่จะอำนüยการเจริญเติบโตใĀ้แก่พืชอย่างเต็มที่ ดังนั้น เมื่อใดก็ ตามที่ÿภาพธรรมชาติไม่อำนüย การจัดĀาน้ำใĀ้แก่พืชอย่างพอเĀมาะ และทันกับคüามต้องการจึงเป็น ÿิ่งจำเป็นที่จะประกันü่า พืชนั้นจะไม่ได้รับคüามเÿียĀาย และจะได้ผลผลิตตามที่คาดĀมายไü้ การüัดและการคำนüณĀาการใช้น้ำของพืชและปริมาณน้ำที่ต้องÿ่งออก 1. Reference Crop Evapotranspiration (ETo) ETo Āรือ Reference Crop Evapotranspiration (การระบายออกผ่านการออกซิเจนของดินและ การระบายน้ำผ่านช่องปากใบของพืช) คือ ปริมาณน้ำที่คาดü่าจะระบายออกจากพื้นผิüดินและพืชใน ÿภาพแüดล้อมที่เĀมาะÿม ในการบริĀารจัดการน้ำในเกþตรกรรมและการüางแผนการจัดการน้ำในพื้นที่ต่าง ๆ โดย ETo ถูกนำมาใช้ในการปรับปรุงการรับรู้และüางแผนการใช้น้ำในพื้นที่นั้น ๆ โดยการคำนüณขึ้นมาจาก ข้อมูลÿภาพอากาý เช่น อุณĀภูมิอากาý คüามชื้นÿัมพัทธ์ รัýมีแÿงและคüามเร็üของลม เป็นต้น ซึ่ง ETo มักจะถูกนำมาใช้ในĀลายๆ ÿถานการณ์ เช่น การüางแผนการเกþตร การüางแผนการจัดการน้ำในพื้นที่เมือง การüางแผนการจัดการทรัพยากรน้ำ และการประเมินผลกระทบของการเปลี่ยนแปลงทางÿภาพอากาýต่อ ÿิ่งแüดล้อมและการเกþตร ตลอดระยะเüลาที่ผ่านมาÿมการของ Penman ได้ถูกพัฒนาและปรับปรุงโดยนักüิจัยและ นักüิทยาýาÿตร์Āลายท่านมาโดยตลอด จนกระทั่งในปี ค.ý. 1956 John Monteith นักüิทยาýาÿตร์ชาü อังกฤþ ได้ปรับปรุงÿูตรของ Penman โดยเรียกüิธีการประมาณค่าการใช้น้ำของพืชอ้างอิงนี้ü่า Penman – Monteith มีรูปแบบดังÿมการดังนี้ ETO = 0.408∆(Rn − G) + γ 900 T + 273 U(es − ea) ∆ + γ(1 + 0.34u2) เมี่อ ETO คือ อินเด็กซ์การระเĀย-การÿ่งออก (Evapotranspiration) (mm/day) Rn คือ การรับแÿงอาทิตย์ÿะÿม (Net radiation) (MJ/m²/day) G คือ คüามร้อนของอุปกรณ์ (Soil heat flux) (MJ/m²/day) T คือ อุณĀภูมิอากาý (Air temperature) (°C)
2 U คือ คüามเร็üของลมที่ÿัมพัทธ์กับพืช (Wind speed at 2 meters height) (m/s) es คือ คüามชื้นของอากาýที่เกิดขึ้นที่อุณĀภูมิ T (Saturation vapor pressure) (kPa) ea คือ คüามชื้นของอากาýที่เกิดขึ้นจริง (Actual vapor pressure) (kPa) Δ คือ อัตราการเปลี่ยนแปลงของคüามชื้นต่ออุณĀภูมิ (Slope of the vapor pressure curve) (kPa/°C) คือ อัตราการลดลงของคüามชื้นของอากาýกับคüามÿูง (Psychrometric constant) (kPa/°C) 2. Crop Evapotranspiration (ET) Āมายถึง ปริมาณน้ำที่ถูกจ่ายออกมาจากพืชผ่านการระบบÿูงของพืชและการระบายน้ำในบริเüณที่พืช กำลังเจริญเติบโต โดย ET นี้จะพิจารณาถึงÿภาพการเจริญเติบโตของพืชและการใช้น้ำของพืชเอง ซึ่งมีผลต่อ ปริมาณน้ำที่ถูกระบายจากพืชผ่านกระบüนการการระบบÿูงของพืช (transpiration) และการระบายน้ำของ พืชผ่านผิüใบ (evaporation) โดย ET มักถูกใช้ในการประเมินคüามต้องการน้ำของพืชในการเจริญเติบโตและ ใช้เป็นข้อมูลÿำคัญในการüางแผนการเกþตรและการจัดการน้ำในพื้นที่ต่าง ๆ โดย ET มักถูกคำนüณขึ้นจาก ข้อมูลเกี่ยüกับÿภาพอากาý เช่น อุณĀภูมิ คüามชื้นÿัมพัทธ์ และคüามเร็üของลม รüมถึงลักþณะพืชเองเช่น พืชชนิดนั้นใช้น้ำเพียงใดในการเจริญเติบโต การใช้ค่า ET ช่üยในการประเมินคüามต้องการน้ำของพืชและการ üางแผนการใช้น้ำในการเกþตรอย่างเĀมาะÿมและประĀยัดทรัพยากรในพื้นที่ต่าง ๆ อย่างเĀมาะÿม 3. Water Supply Āมายถึง การจัดĀาน้ำเพื่อการใช้งานต่าง ๆ โดยมีüัตถุประÿงค์Āลักคือการใช้น้ำในการดื่ม การใช้ใน การเกþตร อุตÿาĀกรรม และในการใช้ในทุกกิจกรรมที่ต้องการน้ำ เช่น การใช้ในการทำอาĀาร การล้าง ภาชนะ การทำคüามÿะอาด การใช้น้ำในอุปกรณ์อิเล็กทรอนิกÿ์ เป็นต้น การÿร้างระบบน้ำที่มีประÿิทธิภาพ เป็นÿิ่งÿำคัญเพื่อใĀ้มีการจัดĀาน้ำเพียงพอและมีคุณภาพที่เĀมาะÿมÿำĀรับการใช้งานต่าง ๆ โดย Water Supply นั้นÿามารถเป็นไปได้ผ่านĀลายแĀล่งที่มา เช่น น้ำบาดาล น้ำฝน น้ำผิüดิน และแĀล่งน้ำจากทะเล แม้ü่าการเข้าถึงแĀล่งน้ำเĀล่านี้จะมีคüามยากลำบากในบางพื้นที่ แต่การจัดการและüางแผนการใช้งานน้ำเป็น ÿิ่งที่ÿำคัญในการพัฒนาและดำเนินชีüิตอย่างยั่งยืนของมนุþย์ การจัดĀาน้ำใĀ้เพียงพอและมีคุณภาพมีผลต่อ การพัฒนาทางเýรþฐกิจ ÿังคม และÿิ่งแüดล้อมทั่üไปในระยะยาü นอกจากนี้ การจัดĀาน้ำที่เĀมาะÿมยังมีผล ต่อÿุขภาพและคüามเป็นอยู่ของมนุþย์ด้üย
3 4. คüามÿัมพันธ์ระĀü่าง Reference Crop Evapotranspiration (ETo) กับ Water Supply • ETo เป็นตัüบ่งชี้คüามต้องการน้ำของพืช : ETo ÿูง Āมายถึง พืชต้องการน้ำมาก • Water Supply เป็นตัüบ่งชี้ปริมาณน้ำที่มีอยู่ : Water Supply ÿูง Āมายถึง น้ำมีเพียงพอ • การจัดการ Water Supply : Water Supply > ETo : น้ำเพียงพอต่อคüามต้องการของพืช Water Supply < ETo : น้ำไม่เพียงพอต่อคüามต้องการของพืช จำเป็นต้องใช้üิธีการจัดการ น้ำ เช่น การใĀ้น้ำเÿริม การใช้น้ำอย่างมีประÿิทธิภาพ 5. คüามถี่ในการใĀ้น้ำ (Irrigation frequency) จำนüนüันระĀü่างการใĀ้น้ำในแต่ละครั้งของพื้นที่แปลงใดแปลงĀนึ่ง ซึ่งขึ้นอยู่กับอัตราการใช้น้ำของ พืช และคüามÿามารถในการเก็บน้ำไü้ได้ของดินในเขตราก โดยเฉพาะอย่างยิ่งจากคüามชื้นชลประทาน (field capacity) ถึงระดับคüามชื้นที่จุดüิกติ (Critical moisture level) 6. รอบเüรในการใĀ้น้ำ (Irrigation period) จำนüนüันที่จะใĀ้น้ำแก่พืชครบทั่üทุกแปลงในพื้นที่ที่กำĀนดใĀ้โดยถือü่าในขณะนั้นพืชมีอัตราการใช้ น้ำÿูงÿุด ซึ่งÿ่üนใĀญ่จะอยู่ในช่üงüิกฤติของคüามต้องการน้ำ ซึ่งถ้าไม่ÿามารถจัดĀาน้ำใĀ้กับพืชใĀ้ทันกับคüาม ต้องการในช่üงนี้แล้üจะกระทบกระเทือนต่อผลผลิตมาก ในพื้นที่เขตแĀ้งแล้ง น้ำที่พืชที่ได้รับทั้งĀมดมาจาก การชลประทาน ซึ่งใĀ้ĀมุนเüียนกันไปทีละแปลงĀรือĀลายแปลงจนครบพื้นที่ทั้งĀมด 7. üัตถุประÿงค์ของการüัดĀาค่า ETo การĀาปริมาณการใช้น้ำของพืชอ้างอิงมีüัตถุประÿงค์Āลายประการ ดังนี้ 1. การüางแผนการใช้น้ำ : การที่ทราบปริมาณการใช้น้ำของพืชอ้างอิงช่üยใĀ้เกþตรกรÿามารถüาง แผนการใช้น้ำใĀ้เĀมาะÿมกับพืชที่ปลูก เช่น การกำĀนดระยะเüลาในการใĀ้น้ำ ปรับปริมาณน้ำตามคüาม ต้องการของพืช และลดการÿูญเÿียของน้ำในกระบüนการเกþตรกรรม 2. การจัดการทรัพยากรน้ำ : การที่ทราบปริมาณการใช้น้ำของพืชอ้างอิงช่üยใĀ้เกþตรกรÿามารถ จัดการทรัพยากรน้ำได้เป็นอย่างดีเช่น การจัดÿรรน้ำใĀ้ใช้ในพืชต่างๆ และการüิเคราะĀ์คüามเป็นไปได้ในการ ใช้น้ำในอนาคต 3. การüิจัยและพัฒนา : ข้อมูลเกี่ยüกับปริมาณการใช้น้ำของพืชอ้างอิงช่üยใĀ้นักüิจัยและผู้ที่ทำการ พัฒนาÿามารถüิเคราะĀ์และพัฒนาเทคโนโลยีที่ช่üยลดการใช้น้ำในการเกþตรกรรม และเพิ่มประÿิทธิภาพการ ใช้น้ำในการเพาะปลูกในอนาคตได้
4 4. การýึกþาเรียนรู้: ข้อมูลเกี่ยüกับปริมาณการใช้น้ำของพืชอ้างอิงช่üยใĀ้นักเรียน นักýึกþา และ ผู้ÿนใจเกþตรกรรมได้เรียนรู้เพิ่มเติมเกี่ยüกับการใช้น้ำในการเกþตรกรรม และการจัดการทรัพยากรน้ำใน ÿิ่งแüดล้อม 5. เพิ่มผลผลิต : การจัดการน้ำใĀ้เĀมาะÿมกับคüามต้องการของพืชอ้างอิงช่üยในการเพิ่มผลผลิตและ คุณภาพของผลผลิตในการเกþตร อีกทั้งยังเพิ่มรายได้ใĀ้กับเกþตรกรอีกด้üย 8. คüามจำเป็นในการĀาค่า ETo ปริมาณการใช้น้ำของพืชอ้างอิงเป็นÿิ่งÿำคัญในการüางแผนการจัดการน้ำแก่พืชและเกþตรกรได้อย่าง มีประÿิทธิภาพ และมีคüามจำเป็นในĀลายๆด้าน เช่น การจัดการทรัพยากรน้ำ ซึ่งการที่ทราบปริมาณการใช้ น้ำของพืชช่üยใĀ้เกþตรกรÿามารถจัดการทรัพยากรน้ำได้อย่างมีประÿิทธิภาพ โดยใช้น้ำใĀ้เพียงพอต่อคüาม ต้องการของพืชและการÿูญเÿียน้ำในกระบüนการการเกþตรกรรมลดน้อยลง อีกทั้งการลดคüามเÿี่ยงในการใช้ น้ำ ซึ่งการที่ทราบปริมาณการใช้น้ำของพืชช่üยลดคüามเÿี่ยงในการใช้น้ำในเüลาที่ไม่เĀมาะÿม เช่น ในช่üงแล้ง Āรือในพื้นที่ที่มีทรัพยากรน้ำจำกัด และการÿร้างการเกþตรที่ยั่งยืน การทราบปริมาณการใช้น้ำของพืชช่üยใĀ้ เกþตรกรÿามารถüางแผนการเกþตรที่มีประÿิทธิภาพได้เป็นอย่างดี 9. ปัจจัยที่มีผลต่อการคำนüณปริมาณการใช้น้ำของพืช 1. แÿงและคüามร้อน : การรับแÿงและอุณĀภูมิÿ่งผลต่อการระเĀยและการรับน้ำของพืช เนื่องจากมีผลต่อกระบüนการการÿร้างพลังงานและการคüบคุมการÿูญเÿียน้ำผ่านทางระเĀย 2. คüามชื้นในอากาý : คüามชื้นในอากาýมีผลต่ออัตราการระเĀยของพืช โดยพืชจะระเĀยน้ำ มากขึ้นในÿภาüะที่มีคüามชื้นในอากาýต่ำ 3. ลม : คüามเร็üและทิýทางของลมมีผลต่อการคüบคุมการÿูญเÿียน้ำผ่านทางระเĀยและการ ระเĀยของน้ำในใบพืช 4. อุณĀภูมิดิน : อุณĀภูมิของดินมีผลต่อการใช้น้ำของพืช เนื่องจากมีผลต่อปริมาณน้ำที่พืช ÿามารถดูดซับได้ 5. ปริมาณน้ำฝน : ปริมาณน้ำฝนที่รับเข้ามามีผลต่อการเติบโตและการใช้น้ำของพืช เนื่องจากมี ผลต่อการเติบโตของรากและการÿังเคราะĀ์แÿง 6. ลักþณะของพืช : ลักþณะของพืช เช่น พืชชนิดเดียüกันแต่มีลักþณะทางพันธุกรรมที่แตกต่าง กันอาจมีคüามต้องการน้ำที่แตกต่างกัน 7. ระยะเüลาของฤดูกาล : ระยะเüลาของฤดูกาลที่ÿำคัญในการเติบโตและการใช้น้ำของพืช เช่น ฤดูแล้งĀรือฤดูฝน 8. ÿภาพพื้นที่ : ÿภาพทางภูมิอากาýและทางดิน เช่น คüามชื้นของดิน พื้นที่ที่มีคüามชื้นÿูงใน ดินมักใĀ้น้ำในปริมาณมากกü่า
5 10. üิธีการตรüจüัดคำนüณปริมาณการใช้น้ำของพืช โดยจะมีการคำนüณด้üยüัตถุประÿงค์ 2 ประการ ได้แก่ • การบริĀารจัดการน้ำ การüัดและคำนüณปริมาณการใช้น้ำของพืชมีüัตถุประÿงค์Āลักในด้านการ บริĀารการจัดการน้ำดังนี้: 1. ประĀยัดทรัพยากรน้ำ : การทราบปริมาณการใช้น้ำของพืชช่üยใĀ้ผู้จัดการ ÿามารถüางแผนการใช้น้ำใĀ้เĀมาะÿมและประĀยัดทรัพยากรน้ำได้อย่างเĀมาะÿม โดยลด การÿูญเÿียของน้ำในกระบüนการการเกþตร 2. เพิ่มประÿิทธิภาพในการใช้น้ำ : การทราบปริมาณการใช้น้ำของพืชช่üยใĀ้ ผู้จัดการÿามารถปรับปรุงและเพิ่มประÿิทธิภาพในการใช้น้ำ โดยลดการใช้น้ำที่ไม่ จำเป็นและเพิ่มผลผลิตต่อĀน่üยน้ำที่ใช้ในการเกþตร 3. การป้องกันการขาดและการเกินของน้ำ : การทราบปริมาณการใช้น้ำของพืชช่üย ใĀ้ผู้จัดการÿามารถตระĀนักและป้องกันการขาดน้ำĀรือการเกินน้ำของพืชในแปลงปลูก ซึ่ง ÿามารถลดคüามเÿี่ยงต่อการÿูญเÿียผลผลิตได้ 4. ÿ่งเÿริมการอยู่รอดของพืช : การทราบปริมาณการใช้น้ำของพืชช่üยใĀ้ผู้จัดการ ÿามารถใĀ้น้ำในปริมาณที่เĀมาะÿมเพื่อÿ่งเÿริมการอยู่รอดและเจริญเติบโตของพืชในÿภาüะ ÿภาพแüดล้อมที่เปลี่ยนแปลงได้ • การเก็บเป็นÿถิติข้อมูล üัตถุประÿงค์ในการüัดและคำนüณปริมาณการใช้น้ำของพืชเพื่อเก็บข้อมูล เป็นÿถิติมีĀลายด้านที่ÿำคัญดังนี้: 1. การüิเคราะĀ์แนüโน้มของการใช้น้ำ : การรüบรüมข้อมูลเกี่ยüกับปริมาณการใช้ น้ำของพืชในช่üงเüลาที่ต่างกันช่üยใĀ้เราÿามารถüิเคราะĀ์และตรüจÿอบแนüโน้มของการใช้ น้ำในเซตของพืชที่กำลังเป็นÿิ่งที่ÿำคัญ 2. การüางแผนการจัดการน้ำ : ข้อมูลที่รüบรüมได้เป็นประโยชน์ในการüางแผนและ จัดการการใช้น้ำในเพื่อใĀ้มีการใช้น้ำอย่างมีประÿิทธิภาพ และเพิ่มประÿิทธิภาพในการ จัดการน้ำที่ใช้ในการเกþตร 3. การปรับปรุงแผนการเก็บรักþาน้ำ : การทราบปริมาณการใช้น้ำของพืชช่üยใĀ้ ผู้จัดการÿามารถปรับปรุงแผนการเก็บรักþาน้ำใĀ้เĀมาะÿมและมีประÿิทธิภาพมากยิ่งขึ้น 4. การประเมินผลผลิต : ข้อมูลการใช้น้ำของพืชÿามารถใช้เพื่อประเมินผลผลิต โดย การüิเคราะĀ์ผลกระทบของปริมาณน้ำที่ใช้ต่อผลผลิตของพืช 5. การüิเคราะĀ์คüามÿัมพันธ์ระĀü่างÿภาพอากาýและการใช้น้ำ : การเก็บข้อมูล การใช้น้ำของพืชÿามารถช่üยในการüิเคราะĀ์คüามÿัมพันธ์ระĀü่างÿภาพอากาýและการใช้ น้ำของพืช เช่น ÿัมพันธ์ระĀü่างปริมาณน้ำฝนและปริมาณน้ำที่พืชใช้ในแต่ละช่üงเüลา
6 11. เครื่องมือที่ใช้ในการüัดค่า ETo 11.1 Evaporation Class a Pan (เครื่องüัดน้ำระเĀยแบบถาด) รูปที่ 1 แÿดงเครื่องüัดน้ำระเĀยแบบถาด - ถาดน้ำ (Evaporation Hook Gauge) ขนาดลึก 10 นิ้ü เÿ้นผ่าýูนย์กลาง 48 นิ้ü ตั้งÿูงจากพื้นดิน 6 นิ้ü - ตะขอüัดระดับน้ำ (Micrometer Hook Gauge) แบ่งÿเกลเป็นนิ้ü จาก 0-4 นิ้üจะแบ่งทุกๆ 0.1 นิ้ü มาตรฐาน แบ่งละเอียดลงไปถึง 0.01 นิ้ü - ที่รองรับขอüัดระดับน้ำ (Stilling Well) เป็นรูปทรงกระบอก ป้องกันการพริ้ü Āรือกระเพื่อมของน้ำ และเพื่อüางขอüัดระดับน้ำ - เทอร์โมมิเตอร์ลอยน้ำ (Floating Thermometer) เป็นเธอร์โมมิเตอร์ รูปตัü U ข้างĀนึ่งเป็นเธอร์โมมิเตอร์ÿูงÿุด อีกข้างเป็นเธอร์โมมิเตอร์ต่ำÿุด ติดที่ÿุดทุ่นลอยน้ำ - ถังเก็บน้ำ (Water-storage Tank) ใช้เฉพาะที่กันดาร และĀ่างไกลการคมนาคม - เครื่องüัดคüามเร็üลมเĀนือถาด (Anemometer) เป็นคüามเร็üลมรüม (Totalize Wind Velocity)
7 11.2 เครื่องüัดแÿงแดดแบบแคมป์เบลÿโตกÿ์ (Campbell-Stokes Recorder) ประกอบด้üยลูกแก้üกลมเป็นรูป sphere ตั้งอยู่ที่ฐาน มีโครง (Bowl) ÿำĀรับÿอดกระดาþ อาบน้ำยาเคมี เมื่อพลังงานแผ่คüามร้อนจากดüงอาทิตย์ÿ่องมาถูกลูกแก้ü จะทำใĀ้รüมเป็นจุดโฟกัÿ เผาไĀม้กระดาþเป็นทางยาü คüามกü้างและคüามลึกของรอยไĀม้ ขึ้นอยู่กับคüามแรง (คüามเข้ม) ของแÿงแดด รูปที่ 2 แÿดงเครื่องüัดแÿงแดดแบบแคมป์เบลÿโตกÿ์ กระดาþจะมีÿีน้ำเงิน และที่กระดาþจะมีเÿ้นแบ่งเครื่องĀมายบอกเป็นชั่üโมง กระดาþที่ใช้จะมี 3 แบบคือ - กระดาþโค้งยาü จะใÿ่ช่องล่าง ใช้ตั้งแต่ เมþายน - กันยายน รูปที่ 3 แÿดงกระดาþโค้งยาüÿำĀรับüัดค่าแÿงแดด - กระดาþตรง จะใÿ่ช่องกลาง ใช้ตั้งแต่ กันยายน - ตุลาคม และมีนาคม – เมþายน รูปที่ 4 แÿดงกระดาþตรงÿำĀรับüัดค่าแÿงแดด
8 - กระดาþโค้งÿั้น จะใÿ่ช่องบน ใช้ตั้งแต่ ตุลาคม - กุมภาพันธ์ รูปที่ 5 แÿดงกระดาþโค้งÿั้นÿำĀรับวัดค่าแÿงแดด วิธีการจดบันทึก การอ่านระยะเวลาแÿงแดดในกราฟใĀ้ถือ 1 ช่อง เท่ากับ 1 ชั่วโมง โดยแบ่งเป็น 10 ช่อง ช่องละ 6 นาที - ตัวอย่างการไĀม้ของกระดาþ รูปที่ 6 แÿดงการไĀม้ของกระดาþ 11.3 ดาด้า ล็อคเกอร์ (Data Logger) Data Logger คือเครื่องบันทึกข้อมูลแบบอิเล็กทรอนิกÿ์ ÿามารถจำแนกออกได้Āลาย ประเภท เช่น Data Logger ที่ÿามารถวัดและบันทึกค่าอุณĀภูมิได้เพียงอย่างเดียว ไปจนถึง Data Logger ที่มีความซับซ้อนมากยิ่งขึ้น ÿามารถวัดและบันทึกค่าต่างๆ ได้Āลายอย่างพร้อมๆ กันมี Āน้าจอแÿดงผล, ซอฟแวร์วิเคราะĀ์ข้อมูล, ถ่ายโอนข้อมูลผ่านบลูทูธและการÿ่งข้อมูลแบบไร้ÿายอื่นๆ การทำงานของ Data Logger Data Logger ทำงานด้วยเซ็นเซอร์ที่แปลงปรากฏการณ์ทางกายภาพเป็นÿัญญาณอิเล็กทรอนิกÿ์ เช่น การแปลงข้อมูลอุณĀภูมิเป็นข้อมูลแบบไบนารี่ ซึ่งข้อมูลไปบนารี่ ง่ายต่อการวิเคราะĀ์ด้วยซอฟต์แวร์ และเก็บบนเครื่องคอมพิวเตอร์ Āรือเก็บไว้ในĀน่วยความอื่นๆเช่น SD Card, Micro SD Card และซีดี ส่วนประกอบต่างๆ ของ Data Logger 1. ฮาร์ดแวร์เพื่อแปลงข้อมูลเป็นไบนารี่ เช่นเซ็นเซอร์, เครื่องÿ่งÿัญญาณ, เครื่องแปลงÿัญญาณ อนาล็อกเป็นดิจิตอล 2. Āน่วยความจำเพื่อเก็บข้อมูล เช่นĀน่วยความจำที่ติดตั้งอยู่ภายในตัวเครื่อง, SD Card Āรือ Micro SD Card 3. ซอฟต์แวร์ÿำĀรับเก็บข้อมูล, วิเคราะĀ์ข้อมูลและแÿดงผล
9 รูปที่ 7 แÿดงดาด้า ล็อคเกอร์ (Data Logger) 12. คุณÿมบัติพื้นฐานและที่มาของตัüแปรในÿมการ • Mean temperature : T คือ อุณĀภูมิเฉลี่ย ได้จากการนำค่าอุณĀภูมิÿูงÿุด (Maximum temperature) และอุณĀภูมิต่ำÿุด (Minimum temperature) ของพื้นที่นั้นๆ คำนüณได้จาก = + 2 • Slope of the saturation vapor pressure : Δ เป็นอัตราการเปลี่ยนแปลงของคüามชื้นในอากาý ต่อĀน่üยการเปลี่ยนแปลงของอุณĀภูมิ คำนüณได้จากข้อมูลเกี่ยüกับคüามชื้นÿัมพัทธ์ (saturation vapor pressure) และค่าคงที่ทางกายภาพ ∆ = 2504 exp ( 17.27 × T T + 273.3) (T + 237.3)2 • Saturation vapor pressure : เป็นค่าคüามชื้นÿัมพัทธ์ของอากาýที่อุณĀภูมิเดียüกันกับพื้นผิüใบ ซึ่งคำนüณจากอุณĀภูมิ es(Tmax) = 0.6108 exp ( 17.27 × Tmax Tmax + 237.3 ) es(Tmin) = 0.6108 exp ( 17.27 × Tmin Tmin + 237.3 )
10 es = es(Tmax) + es(Tmin) 2 • Actual vapor pressure : เป็นค่าคüามชื้นÿัมพัทธ์ของอากาýในÿภาüะที่มีจริง ซึ่งคำนüณจาก อุณĀภูมิและคüามชื้นÿัมพัทธ์ของอากาý ea = (Tmin × max RH) + (Tmax × minRH) 2 • Mean atmospheric pressure: P คือ คüามกดอากาý คำนüณได้จากค่าระดับคüามÿูงเĀนือน้ำ ทะเลของพื้นที่นั้นๆ P = 101.3 ( 293 − (0.0065 × Elevation) 293 ) 5 • Psychometric constant : γ เป็นค่าคงที่ทางกายภาพที่ใช้ในการคำนüณอัตราการÿูญเÿียน้ำ ค่านี้ เกี่ยüข้องกับการเปลี่ยนแปลงของคüามชื้นÿัมพัทธ์และอุณĀภูมิ ซึ่งมักมีค่าประมาณเท่ากับ 0.000665 PaK−1 γ = 0.000665 × P • üันในรอบปี: n คือ üันของปี ตั้งแต่ 1 มกราคมเป็นüันที่ 1 จนถึงüันที่เราต้องการĀาค่า • แปลงจาก Latitude เป็น Radians โดย φ = π 180 × Latitude • Solar Declination : δ ค่าคüามเอียงของดüงอาทิตย์ เป็นค่าที่บ่งบอกถึงมุมที่ดüงอาทิตย์เอียงออกมา จากเÿ้นตรงที่üัตถุยามĀันĀน้าไปทางทิýตะüันตก ซึ่งค่า นั้นเป็นผลมาจากการเอียงของแกนĀมุน ของโลกและüัฏจักรของโลกรอบดüงอาทิตย์คำนüณได้จาก δ = 0.409 × sin (( 2π 365 × n) − 1.39)
11 • Sunset angle : ωs มุมตกของดüงอาทิตย์ คำนüณได้จาก ωs = arccos (−tan (φ)tan (δ)) • The inverse of the relative distance Earth and Sun : dr กำลังÿองผกผันระĀü่างระยะทาง โลกกับดüงอาทิตย์ คำนüณได้จาก dr = 1 + 0.033cos ( 2π 365 × n) • The extraterrestrial radiation : Ra รังÿีแÿงอาทิตย์ที่มาถึงพื้นผิüของโลกคำนüณได้จาก Ra = 24 π × (4.92 × dr)[ωs sin(φ) sin(δ) + cos (φ)cos (δ)sin (ωs)] • The clear-sky radiation : Rsw รังÿีคลื่นÿั้น คำนüณได้จาก Rsw = [0.75 + (2 × 10−5) × Elevation] × Ra • The net-long wave radiation : Rnl รังÿีคลื่นยาü คำนüณได้จาก Rnl = 4.903 × 10−9 [ (Tmax + 273)4 + (Tmin + 273)4 2 ] × [0.34 − 0.14(1.62)0.5] × [1.35 × measured solar radiation Rsw − 0.35] • Net Radiation : Rn คือ อัตราการรับÿูญเÿียคüามร้อนจากแÿงอาทิตย์ซึ่งได้รับจากพื้นผิüโดยรüม ของโลกคำนüณได้จาก Rn = (1 − 0.23) × measured solar radiation − Rnl
12 13.üัตถุประÿงค์ของโปรแกรมคำนüณĀาค่า ET ETo and Water Supply พัฒนาขึ้นมาเพื่อใช้คำนüณ ETo ตามüิธี Penman-Monteith โดยโปรแกรมÿามารถเลือกพืชชนิด ต่างๆ เพื่อคำนüณปริมาณการใช้น้ำของพืชชนิดนั้น ณ เüลาใดเüลาĀนึ่งในพื้นที่แตกต่างกัน ได้อย่างถูกต้อง และมีประÿิทธิภาพ เช่นในการüางแผนการเกþตร การจัดการทรัพยากรน้ำ Āรือการüางแผนการใช้น้ำในการ เจริญเติบโตของพืช โดยทั่üไปแล้ü โปรแกรมดังกล่าüมักจะใช้ข้อมูลเชิงพื้นที่เกี่ยüกับÿภาพอากาý เช่น อุณĀภูมิ คüามชื้น แรงเÿียดทานของลม และแÿงอาทิตย์ เพื่อคำนüณĀาอัตราการระเĀยน้ำของพืชในพื้นที่นั้น โดยÿามารถใช้ข้อมูลจากรายงานÿถิติภูมิอากาýเกþตรของประเทýไทยได้โดยตรงโดยไม่ต้องปรับค่า ก่อนเข้า โปรแกรม 14.üัตถุประÿงค์ในการใช้ÿูตรคำนüณĀาค่า ETo โดยüิธี üิธี Penman-Monteith การประมüลค่า ETo โดยอาýัยข้อมูลอุตุนิยมüิทยามีĀลายüิธี ทั้งÿูตรที่ต้องการข้อมูลเพียงอย่างเดียü Āรือÿูตรที่ต้องการข้อมูลĀลายอย่างในการคำนüณ อาทิ เช่น ÿูตรของ Thomwaite, Hargreaves, PriestleyTaylor, Turc, Penman, Penman-Monteith ÿำĀรับการýึกþาĀาค่า ETo โดยüิธีของเป็นüิธีการ Penman-Monteith เพราะü่าเป็นüิธีการที่ได้ รüบรüมองค์ประกอบที่มีผลต่อการการใช้น้ำของพืชมาอยู่ในÿูตรทุกอย่าง ได้แก่ รังÿีดüงอาทิตย์ คüามเร็üลม อุณĀภูมิ และคüามชื้นของบรรยากาý ÿรุปü่าüิธีของ Penman-MonteithใĀ้ผลใกล้เคียงกับคüามเป็นจริงมาก ที่ÿุด
13 ผังการทำงานของโปรแกรม (Flow Chart) Start Plant Name Calculate and ET (°) (°) (°) (%) (%) 2(m/s) ℎ B A Information
14 ผังการทำงานของโปรแกรม (Flow Chart) A , Input name for the location Area of each location Water supply calculation results Exit B Output ET value of plant in different location
15 อธิบายการทำงานของโปรแกรม รูปที่ 8 แÿดง code python บรรทัดที่ 1-14 - บรรทัดที่ 1 นำเข้าไลบรารี tkinter โดยใช้ตัüย่อคำÿั่งเป็น tk ซึ่งไลบรารีtkinter เป็นไลบรารีÿำĀรับ การÿร้างInterface แบบกราฟฟิก (GUI) - บรรทัดที่ 2 จากไลบรารีtkinter นำเข้าคลาÿ ttk และ messagebox เพื่อมาใช้ในการÿร้างกล่อง ข้อคüามแจ้งเตือน - บรรทัดที่ 3 นำเข้าไลบรารี easygui เพื่อใช้ในการÿร้างĀน้าต่าง Interface ของโปรแกรม - บรรทัดที่ 4 นำเข้าไลบรารี matplotlib.pyplot โดยใช้ตัüย่อคำÿั่งเป็น plt เพื่อใช้ในการเขียนกราฟ และ Visualization - บรรทัดที่ 5 นำเข้าไลบรารี math ÿำĀรับการคิดคำนüณทางคณิตýาÿตร์ - บรรทัดที่ 6 นำเข้าไลบรารีล pandas โดยใช้ตัüย่อคำÿั่งเป็น pd ใช้ÿำĀรับการüิเคราะĀ์ข้อมูล โครงข่าย - บรรทัดที่ 7 นำเข้าคลาÿ datetime จากไลบรารีdatetime ใช้ÿำĀรับจัดการข้อมูลเกี่ยüกับüันที่ และเüลา - บรรทัดที่ 8 จากไลบรารีPIL นำเข้าคลาÿ Image และ imageTk เพื่อใช้ในการแÿดงภาพใน tkinter -บรรทัดที่ 9 นำเข้าฟังก์ชัน VideoFileClip จากไลบรารี moviepy.editor เพื่อแÿดงüิดีโอ - บรรทัดที่ 10 นำเข้าไลบรารี csv เพื่อใช้ในการบันทึกข้อมูลแบบ csv ในโปรแกรม Microsoft Excel - บรรทัดที่ 11 นำเข้าไลบรารี ttkbootstrap โดยใช้ตัüย่อคำÿั่งเป็น tb เป็นโมดูลÿำĀรับÿร้าง Interfaceแบบกราฟฟิก (GUI)โดยใช้กรอบงาน Tkinter - บรรทัดที่ 12 นำเข้าทุกคลาÿและทุกฟังก์ชั่นที่มีในไลบรารี ttkbootstrap - บรรทัดที่ 13 นำเข้าไลบรารี sys เพื่อใช้ÿำĀรับการจัดการกับตัüแปรและข้าถึงข้อมูลต่างๆใน โปรแกรม - บรรทัดที่ 14 นำเข้าไลบรารี simpledialog เพื่อใช้ในการÿร้าง Interface ใĀ้ผู้ใช้ป้อนข้อมูล
16 รูปที่ 9 แÿดง code python บรรทัดที่ 18-45 - บรรทัดที่ 18 การÿร้างคลาÿใĀม่ ชื่อ WelcomePage ÿำĀรับÿร้างĀน้าต่าง GUI - บรรทัดที่ 21 เป็นการÿร้างฟังก์ชัน “_init__” ใช้ÿำĀรับการกำĀนดค่าเริ่มต้นในโปรแกรม - บรรทัดที่ 23-25 เป็นการตั้งชื่อĀน้าต่าง GUI เป็น “Programe calculate ET of plant in different location” และใช้คำÿั่งทำใĀ้GUI เป็นแบบ Full Screen -บรรทัดที่ 29-32 นำเข้าไฟล์üิดีโอจากตำแĀน่งไฟล์ที่กำĀนด และใช้รูปภาพจากüิดีโอในที่นำเข้า - บรรทัดที่ 35-36 ÿร้างĀน้าต่าง canvas ขนาด 1920x1080 พิกเซล และแÿดง canvas ในĀน้าต่าง GUI - บรรทัดที่ 39-40 ÿร้างภาพบน canvas แÿดงในตำแĀน่ง ( 0,0 ) และยึดที่มุมซ้ายบนของภาพ - บรรทัดที่ 43-44 ÿร้างปุ่ม “Start” บนĀน้าต่างGUI เพื่อเรียกใช้ฟังก์ชัน self.start_program และ ระบุตำแĀน่งปุ่ม - บรรทัดที่ 46-47 กำĀนดค่าเริ่มต้นของ loop_count เป็น 1 ซึ่งเป็นการเก็บจำนüนลูป และกำĀนด ค่าÿูงÿุดเป็น 5 ลูป
17 รูปที่ 10 แÿดง code python บรรทัดที่ 47-61 - บรรทัดที่ 50 ÿร้างฟังก์ชัน “start_programe” และจะถูกเรียกใช้เมื่อกดปุ่ม “Start” - บรรทัดที่ 51 ทำลายĀน้าต่างที่กำลังทำงานอยู่ ซึ่งก็คือĀน้าต่าง “Welcome Page” - บรรทัดที่ 53-55 เรียกใช้ฟังก์ชัน “get_water_supply” และแÿดงข้อคüาม “Starting the program” - บรรทัดที่ 57-60 ÿร้างเงื่อนไข “ __name==”__main”” แล้üใĀ้ÿร้างตัüแปร WelcomePage() และเปิดĀน้าต่าง GUI ของโปรแกรมโดยใช้เมทอด mainloop() จาก Tkinter ซึ่งจะทำใĀ้โปรแกรมรอรับ ข้อมูลจากผู้ใช้และทำงานตามโค้ดที่กำĀนดไü้ - บรรทัดที่ 63-64 ÿร้างตัüแปร “kc_value” และกำĀนดใĀ้มีค่าเริ่มต้นเป็น None รูปที่ 11 แÿดง code python บรรทัดที่ 64-71 - บรรทัดที่ 68-670 ÿร้างฟังก์ชัน “get_plant_name” รับข้อมูลชื่อพืชจากผู้ใช้และบันทึกข้อมูลใน ตัüแปร plant_name รูปที่ 12 แÿดง code python บรรทัดที่ 73-77 - บรรทัดที่ 75 ÿร้างĀน้าต่าง Application จากไลบรารี TKinter - บรรทัดที่ 76 กำĀนดชื่อของĀน้าต่าง Application เป็น “Plant Information” - บรรทัดที่ 78 กำĀนดใช้ธีม superhero ในการกำĀนดÿไตล์ของĀน้าต่าง Application
18 รูปที่ 13 แÿดง code python บรรทัดที่ 79-81 - บรรทัดที่ 81-82 ÿร้างüัตถุ Frame ในĀน้าต่างĀลักของโปรแกรม GUI โดยกำĀนดขนาดการเü้น ระยะระĀü่างüัตถุใน Frame ด้üยระยะ 20 พิกเซล และกำĀนดตำแĀน่งในใช้คำÿั่ง grid() ใน tkinter รูปที่ 14 แÿดง code python บรรทัดที่ 83-88 - บรรทัดที่ 85-86 ÿร้างĀน้าต่างและข้อคüามในĀน้าต่าง “Enter the plant name” และกำĀนด ตำแĀน่งของข้อคüาม -บรรทัดที่ 88-89 ÿร้างช่องป้อนข้อคüามกü้าง 30 ตัüอักþรภายในĀน้าต่างที่ÿร้างขึ้น และกำĀนด ตำแĀน่งของช่องป้อนข้อคüาม โดยใช้คำÿั่ง “grid()” ของ tkinter โดยจะอยู่บริเüณด้านล่างข้อคüาม“Enter the plant name” 1 แถü รูปที่ 15 แÿดง code python บรรทัดที่ 96-126
19 - บรรทัดที่ 96 Āมายถึง การประกาýฟังก์ชัน Python ชื่อ get_user_inputs ที่มีพารามิเตอร์Āนึ่งตัü ชื่อ plant_name บรรทัดที่ 98 Āมายถึง รับค่าจากผู้ใช้เกี่ยüกับüันในช่üงเüลาที่กำĀนด โดยใช้ฟังก์ชัน enterbox จาก โมดูล easygui - บรรทัดที่ 101-102 Āมายถึง รับค่าจากผู้ใช้เกี่ยüกับจำนüนÿถานที่ที่ต้องการป้อนข้อมูล โดยแปลง ค่าใĀ้เป็น integer โดยใช้ int() และฟังก์ชัน enterbox จากโมดูล easygui และÿร้างรายการü่างที่ชื่อ all_inputs เพื่อเก็บข้อมูลที่ผู้ใช้ป้อน - บรรทัดที่ 104 Āมายถึง เริ่มลูป for โดยจำนüนรอบที่จะüนซ้ำคือ num_locations - บรรทัดที่ 105-121 Āมายถึง ใช้ฟังก์ชัน multenterbox จากโมดูล easygui เพื่อใĀ้ผู้ใช้ป้อนค่าต่าง ๆ ซึ่งข้อมูลจะถูกเก็บไü้ใน inputs ในรูปของลิÿต์ - บรรทัดที่ 122 Āมายถึง เพิ่มค่า day_in_period เข้าไปที่ด้านĀน้าของ inputs เพื่อระบุüันใน ช่üงเüลาที่ผู้ใช้ระบุ - บรรทัดที่ 123 Āมายถึง แปลงข้อมูลใน inputs เป็นตัüเลขที่มีประเภทเป็น float - บรรทัดที่ 124 Āมายถึง เพิ่มข้อมูลใน inputs ไปยัง all_inputs ในรูปของทูเพิล (tuple) โดยระบุ ชื่อพืชและข้อมูลที่ผู้ใช้ป้อน - บรรทัดที่ 126 Āมายถึง ÿ่งค่า all_inputs กลับเมื่อเÿร็จÿิ้นการรับข้อมูลทั้งĀมด
20 รูปที่ 16 แÿดง code python บรรทัดที่ 130-165 - บรรทัดที่ 130-131 Āมายถึง ฟังก์ชัน mean_tmp ที่รับพารามิเตอร์ÿองตัüคือ mxt (อุณĀภูมิ ÿูงÿุด) และ mnt (อุณĀภูมิต่ำÿุด) และคืนค่าเฉลี่ยของÿองอุณĀภูมินั้นๆ - บรรทัดที่ 133-136 Āมายถึง ฟังก์ชัน dt_slp_of_str_wp ที่รับพารามิเตอร์ mean_tmp (ค่าเฉลี่ย ของอุณĀภูมิ) และคำนüณอัตราการเปลี่ยนแปลงของคüามดันไอน้ำอิ่มตัüที่ÿร้างโดยคüามĀนาแน่นของคüาม คüามชื้นด้üยอุณĀภูมิเฉลี่ยที่กำĀนด - บรรทัดที่ 138-139 Āมายถึง ฟังก์ชัน Sat_vp_pres_atmx ที่รับพารามิเตอร์ mxt (อุณĀภูมิÿูงÿุด) และคำนüณค่าคüามดันไอน้ำอิ่มตัüที่ÿร้างขึ้นจากอุณĀภูมิÿูงÿุดที่กำĀนด - บรรทัดที่ 141-142 Āมายถึง ฟังก์ชัน Sat_vp_pres_atmn ที่รับพารามิเตอร์ mnt (อุณĀภูมิต่ำÿุด) และคำนüณค่าคüามดันไอน้ำอิ่มตัüที่ÿร้างขึ้นจากอุณĀภูมิต่ำÿุดที่กำĀนด - บรรทัดที่ 144-147 Āมายถึง ฟังก์ชัน mean_strt_vapor ที่รับค่าคüามดันไอน้ำอิ่มตัüที่ÿร้างจาก อุณĀภูมิÿูงÿุดและอุณĀภูมิต่ำÿุด และคืนค่าคüามดันไอน้ำเฉลี่ย - บรรทัดที่ 149-152 Āมายถึง ฟังก์ชัน act_vp_press ที่รับค่าคüามดันไอน้ำที่ÿร้างจากอุณĀภูมิ ต่ำÿุด และคüามชื้นÿูงÿุดที่ÿามารถรับได้และคüามดันไอน้ำที่ÿร้างจากอุณĀภูมิÿูงÿุดและคüามชื้นต่ำÿุดที่ ÿามารถรับได้ และคืนค่าคüามดันไอน้ำที่ÿร้างจากอุณĀภูมิเฉลี่ยและคüามชื้นเฉลี่ย
21 - บรรทัดที่ 154-155 Āมายถึง ฟังก์ชัน mean_atmos_pressAt_stat ที่รับพารามิเตอร์ elev และ คำนüณค่าคüามดันบรรยากาýเฉลี่ยของÿถานี - บรรทัดที่ 157-158 Āมายถึง ฟังก์ชัน psychomtrc_const ที่รับพารามิเตอร์ Mean_atmosphoric_pressure_at_the_station (ค่าคüามดันบรรยากาýเฉลี่ยที่ÿถานี) และคืนค่า - บรรทัดที่ 160-161 Āมายถึง ฟังก์ชัน lat_to_rad ที่รับพารามิเตอร์ lat (ละติจูด) และแปลงค่า ละติจูดเป็นเรเดียน - บรรทัดที่ 163-165 Āมายถึง ฟังก์ชัน solar_decl ที่รับพารามิเตอร์ day และคำนüณมุมเอียงของ พระอาทิตย์ รูปที่ 17 แÿดง code python บรรทัดที่ 167-185 - บรรทัดที่ 167-168 Āมายถึง ฟังก์ชัน ss_ang ที่รับพารามิเตอร์ radian (เรเดียน) และ solar_declination (มุมเอียงของพระอาทิตย์) และคำนüณมุมของดüงอาทิตย์ - บรรทัดที่ 170-172 Āมายถึง ฟังก์ชัน in_rela_dist_earthnson ที่รับพารามิเตอร์ day และคำนüณ ค่าระยะĀ่างระĀü่างโลกและดüงอาทิตย์ - บรรทัดที่ 174-177 Āมายถึง ฟังก์ชัน extrat_radia ที่รับพารามิเตอร์ the_inverse_of_the_relative_distance_earth_and_son (ค่าระยะĀ่างระĀü่างโลกและดüงอาทิตย์), sunset_angle (มุมของดüงอาทิตย์), radian (เรเดียน), และ solar_declination (มุมเอียงของพระอาทิตย์) และคำนüณรังÿีที่ตกที่โลกภายนอก - บรรทัดที่ 179-180 Āมายถึง ฟังก์ชัน clear_sky_rad ที่รับพารามิเตอร์ elev (คüามÿูง) และ extraterrestrial_radiation และคำนüณรังÿีคลื่นÿั้น - บรรทัดที่ 182-185 Āมายถึง ฟังก์ชัน net_net_long_W_rad ที่รับพารามิเตอร์ mxt (อุณĀภูมิ ÿูงÿุด), mnt (อุณĀภูมิต่ำÿุด), Actual_vapor_pressure (คüามดันไอน้ำ), sola_ray (รังÿีอาทิตย์), และ clear_sky_radiation (รังÿีคลื่นÿั้น) และคำนüณรังÿีคลื่นยาü
22 รูปที่ 18 แÿดง code python บรรทัดที่ 187-203 - บรรทัดที่ 187-188 Āมายถึง ฟังก์ชัน NT_rad ที่รับพารามิเตอร์ sola_ray (รังÿีอาทิตย์) และ net_long_wave_radiation (รังÿีคลื่นยาü) และคำนüณรังÿีÿุทธิ - บรรทัดที่ 190-194 Āมายถึง ฟังก์ชัน eto ที่รับพารามิเตอร์ต่างๆ และคำนüณค่าอ้างอิงของการคาย ระเĀยในพื้นที่ไม่ขาดน้ำ - บรรทัดที่ 196-200 Āมายถึง ฟังก์ชัน et ที่รับพารามิเตอร์ต่างๆ และคำนüณปริมาณการใช้น้ำของ พืช - บรรทัดที่ 203 Āมายถึง ÿร้างตัüแปร all_data เป็นรายการü่าง ที่จะใช้เก็บข้อมูลทั้งĀมดที่ได้รับมา รูปที่ 19 แÿดง code python บรรทัดที่ 205-206 - บรรทัดที่ 205-206 : โค้ดที่ใĀ้มาเป็นการใช้งานโมดูล tkinter ใน Python เพื่อÿร้างÿไตล์ใĀม่ ÿำĀรับปุ่ม (TButton) โดยใช้ ttk (Themed Tkinter) ซึ่งเป็นโมดูลใน tkinter ที่ใĀ้ÿิ่งที่เรียกü่า "themed widgets" ซึ่งเป็นüิธีที่ทันÿมัยและกü้างขüางในการÿร้างอินเทอร์เฟซผู้ใช้กราฟิกโดย 1. s = tb.Style() : ÿร้างอ็อบเจ็กต์ของคลาÿ Style จากโมดูล ttk และเก็บไü้ในตัüแปร s เพื่อใช้ในการกำĀนดÿไตล์ต่างๆ 2. s.configure ('my.TButton', font=('Helvetica', 20, 'bold'), padding=20) : กำĀนด ÿไตล์ใĀม่ÿำĀรับปุ่มที่มีชื่อü่า 'my.TButton' โดยกำĀนดคุณÿมบัติต่างๆของÿไตล์ดังนี้ font=('Helvetica', 20, 'bold') : กำĀนดแบบอักþรของปุ่มเป็น Helvetica ขนาด 20 พิกเซลและตัüĀนา padding=20 : กำĀนดระยะĀ่างระĀü่างขอบของปุ่มและข้อคüามด้านในใĀ้มีค่าเท่ากับ 20 พิกเซล ดังนั้นเมื่อปุ่มที่ถูกÿร้างขึ้นโดยใช้ÿไตล์นี้จะมีแบบอักþร Helvetica ขนาด 20 พิกเซลและตัüĀนา พร้อมกับ ระยะĀ่างขอบและข้อคüามภายในปุ่มเท่ากับ 20 พิกเซลด้üย
23 รูปที่ 20 แÿดง code python บรรทัดที่ 208-220 - บรรทัดที่ 208-220 : เป็นÿ่üนเริ่มต้นของฟังก์ชั่นคำนüณค่า ETo Āรือการใช้น้ำของพืช โดยในÿ่üน นี้จะเป็นการรับข้อมูลจากผู้ใช้ โดยจะรับข้อมูลของชื่อพืชและค่า kc ( crop coefficient ) ถ้าผู้ใช้ไม่ใÿ่ค่าĀรือ ใÿ่ค่าที่ไม่ถูกต้อง โปรแกรมจะไม่ทำงานต่อและแÿดงข้อคüามแจ้งเตือน รูปที่ 21 แÿดง code python บรรทัดที่ 222-260
24 - บรรทัดที่ 222-260 : โค้ดÿ่üนนี้เป็นการüนลูปผ่านข้อมูลที่ได้รับจากฟังก์ชันรับข้อมูลของพืช ซึ่งเป็น ข้อมูลเกี่ยüกับÿภาพอากาýĀรือÿภาพแüดล้อมต่าง ๆ ในÿถานที่ที่ต้องการคำนüณ ETo ÿำĀรับพืชนั้น ๆ โดย ที่ตัüแปร plant_name คือชื่อของพืชที่ผู้ใช้ระบุไü้ก่อนĀน้านี้ ในแต่ละรอบของลูป for จะมีตัüแปร plant_name และ inputs ที่ใช้เก็บข้อมูลที่ได้รับมาจากการรับข้อมูลจากผู้ใช้ ซึ่งจะประกอบด้üยข้อมูลที่ เกี่ยüข้องกับÿภาพอากาýและÿภาพแüดล้อมที่ต่างกันของแต่ละÿถานที่ เช่น üันที่ (day), ละติจูด (lat), อุณĀภูมิÿูงÿุด (mxt), อุณĀภูมิต่ำÿุด (mnt), คüามชื้นÿูงÿุด (mxrh), คüามชื้นต่ำÿุด (mnrh), คüามเร็üลม (wndspd), รังÿีแÿงอาทิตย์ (sola_ray), คüามÿูงจากระดับน้ำทะเล ( elev ), การเกิดการรังÿีÿะท้อนของพืช (G), และคüามชื้นÿัมพัทธ์ (hi) ซึ่งเป็นข้อมูลที่ใช้ในการคำนüณ Eto ต่อมาโค้ดจะทำการตรüจÿอบค่า hi เพื่อ กำĀนดค่าของ cn และ cd โดยถ้า hi มีค่าน้อยกü่าĀรือเท่ากับ 1.2 จะกำĀนดค่า cn เป็น 900 และ cd เป็น 0.34 ถ้าไม่ใช่ ก็จะกำĀนด cn เป็น 1600 และ cd เป็น 0.38 จากนั้นโค้ดจะทำการคำนüณค่าที่ต้องใช้ในการ คำนüณ ETo และ ET ซึ่งได้แก่ mean_temperature delta_slope saturation_Vapor_pressure_at_max_temp saturation_Vapor_pressure_at_min_temp Mean_saturation_vapor_pressure Actual_vapor_pressure Mean_atmosphoric_pressure_at_the_station psychomatric_constnat radian, solar_declination sunset_angle the_inverse_of_the_relative_distance_earth_and_son extraterrestrial_radiation clear_sky_radiation net_long_wave_radiation net_radiation จากนั้นจะนำค่าเĀล่านี้มาใช้ในการคำนüณ ETo ด้üยฟังก์ชัน eto() และĀลังจากนั้นจะคูณด้üยค่า kc_value เพื่อĀาค่า ET และแÿดงผลลัพธ์ใน result_label โดยใช้เครื่องĀมาย f-string เพื่อแทรกค่าของ ETo และ ET ที่คำนüณได้ลงในข้อคüามที่แÿดงผล
25 รูปที่ 22 แÿดง code python บรรทัดที่ 262-287 - บรรทัดที่ 262-287 : โค้ดÿ่üนนี้ทำการขอชื่อÿถานที่ (LOCATION) จากผู้ใช้ โดยใช้ simpledialog.askstring() เพื่อแÿดงกรอบข้อคüามที่ใĀ้ผู้ใช้กรอกชื่อÿถานที่ที่ต้องการบันทึกข้อมูล ข้อมูล ทั้งĀมดที่ได้จากการคำนüณ ETo และ ET ในแต่ละรอบของลูปจะถูกเก็บไü้ในลิÿต์ all_data เป็นรายการของ พืชและÿภาพอากาýที่คำนüณ ETo และ ET ได้ ต่อมาโค้ดจะใช้เมธอด append() เพื่อเพิ่มข้อมูลลงใน all_data โดยเก็บข้อมูลแต่ละรอบของลูปเป็นคู่ keyvalue โดย key คือชื่อของข้อมูล และ value คือค่าของข้อมูล ซึ่งรายละเอียดของข้อมูลที่เก็บมีดังนี้: "Location" : ชื่อของÿถานที่ที่ผู้ใช้ระบุ "Plant Name" : ชื่อของพืชที่ผู้ใช้ระบุไü้ก่อนĀน้านี้ "Mean Temperature": อุณĀภูมิเฉลี่ยที่คำนüณได้ (มีการปัดเป็นทýนิยม 2 ตำแĀน่ง) "Delta Slope of Saturation Vapor Pressure" : อัตราเรขาคณิตของการเปลี่ยนแปลงของคüามดันไอน้ำต่อ อุณĀภูมิ (มีการปัดเป็นทýนิยม 2 ตำแĀน่ง) "Saturation Vapor Pressure at Max Temperature" : คüามดันไอน้ำÿูงÿุดที่อุณĀภูมิÿูงÿุด (มีการปัดเป็น ทýนิยม 2 ตำแĀน่ง) "Saturation Vapor Pressure at Min Temperature" : คüามดันไอน้ำÿูงÿุดที่อุณĀภูมิต่ำÿุด (มีการปัดเป็น ทýนิยม 2 ตำแĀน่ง) "Mean Saturation Vapor Pressure" : คüามดันไอน้ำเฉลี่ย (มีการปัดเป็นทýนิยม 2 ตำแĀน่ง) "Actual Vapor Pressure" : คüามดันไอน้ำจริง (มีการปัดเป็นทýนิยม 2 ตำแĀน่ง)
26 "Mean Atmosphoric Pressure at the Station" : คüามดันบรรยากาýเฉลี่ยที่ÿถานี (มีการปัดเป็นทýนิยม 2 ตำแĀน่ง) "Psychrometric Constant" : ค่าคงที่โพรÿโคเมตริก (มีการปัดเป็นทýนิยม 2 ตำแĀน่ง) "Latitude in Radians" : ละติจูดในĀน่üยเรเดียน (มีการปัดเป็นทýนิยม 2 ตำแĀน่ง) "Solar Declination": การเอียงของดüงอาทิตย์ (มีการปัดเป็นทýนิยม 2 ตำแĀน่ง) "Sunset Angle" : มุมของพระอาทิตย์ตอนตก (มีการปัดเป็นทýนิยม 2 ตำแĀน่ง) "Inverse of the Relative Distance Earth and Sun" : ค่าคüามÿัมพันธ์ระĀü่างโลกและดüงอาทิตย์ใน รูปแบบกลับ (มีการปัดเป็นทýนิยม 2 ตำแĀน่ง) "Extraterrestrial Radiation" : รังÿีที่ได้จากดüงอาทิตย์ที่Āลุดออกจากบรรยากาý (มีการปัดเป็นทýนิยม 2 ตำแĀน่ง) "Clear Sky Radiation" : รังÿีที่ได้จากฟ้าใÿ (มีการปัดเป็นทýนิยม 2 ตำแĀน่ง) "Net Long Wave Radiation" : รังÿียาüลังเĀล็กÿุทธิ (มีการปัดเป็นทýนิยม 2 ตำแĀน่ง) "Net Radiation" : รังÿีÿุทธิ (มีการปัดเป็นทýนิยม 2 ตำแĀน่ง) "Cn" : ค่าการเกิดการระบายน้ำของพืชที่ใช้ในการคำนüณ ETo "Cd" : ค่าการเจริญเติบโตของพืชที่ใช้ในการคำนüณ ETo "ETo" : ค่าการระบายน้ำที่เป็นไปได้ (ETo) ที่คำนüณได้ (มีการปัดเป็นทýนิยม 2 ตำแĀน่ง) "ET" : ค่าการระบายน้ำของพืช (ET) ที่คำนüณได้ (มีการปัดเป็นทýนิยม 2 ตำแĀน่ง) โดยคูณกับค่า kc_value รูปที่ 23 แÿดง code python บรรทัดที่ 289-307 - บรรทัดที่ 289-307 : พล็อตกราฟแท่งเปรียบเทียบค่า ET ของÿถานที่ต่างๆ โดยใช้ matplotlib เพื่อÿร้างกราฟแท่ง • plt.figure(figsize=(20, 12)) : กำĀนดขนาดของรูปกราฟที่จะÿร้างขึ้นด้üยขนาดคüามกü้าง 20 นิ้ü และคüามÿูง 12 นิ้ü
27 • bar_plot = plt.bar(df['Location'], df['ET'], color='lightblue') : ÿร้างกราฟแท่งโดยใช้ข้อมูลจาก DataFrame df โดยใÿ่ค่า ET ลงในแกน y และชื่อÿถานที่ลงในแกน x โดยใĀ้แท่งมีÿีฟ้าอ่อน • for bar in bar_plot : üนลูปผ่านทุกแท่งของกราฟ • height = bar.get_height() : ดึงค่าคüามÿูงของแท่ง • plt.text(bar.get_x() + bar.get_width() / 2, height, round(height, 2), ha='center', va='bottom') : เพิ่มข้อคüามบนแต่ละแท่งของกราฟ โดยใĀ้คüามÿูงของข้อคüามเท่ากับค่า ET ของ แต่ละÿถานที่ (มีการปัดเป็นทýนิยม 2 ตำแĀน่ง) และจัดüางข้อคüามตรงกลางของแท่ง • plt.xlabel('Location') : กำĀนดชื่อแกน x ü่าเป็น "Location" • plt.ylabel('ET (mm/day)') : กำĀนดชื่อแกน y ü่าเป็น "ET (mm/day)" • plt.title(f'Comparison of ET Values for "{plant_name}" Different Locations') : กำĀนด Āัüข้อของกราฟ โดยระบุชื่อของพืชที่ใช้ในการคำนüณ ET และแÿดงเปรียบเทียบค่า ET ของÿถานที่ ต่างๆ • plt.xticks(rotation=45, ha='right') : Āมุนแกน x 45 องýาและจัดตำแĀน่งข้อคüามในแกน x ใĀ้ อยู่ด้านขüา • plt.grid(True) : เปิดการแÿดงเÿ้นกริดในกราฟ • plt.tight_layout() : ปรับระยะĀ่างระĀü่างกราฟและขอบเขตของกราฟใĀ้เĀมาะÿม • plt.show() : แÿดงกราฟที่ÿร้างขึ้น รูปที่ 24 แÿดง code python บรรทัดที่ 308-322 - บรรทัดที่ 311 เป็นการประกาýฟังก์ชัน Python ชื่อ Save _ to _file ที่มีพารามิเตอร์ชื่อ datd - บรรทัดที่ 312 เป็นการÿร้างปุ่ม (button) โดยใช้งานบางชนิดของไลบรารีĀรือโมดูลที่ชื่อ tb ซึ่งเป็น ชื่อตัüแปรที่ถูกกำĀนดมาแล้üโดยเดิมĀรือได้รับการนำเข้า (import) มาจากโมดูล - บรรทัดที่ 313 เป็นการใÿ่ชื่อไฟล์ที่เราทำ
28 - บรรทัดที่ 314 เป็นการใช้อาร์กิüเมนต์ในฟังก์ชันเพื่อเปิดไฟล์ Water_supply_data.CSV - บรรทัดที่ 315 การใช้ฟังก์ชันเงื่อนไข if เช็คü่าตัüแปร filename มีค่าĀรือไม่ ถ้า filename มีค่า (ไม่ใช่ None Āรือ False) ก็จะเริ่มการทำงานในบล็อก if - บรรทัดที่ 316 Āากเช็ค if แล้üจะเปิดไฟล์ CSV ÿำĀรับเขียน (mode 'w') โดยใช้คำÿั่ง open() ซึ่ง จะถูกเรียกขึ้นเมื่อมีการใช้งาน with statement ซึ่งจะช่üยในการปิดไฟล์โดยอัตโนมัติĀลังจากการทำงานเÿร็จ ÿิ้น พารามิเตอร์ newline='' จะช่üยในการป้องกันการเพิ่มบรรทัดเพิ่มเติมอัตโนมัติเมื่อเขียนข้อมูล และตัü แปร csvfile จะถูกใช้เพื่อระบุไฟล์ CSV ที่ถูกเปิดไü้ - บรรทัดที่ 317 เป็นการกำĀนดชื่อฟิลด์ในไฟล์ CSV ที่ต้องการเขียนลงไป ในที่นี้เป็น "Location", "Plant Name", "A Value", และ "Water Supply" - บรรทัดที่ 318 เป็นการÿร้างอ็อบเจ็กต์ DictWriter ของไลบรารี csv ซึ่งใช้ในการเขียนข้อมูลลงใน ไฟล์ CSV โดยระบุไฟล์ที่เปิดไü้ (csvfile) และระบุชื่อฟิลด์ (fieldnames) ที่ต้องการใĀ้เขียนลงไปในไฟล์ CSV นั้น - บรรทัดที่ 320-322 Āมายถึงการ เขียนĀัüข้อ (header) ของไฟล์ CSV โดยใช้เมธอด writeheader() เพื่อเขียนชื่อฟิลด์ลงในไฟล์ CSV ในบรรทัดแรก และüนลูปผ่านข้อมูลใน data และใช้เมธอด writerow() เพื่อ เขียนข้อมูลแต่ละแถüลงในไฟล์ CSV โดยใช้พจนานุกรมของข้อมูลในแต่ละรายการใน data รูปที่ 25 แÿดง code python บรรทัดที่ 324-352
29 - บรรทัดที่ 324 เป็นการประกาýฟังก์ชัน Python ชื่อ get_water_supply() - บรรทัดที่ 325-327 global all_data คือ การใช้ global เพื่อใĀ้ÿามารถเข้าถึงตัüแปร all_data ที่ ถูกกำĀนดไü้นอกฟังก์ชันได้ในฟังก์ชันนี้ all_water_supply = [] คือ ÿร้างรายการü่าง all_water_supply เพื่อเก็บข้อมูลเกี่ยüกับการจัดĀาน้ำroot = tb.Window(themename="superhero") gxhodkiÿร้างĀน้าต่าง GUI ด้üยไลบรารีĀรือโมดูลที่ชื่อ tb โดยใช้ธีม "superhero" - บรรทัดที่ 329-331 เป็นการ ตรüจÿอบü่าตัüแปร all_data มีค่าĀรือไม่ Āากไม่มีค่า จะแÿดง ข้อคüามแจ้งเตือนข้อผิดพลาดและจบการทำงานของฟังก์ชัน - บรรทัดที่ 333-335 Āมายถึง ลูป for data in all_data:: üนลูปผ่านข้อมูลทั้งĀมดที่อยู่ใน all_data - บรรทัดที่ 337 Āมายถึง การรับค่าพื้นที่ (A_value) โดยใช้ simpledialog.askfloat() เพื่อใĀ้ผู้ใช้ ป้อน - ข้อมูลบรรทัดที่ 339-343 Āมายถึงการคอยตรüจÿอบü่าผู้ใช้ป้อนค่าที่ถูกต้องĀรือไม่ Āากป้อนไม่ ถูกต้องจะแÿดงข้อคüามแจ้งเตือนและจบการทำงานของฟังก์ชัน - บรรทัดที่ 345-352 Āมายถึง การคำนüณการจัดĀาน้ำ (water_supply) จาก A_value ที่ป้อนเข้า มา คูณกับค่า ET (Evapotranspiration rate) ที่ได้จากข้อมูล.บรรทัดที่ 347-352 เป็นการเพิ่มข้อมูลที่ได้ เกี่ยüกับการจัดĀาน้ำลงใน all_water_supply ในรูปแบบของพจนานุกรม (dictionary) ซึ่งประกอบด้üย ที่ตั้ง (Location), ชื่อพืช (Plant Name), ค่า A (A Value), และ การจัดĀาน้ำ (Water Supply)จบการทำงานของ ฟังก์ชันและÿ่งค่า all_water_supply กลับ รูปที่ 26 แÿดง code python บรรทัดที่ 353-366 - บรรทัด 354-355 table_window = tb.Toplevel(root): ÿร้างĀน้าต่างย่อย (Toplevel) ที่ เกี่ยüข้องกับĀน้าต่างĀลัก (root) ซึ่งคงอยู่Āลังจากเรียกใช้งาน tb.Tk() เมื่อÿร้าง GUI แล้ü โดยใช้ tb เป็นชื่อ ย่อของโมดูลĀรือไลบรารีที่ใช้งานtable_window.title("Water Supply Calculation Results"): กำĀนด Āัüข้อของĀน้าต่างย่อย (Toplevel) ü่า "Water Supply Calculation Results" - บรรทัดที่ 357 Āมายถึง การÿร้าง Treeview Āรือตารางแÿดงข้อมูลโดยระบุคอลัมน์ ("Location", "Plant Name", "A Value", "Water Supply") และการแÿดงโĀนดĀัü (headings)
30 - บรรทัดที่ 358-361 Āมายถึง กำĀนดข้อคüามที่จะแÿดงบนĀัüของคอลัมน์ "Location"และกำĀนด Āัüของคอลัมน์อื่น ๆ เช่น "Plant Name", "A Value", "Water Supply" ในลำดับเดียüกัน - บรรทัดที่ 363-364 Āมายถึง การüนลูปผ่านรายการข้อมูลทั้งĀมดใน all_water_supply และ เพิ่ม ข้อมูลแต่ละรายการเข้าไปในตาราง โดยใช้ค่าที่ได้จากลูป for โดยระบุค่าในแต่ละคอลัมน์ ด้üยคำÿั่ง insert() - บรรทัดที่ 366 Āมายถึง การแÿดง Treeview Āรือตารางแÿดงข้อมูลในĀน้าต่างย่อย โดยใĀ้ขยาย ตามขนาดของĀน้าต่าง และเติมทุกพื้นที่ที่เป็นไปได้ รูปที่ 27 แÿดง code python บรรทัดที่ 367-380 - บรรทัดที่ 369 Āมายถึง การÿร้างปุ่มด้üยคำÿั่ง tb.Button() ซึ่งอาจจะเป็นüิธีการÿร้างปุ่มในไลบรารี Āรือโมดูลที่ไม่ถูกต้อง การÿร้างปุ่มใน tkinter ใช้ tk.Button() แทนที่จะใช้ tb.Button() ดังนั้นใĀ้แก้ไขเป็น sa_button = tk.Button() Āรือโค้ดที่ถูกต้องตามไลบรารีĀรือโมดูลที่ใช้งาน - บรรทัดที่ 370-371 Āมายถึง การเรียกใช้งาน sa_button ในบรรทัดนี้ดูเĀมือนไม่ถูกต้อง เนื่องจาก ปุ่มจะไม่ถูกÿร้างโดยใช้üิธีนี้ ปุ่มจะถูกÿร้างโดยใช้คำÿั่ง tk.Button() ĀรือไลบรารีĀรือโมดูลที่ถูกต้องตามการใช้ งาน - บรรทัดที่ 375-376 Āมายถึง การกำĀนด calculate_water_supply_button เท่ากับ sa_button ซึ่งเป็นการทับทรัพย์ค่าของ sa_button แต่ไม่แน่ใจü่ามันจะทำงานอย่างที่คาดĀüังĀรือไม่ เนื่องจาก sa_button ได้ถูกกำĀนดค่าแล้üในบรรทัดที่ 1 และ ในบรรทัดที่ 11 - บรรทัดที่ 377 Āมายถึง การกำĀนดการจัดüางของปุ่ม แต่การใช้ grid() นั้นใช้ÿำĀรับ tkinter ไม่ใช่ กับ PyQt ซึ่งอาจต้องใช้üิธีการจัดüางอื่น ๆ อย่างเช่น pack() Āรือ place() ในการจัดüางองค์ประกอบบน Āน้าต่าง - บรรทัดที่ 379-380 Āมายถึง เป็นการกำĀนดรูปแบบของÿไตล์ 'my.TButton' ด้üยการกำĀนด font ของปุ่ม ซึ่งมีขนาดเป็น 30 และแบบตัüอักþรเป็น 'normal' และใช้ชื่อตัüแปร 's' ซึ่งไม่ได้ถูกกำĀนดใĀ้กับ อะไรไü้ในโค้ดที่ใĀ้มา และ กำĀนดÿไตล์ของปุ่ม calculate_water_supply_button ใĀ้เป็น 'my.TButton' ซึ่งไม่น่าจะเป็นไปได้เพราะปุ่มนี้อาจไม่ได้รับการÿร้างขึ้นโดยใช้ÿไตล์ 'my.TButton' แต่อาจจะมีÿไตล์เริ่มต้นที่ ไม่ได้ระบุในโค้ด
31 รูปที่ 28 แÿดง code python บรรทัดที่ 384-397 - บรรทัดที่ 384 Āมายถึง ฟังก์ชัน save_to_excel() ที่ใĀ้มานั้นดำเนินการที่จะบันทึกข้อมูลลงในไฟล์ Excel (.xlsx) โดยการนำข้อมูลที่อยู่ในตัüแปร all_data มาบันทึก โดยมันทำการตรüจÿอบก่อนü่ามีข้อมูลใน ตัüแปร all_data Āรือไม่ Āากไม่มีข้อมูล จะแÿดงข้อคüามแจ้งเตือนข้อผิดพลาดและจบการทำงานของฟังก์ชัน - บรรทัดที่ 397 Āมายถึง การแÿดงกล่องข้อคüามแจ้งเตือนข้อผิดพลาดĀากไม่มีข้อมูลที่จะบันทึก รูปที่ 29 แÿดง code python บรรทัดที่ 401-408 - บรรทัดที่ 401– 404 ทำการÿร้างปุ่มกดโดยใĀ้มีข้อคüาม Save ETo and ET data to Excel โดยมี คำÿั่งใĀ้ใช้ฟังก์ชัน save_to_excel และทำการปรับตำแĀน่งและขนาดของปุ่มโดยใช้ Grid - บรรทัดที่ 407 – 408 ทำการปรับแต่งปุ่มโดยใช้ configure โดยเป็นการปรับแต่ง Font และขนาด และใĀ้ปุ่มใช้ Style ที่ได้กำĀนดไü้ รูปที่ 30 แÿดง code python บรรทัดที่ 411-427
32 - บรรทัดที่ 413 – 418 เป็นการÿร้างĀน้าต่างโดยใช้ชุดคำÿั่งของ ttkbootstrap โดยกำĀนดเป็น Āน้าต่าง และทำการตั้งชื่อแถบü่า Penman-monteith to find ETo & ET และทำการÿร้าง frame โดยใช้ Notebook และÿร้างแถบชื่อขึ้นมาตามที่กำĀนด - บรรทัดที่ 420 – 422 ทำการÿร้างปุ่มกดโดยใĀ้มีข้อคüาม Calculate ETo and ET โดยมีคำÿั่งใĀ้ ใช้ฟังก์ชัน calculate_eto และใĀ้มีรูปแบบของปุ่มเป็นแบบที่กำĀนดโดยใช้ ttkbootstrap และทำการปรับ ตำแĀน่งและขนาดของปุ่มโดยใช้ Grid - บรรทัดที่ 425 – 427 ทำการปรับแต่งปุ่มโดยใช้ configure โดยเป็นการปรับแต่ง Font และขนาด และใĀ้ปุ่มใช้ Style ที่ได้กำĀนดไü้ รูปที่ 31 แÿดง code python บรรทัดที่ 428-434 บรรทัดที่ 428 – 429 เป็นการทำ Label และตั้งชื่อü่า Eto & ET Value โดยทำการตั้งรูปแบบ bootstyle L เป็นแบบ primary และทำการüาง Label โดยใช้คำÿั่ง Grid บรรทัดที่ 432 – 433 เป็นการกำĀนดรูปแบบการปรับแต่งโดยใĀ้ชื่อü่า my.TLabel และทำการปรับ font เป็นแบบ Helvetica ใĀ้เป็นตัüĀนาและมีขนาด 30 รูปที่ 32 แÿดง code python บรรทัดที่ 430-438 - บรรทัดที่ 435 – 436 ทำการÿร้าง Column ของ tab1 และทำการปรับขนาดทั้งÿองด้าน - บรรทัดที่ 439 - 440 ทำการปรับรูปแบบของปุ่มโดยทำการเปลี่ยน Font และ ขนาด รูปแบบและ ระยะของ Font และทำการปรับขนาด Font ของ Label และเปลี่ยน Font - บรรทัดที่ 443 ทำการเปลี่ยนแถบด้านบนของจอแÿดงผลใĀ้แÿดงผล และÿามารถใĀ้ผู้ใช้เปลี่ยน ขนาดของจอแÿดงผลได้
33 รูปที่ 33 แÿดง code python บรรทัดที่ 440-457 - บรรทัดที่ 445 ทำการ define function main - บรรทัดที่ 446 - 448 ใĀ้ root นั้นมีคำÿั่งเป็น Window โดยใช้รูปแบบที่กำĀนดและจากนั้นÿร้าง คำÿั่ง screen_width โดยใĀ้แÿดงขนาดของจอตามคำÿั่ง และตั้งชื่อของจอแÿดงผลü่า Main Window - บรรทัดที่ 451ทำการ define function open_image_window - บรรทัดที่ 452 ทำการซ่อนจอแÿดงผล Main Window - บรรทัดที่ 454 – 455 ทำการÿร้าง Toplevel โดยใĀ้มีชื่อü่า Information - บรรทัดที่ 458 – 462 ทำการเปิดรูปโดยใช้คำÿั่ง Image.open และใช้ ImageTk เพื่อใĀ้ตัü Python แÿดงผลได้ และทำการเพิ่ม Widget เข้าไปในĀน้าต่างของ Toplevel รูปที่ 34 แÿดง code python บรรทัดที่ 459-464 - บรรทัดที่ 465 บรรทัดที่ 46 ทำการ define function close_image_window - บรรทัดที่ 466 ทำการทำลายคำÿั่ง top ที่มีรูปแÿดงผลอยู่ - บรรทัดที่ 467 ทำการแÿดงผลจอ main อีกครั่ง - บรรทัดที่ 469 ทำเรียกใช้ protocol เพื่อใช้งานคำÿั่งด้านบน
34 รูปที่ 35 แÿดง code python บรรทัดที่ 466-477 - บรรทัดที่ 472 ใĀ้ขนาดคüามกü้างและคüามยาüของรูปมีขนาดเท่ารูปเดิม - บรรทัดที่ 473 – 476 ÿร้างเงื่อนไขโดยที่ü่าĀากรูปนั้นมีขนาดใĀญ่กü่าจอของผู้ใช้ใĀ้ทำการลบ บางÿ่üนออกเพื่อใĀ้แÿดงผลได้โดยไม่เกินขนาดของĀน้าจอ - บรรทัดที่ 479 – 482 ทำการปรับขนาดและตำแĀน่งของĀน้าต่างใĀ้ตรงกับการปรับขนาดใĀม่และ ทำการปรับขนาดและตำแĀน่งของĀน้าต่างใĀ้ตรงกับการปรับขนาด รูปที่ 36 แÿดง code python บรรทัดที่ 479-495 - บรรทัดที่ 485 – 487 ทำการบอก Program ü่า รูปที่ต้องการแÿดงผลนั้นอยู่ในที่ใดของคอมพิüเตอร์ - บรรทัดที่ 488 – 491 ทำการใช้ for เพื่อเปิดภาพโดยการเรียกใช้คำÿั่ง open_image_window โดยใĀ้คำÿั่งนี้เป็น loop ไปเรื่อยๆ จนกü่าผู้ใช้จะทำการปิดĀน้าต่างลง - บรรทัดที่ 494 – 500 ทำการเรียกใช้ฟังก์ชั่น main โดยที่ตัüฟังก์ชั่นนั้นเป็นตัü Program Āลัก และ ใĀ้ตัüโปรแกรมนั้นทำงานไปเรื่อยๆ ในลักþณะ loop จนกü่าผู้ใช้จะทำการปิด Program ลง
35 üิธีการใช้งานโปรแกรมคำนüณค่า ET , ETo , Water supply Āน้าต่างโปรแกรมคำนüณค่า ET , ETo , Water supply รูปที่ 37 แÿดงĀน้าต่างโปรแกรมคำนüณค่า ET , ETo , Water supply 1. ใÿ่ชื่อพืชที่ต้องการคำนüณค่า ET , ETo , Water supply รูปที่ 38 แÿดงĀน้าต่าง Plant Information
36 2. กดปุ่ม Calculate ETo & ET รูปที่ 39 แÿดงĀน้าต่าง Penman-monteith to find ETo & ET 3. ใÿ่ค่า Kc ของพืชที่ต้องการ คำนüณค่า ET , ETo , Water supply โดยดูจากตาราง “INFORMATION” รูปที่ 40 แÿดงตาราง INFORMATION รูปที่ 41 แÿดงĀน้าต่าง Input เพื่อใÿ่ค่า Kc ของพืช
37 4. ใÿ่ค่าüันในรอบปี รูปที่ 42 แÿดงĀน้าต่าง Enter the day in period 5. ใÿ่จำนüนÿถานที่ ที่ต้องการĀาค่า ET , ETo , Water supply รูปที่ 43 แÿดงĀน้าต่าง Enter the number of locations
38 6. กรอกค่าตัüแปรโดยใช้ข้อมูลจากÿถานีüัด ลงในโปรแกรม รูปที่ 44 แÿดงĀน้าต่าง Enter the following values for Wheat 7. ใÿ่ชื่อÿถานที่ปลูกพืชแต่ละÿถานที่ รูปที่ 45 แÿดงĀน้าต่าง Input เพื่อใÿ่ชื่อÿถานที่ปลูกพืช
39 8. โปรแกรมจะแÿดงĀน้าต่างเปรียบเทียบค่า ET ของพืชในแต่ละÿถานที่ รูปที่ 46 แÿดงĀน้าต่างเปรียบเทียบค่า ET ของพืชในแต่ละÿถานที่ 9. กดปุ่ม Calculate Water Supply เพื่อคำนüณปริมาณน้ำที่พืชต้องการในแต่ละÿถานที่ รูปที่ 47 แÿดงĀน้าต่าง Plant Information
40 10. ใÿ่ค่าพื้นที่ (ตารางเมตร) ของแต่ละพื้นที่เพื่อคำนüณปริมาณน้ำที่พืชต้องการในแต่ละÿถานที่ รูปที่ 48 แÿดงĀน้าต่าง Input เพื่อใÿ่ค่าพื้นที่เป็นตารางเมตร 11. โปรแกรมจะแÿดงĀน้าต่างปริมาณน้ำที่พืชต้องการในแต่ละÿถานที่ รูปที่ 49 แÿดงĀน้าต่างปริมาณน้ำที่พืชต้องการในแต่ละÿถานที่ 12.กดปุ่ม Save ETo and ET data to Excel เพื่อบันทึกค่า ETo และ ET เป็น Excel รูปที่ 50 แÿดงĀน้าต่าง Plant Information
41 13. เลือกไฟล์ที่ต้องการบันทึกค่า ETo และ ET รูปที่ 51 แÿดงการเลือกไฟล์ที่ต้องการบันทึกค่า ETo และ ET 14. ตัüอย่างข้อมูล ค่า ETo และ ET ที่ได้จากการคำนüณของโปรแกรม รูปที่ 52 แÿดงตัüอย่างข้อมูล ค่า ETo และ ET ที่ได้จากการคำนüณของโปรแกรม
42 บรรณานุกรม กรมชลประทาน กระทรüงเกþตรและÿĀกรณ์. (ม.ป.ป.). ปริมาณการใช้น้ำของพืชอ้างอิง. กกกกกกกÿืบค้น 1 กุมภาพันธ์ 2567, กกกกกกกจาก http://water.rid.go.th/hwm/cropwater/CWRdata/ETo/index.htm กรมชลประทาน กระทรüงเกþตรและÿĀกรณ์. (ม.ป.ป.). ÿูตรและÿมการประกอบของ Penman กกกกกกกMonteith. ÿืบค้น 2 กุมภาพันธ์2567, กกกกกกกจาก https://water.rid.go.th/hwm/cropwater/Special/Monteith.htm ธรรมนูญ แก้üคงคา. (ม.ป.ป.). การใĀ้น้ำชลประทานกับพืช. ÿืบค้น 5 กุมภาพันธ์2567, กกกกกกกจาก http://books.doa.go.th:8080/doa_elib-streaming/access.do?p=b2xkX2 กกกกกกกVsaWIlMkZtdWx0aW0lMkZlLWJvb2slMkZFQjAwMTY0LnBkZg==&m=stream ธีระพล ตั๊งÿมบุญ. (2554). เอกÿารประกอบการบรรยายĀลักÿตรการปรับปรุงระบบการจัดการน้ำ กกกกกกกด้านเกþตรชลประทาน เรื่องการใช้น้ำของพืช. ÿืบค้น 1 กุมภาพันธ์2567, กกกกกกกจาก http://kmcenter.rid.go.th/kmc10/data/article/2554/005.pdf üราüุธ üุฒิüณิชย์. (ม.ป.ป.). การคำนüณ ETo ของประเทýไทยโดยüิธี Penman – Monteith. กกกกกกกÿืบค้น 2 กุมภาพันธ์2567, จากhttps://irre.ku.ac.th/pubart/pdf/23-EToT.pdf ÿำนักüิจัยและพัฒนากรมชลประทาน และÿำนักบริĀารจัดการน้ำและอุทกüิทยา. (2562). กกกกกกกการýึกþาค่าÿัมประÿิทธิ์การใช้น้ำ (Kc) ของĀญ้าแฝกพันธุ์ýรีลังกา พันธุ์ร้อยเอ็ด กกกกกกกพันธุ์กำแพงเพชร 1 และพันธุ์ÿงขลา 3. ÿืบค้น 1 กุมภาพันธ์2567, กกกกกกกจากhttps://hectortarr.arda.or.th/api/uploaded_fle/VKa7d7B43wLSjXTqbpCrM อภันตรี ยุทธพันธ์(2551). การพยากรณ์ýักย์การคายระเĀยน้ำของพืชโดยใช้ข้อมูลจากแบบจำลอง กกกกกกกการพยากรณ์อากาýเชิงตัüเลข “Unifed”. ÿืบค้น 1 กุมภาพันธ์2567, กกกกกกกจากhttp://www.arcims.tmd.go.th/Research_fles/The%20Forecasting%20of กกกกกกก%20Potential%20Evapotranspiration%20by%20Using%20Product%20of%20 กกกกกกกNumerical%20Weather%20Prediction%20Unifed.pdf