วันพุธที่ 9 ตุลาคม พ.ศ. 2556

การจัดการไฟล์ dfs แบบต่างๆของ DHI ด้วยการเขียนโปรแกรม

ไฟล์ข้อมูลที่ใช้กับโปรแกรม MIKE ต่างๆนั้น จะมีนามสกุลขึ้นด้วย dfs แล้วตามด้วยตัวเลข 0, 1, 2

ไฟล์เหล่านี้ เป็นไฟล์ข้อมูลตามเวลา ที่เก็บข้อมูลจากจุดสำรวจ(0) จากแนวสำรวจ(1) หรือจากพื้นที่สำรวจ(2) ขึ้นกับเลขลงท้าย

โดยปกติแล้ว เราสามารถสร้าง แก้ไข ดัดแปลง และจัดการไฟล์ข้อมูลเหล่านี้ได้ด้วยโปรแกรม MIKE Zero

อย่างไรก็ตามกรณีที่ต้องการแก้ไข หรือดัดแปลง ไฟล์ข้อมูลเหล่านี้ ทีละมากๆ การเขียนโปรแกรมขึ้นมาจัดการ ก็มีความสะดวกมากกว่า และมีความยืดหยุ่นในการทำงานตามที่ต้องการได้มากกว่า

ตัวอย่างหนึ่งในการต้องการการจัดการข้อมูลด้วยการเขียนโปรแกรมเพิ่มเอง เช่น การดัดแปลงข้อมูลสำหรับงาน Real time ซึ่งต้องการปรับปรุงข้อมูลในไฟล์ dfs ต่างๆอัตโนมัติ

ในที่นี้ จะแนะนำคู่มือ และตัวอย่าง ซึ่งแนะนำวิธีการจัดการกับไฟล์ dfs ไว้อย่างละเอียด

หลังจากลงโปรแกรม MIKE ตัวใดตัวหนึ่งแล้ว โปรแกรมจะติดตั้งไปที่
C:\Program Files (x86)\DHI\2012

ซึ่งนอกจากติดตั้งโปแกรมแล้ว เราจะได้คู่มือ และตัวอย่าง ติดตั้งมาพร้อมกันนี้ด้วย

โดยคู่มือ และตัวอย่างสำหรับจัดการไฟล์ dfs นั้นจะอยู่ที่
C:\Program Files (x86)\DHI\2012\MIKE Zero\Manuals\MIKE_ZERO\FileFormats\DFS_Examples

ในรูปด้านล่าง เป็นตัวอย่างหนึ่ง ที่แสดงให้เห็นว่า เราสามารถเขียนโปรแกรมภาษา python ในการจัดการข้อมูล dfs ได้


อีกรูปตัวอย่าง แสดงให้เห็นลักษณะไฟล์ dfs ต่างๆที่รวมอยู่ในตัวอย่าง และคู่มือ


ตัวอย่างภาษาที่สามารถเขียนเพื่อจัดการข้อมูล dfs ได้ประกอบไปด้วย
C#, Python, และ CsScript เป็นต้น


แน่นอนว่า การเขียนโปรแกรมเพื่อจัดการข้อมูล ไม่ใช่เรื่องง่าย
แต่ข้อมูลเหล่านี้ แสดงให้เห็นว่า เราสามารถเขียนโปรแกรมเพื่อช่วยในการจัดการข้อมูล dfs ได้ทุกรูปแบบ ตามที่ต้องการ ทำให้เราสามารถประยุกต์ใช้ประโยชน์แบบจำลองที่มีอยู่ไม่ว่าจะกับสถานการณ์แบบ Real time หรือเป็นเครื่องมือช่วยตัดสินใจได้

ในกรณีที่ต้องการเขียนโปรแกรม เพื่อบริหารจัดการ ข้อมูล แบบจำลอง และผลรันของแบบจำลอง สำหรับการจำลองสถานการณ์น้ำแบบอัตโนมัติ (Real time mode) เพื่อใช้เป็นระบบช่วยตัดสินใจนั้น (DSS) ก็สามารถเขียนโปรแกรมดำเนินการเองได้ทั้งหมดโดยมีเนื้อหาที่ควรทำความเข้าใจสำหรับการดำเนินการมีดังต่อไปนี้

การเขียนโปรแกรมเพื่อจัดการข้อมูลแบบ dfs ที่ใช้ในโปรแกรม MIKEbyDHI

การแปลงผลรันแบบจำลอง MIKE11 เป็น ACSII ด้วยโปรแกรม res11read.exe

การสั่งรันแบบจำลอง MIKE 11 ด้วย batch file

และเนื่องจากแบบจำลอง version ใหม่ ไม่ได้รวมเอา manual ไว้ใน package แล้ว
ดังนั้นจึงได้นำเอา FileFormats ที่อยู่ใน version 2012 มาลงไว้ที่ link ด้านล่างนี้
เผื่อใครต้องการลองโหลดไปศึกษาดู

DFS File Formats Examples

วันอังคารที่ 8 ตุลาคม พ.ศ. 2556

การตั้งค่าใน Control Structure ของแบบจำลอง MIKE 11 เพื่อควบคุมการระบายน้ำ

ในแบบจำลอง MIKE 11 จะมีโมดูลสำหรับโครงสร้างควบคุมการไหลของน้ำ

ในชื่อย่อ SO หรือมาจาก Structure Operation

โมดูลย่อยนี้ สามารถนำมาใช้ในการเพิ่มโครงสร้างบริหารจัดการน้ำแบบต่างๆ


ประกอบไปด้วย ฝาย ท่อลอด สะพาน สถานีสูบน้ำ และอื่นๆ

สำหรับโครงสร้างที่นิยมนำมาใช้บ่อยมากๆคือ Control Str.

เป็นส่วนที่สามารถนำมาใช้กำหนดกฎเกณฑ์การไหล ภายใต้เงื่อนไขเพิ่มเติม

ทำให้มีความยืดหยุ่นในการควบคุมการไหลของน้ำได้สูง จึงสามารถนำมาใช้ได้ในหลายๆกรณี

สำหรับวันนี้ จะแนะนำการใช้ Control Str. สำหรับควบคุมการระบายน้ำโดยมีเงื่อนไขการระบายดังนี้

1 หากมีข้อมูลตรวจวัดการปล่อยน้ำ ให้ใช้ค่าจากการตรวจวัด
2 หากมีข้อมูลประมาณการการปล่อยน้ำ ให้ใช้ค่าจากการประมาณการ
3 หากมีการเปลี่ยนแปลงการปล่อยน้ำยังไม่ถึง 1 ชั่วโมง จะยังไม่เปลี่ยนแปลง
4 หากระดับน้ำ เท่ากับระดับน้ำจาก Rule Curve จะใช้การปล่อยน้ำเท่าเดิม
5 หากระดับน้ำ ต่ำกว่า ระดับน้ำจาก Rule Curve จะให้ปล่อยน้ำลดลง
6 หากระดับน้ำ สูงกว่า ระดับน้ำจาก Rule Curve จะให้ปล่อยน้ำเพิ่มขึ้น

จากเกณฑท์ควบคุมการระบายน้ำทั้ง 6 ข้อข้างบน จะเป็นการควบคุมให้การระบายน้ำเป็นไปอย่างถูกต้อง
ตามการบริหารจริง และยังเพิ่มเงื่อนไขไว้ต่อท้าย ในกรณีที่ หากไม่มีข้อมูลตรวจวัด ก็จะสลับกลับมาใช้การระบายน้ำโดยอิงตามเกณฑ์ของ Rule Curve ของเขื่อนนั้นๆแทน

การตั้งค่า Control Str. จะตั้งค่าใน Network file โดยเปิด Tabular View แล้วเลือกไปที่ Control Str.

กำหนดตำแหน่งที่ตั้งของโครงสร้างให้เรียบร้อย โดยต้องมี Name, Chainage และ ID ให้ครบ


เนื่องจากต้องการเงื่อนไขควบคุมการระบาย 6 ข้อ ดังนั้นให้กด Tab ที่ช่องข้อมูล Control Definition เพื่อเพิ่มช่องข้อมูลให้ครบ 6 และปรับเปลี่ยน Calculation Mode ให้เป็น Tabulated สำหรับทุกข้อ ยกเว้นข้อ 3 และ 4 ให้เป็น Unchanged


เลือกเงื่อนไขที่ 1 แล้วกดปุ่ม Details ตั้งค่าใน Logical Operands ให้ใช้ LO Type เป็น TS-Scalar และ Sign ใช้ ">" โดยมี Value เป็น 0 และ ให้ Browse หาไฟล์ที่เป็นปริมาณน้ำระบายจากการตรวจวัด
(ไฟล์ค่าการระบายน้ำ กรณีที่มีข้อมูล ให้กรอกข้อมูลจริง แต่หากช่วงเวลาใดไม่มีข้อมูล ให้กรอกเป็นค่า ติดลบ จะเป็นการบอกให้โปรแกรมรับรู้ว่า ไม่มีข้อมูล)


ในหน้า Control and Targetpoint ให้เลือก Control Type เป็น Time แล้ว Browse หาไฟล์การระบายน้ำไฟล์เดียวกับที่ใช้ในหน้า Logical Operands


ทำเช่นเดียวกันนี้ กับเงื่อนไขการระบายน้ำที่ 2 แต่เปลี่ยนมาใช้ไฟล์ข้อมูลประมาณการ การระบายน้ำแทน


สำหรับเงื่อนไขการระบายน้ำที่ 3 ในหน้า Logical Operands ให้เลือก LO Type เป็น ThisGate TSLGLC (โดย TSLGLC  ย่อมาจาก Time Since Last Gate Level Change) และเปลี่ยน Sign เป็น < พร้อมกับค่า Value เป็น 1 ชั่วโมง ซึ่งตัวเลขบอกระยะเวลาที่ต้องการคุมไม่ให้มีการปรับเปลี่ยนปริมาณการระบายอาจเปลี่ยนเป็นค่าอื่นได้ขึ้นกับความเหมาะสมของโครงสร้างในจุดนั้นๆ


สำหรับเงื่อนไขการระบายที่ 4 ในหน้า Logical Operands จะใช้ LO Type เป็น Hups (ระดับน้ำเหนือเขื่อน) เปลี่ยน Sign เป็น "=" และ Use TS-value เป็น Yes จากนั้น Browse หาไฟล์ที่เป็น Rule Curve ของเขื่อน


เงื่อนไขการระบายน้ำที่ 5 ตั้งค่าใน Logical Operands เหมือนเงื่อนไขที่ 4 แต่ใช้ Sign เป็น "<" แทน เท่ากับกรณีนี้จะทำงานเมื่อระดับน้ำต่ำกว่า Rule Curve และจะต้องเข้าไปตั้งค่าให้ลดการระบายน้ำต่อไป


ในหน้า Control - and Targetpoint ให้ใช้ตัว Control Type เป็น Qups กรณีนี้คือ ปริมาณน้ำไหลเข้าเขื่อน


ในหน้า Control Strategy เป็นตารางแสดงค่าระหว่าง Control Point Value VS Target Point Value ตัวอย่างนี้เป็นการตั้งค่าในกรณีเขื่อนมีการระบายสูงสุดไม่เกิน 1530 และตั้งค่าให้การระบาย น้อยกว่าน้ำไหลเข้าเขื่อน 30 ซึ่งมีผลทำให้ระดับน้ำสูงขึ้นหากระบายตามวิธีการนี้


สำหรับเงื่อนไขสุดท้าย ในหน้า Logical Operands ไม่จำเป็นต้องตั้งค่า แต่หน้า Control - and Targetpoint ให้ตั้งค่าเหมือนเงื่อนไขที่ 5 ส่วน Control Strategy ก็ตั้งค่าให้การระบาย สูงกว่าน้ำไหลเข้าเขื่อน เพื่อให้ระดับน้ำลดลง


เมื่อตั้งค่าเงื่อนไขการระบายครบหมดแล้ว ก็พร้อมจะนำไฟล์ Network ดังกล่าวไปทดสอบใช้
แต่อย่างไรก็ตาม ในกรณีที่มีการลดจำนวนหน้าตัดลำน้ำเหนือเขื่อน ให้เหลือเพียง 1-2 หน้าตัด เพื่อจำลองเพียงปริมาณน้ำในเขื่อนนั้น การคำนวณจะมี Stability น้อย ดังนั้นอาจปรับแก้ค่า Delta ใน Default Values ซึ่งอยู่ในไฟล์ HD parameter เพิ่มขึ้น เช่นเปลี่ยนจาก 0.5 เป็น 0.75 เป็นต้น
ส่วนรายละเอียดทางเทคนิคของพารามิเตอร์นี้ ให้ตรวจสอบดูจากคู่มือ Scientific documentation ของแบบจำลอง MIKE 11 ที่จะมาพร้อมกับการติดตั้งโปรแกรม


หลังจากตั้งค่าโครงสร้างแล้ว ควรจะตรวจสอบผลการทำงานของโครงสร้างนั้นๆด้วย
ว่าควบคุมการไหล ได้ตามที่ตั้งค่าไว้ทั้งหมดหรือไม่
ในกรณีตัวอย่างนี้ จะต้องตรวจสอบระดับน้ำในเขื่อน และการระบาย ว่าเป็นไปตามเงื่อนไข
ครบถ้วนหรือไม่



อัพเดทเพิ่มด้านล่างนี้เมื่อ 2013-10-11
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

ในกรณีต้องการตั้งค่าประตูระบายน้ำ เพื่อควบคุมระดับน้ำเหนือบานประตูให้คงที่

เราสามารถทำได้โดย เปลี่ยนรูปแบบของโครงสร้าง จากการควบคุมด้วย Discharge มาเป็น Sluice Formula


และต้องกรอกข้อมูลลักษณะของบานประตูให้ครบ รวมถึงฐานประตูด้วย

จากนั้น การควบคุมการระบายน้ำ ใน Control Definition จะมี 3 ข้อดังนี้


โดยข้อแรก จะตั้งค่าเช่นเดียวกับ Control Definition ข้อ 3 ของโครงสร้างก่อนหน้าที่
ซึ่งตั้งค่าให้ ThisGate-TSLGLC มีค่าน้อยกว่า 1 ชั่วโมง จะยังไม่มีการเปลี่ยนแปลง

ส่วนข้อ 2 จะตั้งค่าใน Detail โดยให้มี LO-Type เป็น Hups และตรวจสอบว่า มีค่าสูงกว่าระดับน้ำที่ต้องการควบคุม (เมื่อระดับน้ำสูงเกิน โปรแกรมจะเปิดบานเพิ่มขึ้น จนกว่าจะถึงระดับ Fully Open ซึ่งเป็นการพยายามลดระดับน้ำลง)

ส่วนข้อ 3 ไม่ต้องตั้งค่าใดๆ (การจะเข้ามาเงื่อนไขข้อนี้ ก็ต่อเมื่อ ระดับน้ำต่ำกว่าเกณฑ์ที่ต้องการ ดังนั้น โปรแกรมจะพยายามปิดประตู เพื่อลดการระบาย และทำให้ระดับน้ำสูงขึ้น)

จาก Control Definition ทั้ง 3 ข้อ ก็เพียงพอที่จะทำให้โครงสร้างนี้ สามารถควบคุมระดับน้ำเหนือบางประตู ได้ตามที่ต้องการแล้ว


วันศุกร์ที่ 4 ตุลาคม พ.ศ. 2556

ปรับปรุงค่าความจุเก็บกักน้ำของเขื่อนในแบบจำลอง MIKE11 (Configuration of Dam in MIKE11)

โดยทั่วไป การจำลองเขื่อนลงในแบบจำลอง 1 มิติ จะทำได้ยาก หากต้องการความแม่นยำสูง

โดยสิ่งที่ทำได้ง่ายสุดคือ การใส่หน้าตัดลำน้ำของเขื่อน เข้าไปในแบบจำลองให้ถี่ที่สุด

เพื่อให้หน้าตัดลำน้ำทั้งหมด สามารถอธิบายความจุของเขื่อนได้อย่างถูกต้อง ตรงกับความเป็นจริง

แต่การใส่ข้อมูลหน้าตัดลำน้ำเข้าไปถี่ๆ เป็นการบังคับให้แบบจำลองจำเป็นต้องคำนวณ

ที่ระยะระหว่างหน้าตัด (dx) สั้นลง และบังคับให้แบบจำลองต้องใช้ timestep สั้นลง

ทั้งหมดทำให้การคำนวณใช้เวลานานขึ้นมาก

อย่างไรก็ตาม การตั้งค่าเขื่อน ในแบบจำลอง MIKE11 ให้จำลองได้เหมือนสภาพจริงนั้น

มีเทคนิคง่ายๆในการทำ โดยที่ยังคงความไม่ซับซ้อนในการคำนวณ

ข้อสำคัญในการจัดการแบบจำลองคือ ปรับปรุงข้อมูลหน้าตัดลำน้ำ (เท่าที่มีอยู่ในอ่างเก็บน้ำ) ให้สามารถอธิบายพื้นที่เก็บน้ำ และความจุอ่างเก็บน้ำให้ถูกต้อง โดยไม่เพิ่มหน้าตัดลำน้ำอื่นๆที่ไม่จำเป็น

และใช้ Control Structure เป็นตัวกำหนดการระบายน้ำจากเขื่อน 

ดังนั้นข้อมูลที่ต้องใช้ในการทำงานประกอบด้วย

ข้อมูลโค้งความจุเขื่อนดังตัวอย่าง



และข้อมูลโค้งการบริหารเขื่อน (Rule curve) ดังตัวอย่าง


ปรับแต่งแบบจำลอง โดยให้เหลือเพียงส่วนของเขื่อน และพื้นที่เก็บน้ำเหนือเขื่อนเท่านั้น


เพิ่มโครงสร้างไว้ที่ตำแหน่งของเขื่อน


กำหนดโครงสร้างเป็นแบบ Control Structure และให้เป็นแบบ Discharge และ Close ไว้ก่อน โดยตำแหน่งของเขื่อน ให้วางอยู่ระหว่าง 2 หน้าตัดสุดท้าย ซึ่งจะเป็นตำแหน่งที่แบบจำลองจะคำนวณค่า Discharge ส่วนที่ตำแหน่ง 2 หน้าตัดสุดท้ายนั้น แบบจำลองจะคำนวณค่าระดับน้ำ (ปริมาณน้ำที่คำนวณในแบบจำลองคือปริมาณน้ำที่อยู่ในแต่ละหน้าตัด โดยมาจากพื้นที่หน้าตัดกับระดับน้ำ ในหน้าตัดนั้นๆ)


จากนั้น ตั้งค่า Boundary ให้ปลายฝั่งต้นน้ำ เป็น Discharge มีค่าคงที่ เป็น 0 และปลายน้ำ เป็นระดับน้ำ และคงที่ โดยให้ระดับน้ำสูงกว่าท้องคลองเล็กน้อยก็พอ
จากนั้นให้กำหนด Point source เข้าไปที่หน้าตัดสุดท้ายก่อนตำแหน่งของเขื่อน แล้ว Trial ค่า Discharge Inflow โดยทดสอบว่า ปริมาณน้ำเท่าไหร่จึงรันได้สำเร็จในช่วงเวลาที่กำหนด เช่นรัน 1 เดือน หากเติมน้ำเข้าเขื่อนมากไปด้วยหน้าตัดลำน้ำเดิมๆ อาจทำให้ระดับน้ำสูงเกิน จนรันไม่สำเร็จได้ แต่ก็ต้องได้ระดับน้ำมากพอ ที่จะตรวจสอบพื้นที่ผิวน้ำในเขื่อนได้

สำหรับไฟล์ HD11 ให้เพิ่มผลคำนวณโดยเลือก Flood Area ในส่วนของ Total ไว้ดังรูป


เมื่อสั่งคำนวณแล้ว จะได้ผลคำนวณเป็นไฟล์นามสกุล res11 ออกมาสองไฟล์ โดยไฟล์ที่มีชื่อตามที่เราตั้งค่าใน Result ไว้นั้น เราจะเปิดเพื่อตรวจสอบระดับน้ำที่หน้าตัดสุดท้ายก่อนเขื่อน

ทำโดยเลือกเมนู Plot/Timeseries จากนั้นเลือก List 


เลือกหน้าตัดที่ต้องการ ตามด้วยคลิกปุ่ม Show Values


จะได้ตารางแสดงค่าระดับน้ำพร้อมเวลาที่เกิดขึ้น ให้ Highlight ข้อมูลแล้ว Copy ไปแปะไว้ใน Excel


ทำเช่นเดียวกันกับไฟล์ผลคำนวณอีกไฟล์ที่จะมีชื่อตามที่เราตั้งค่าไว้ต่อท้ายด้วย HDAdd
โดยในไฟล์นี้ เราจะได้ค่า Flood Area ที่เวลาเดียวกันกับตารางระดับน้ำก่อนหน้านี้


จากนั้นทำการ Copy ข้อมูลพื้นที่ผิวน้ำดังกล่าว ไปวางคู่กับข้อมูลระดับน้ำ
แล้วตรวจสอบกับ พื้นที่ผิวน้ำที่เป็นค่าที่ได้จากโค้งความจุของเขื่อน ที่ระดับน้ำเดียวกัน
จะได้ตัวเลขพื้นที่ผิวน้ำที่ต้อง เพิ่ม หรือ ลด สำหรับระดับนั้นๆ
ตัวเลขพื้นที่ผิวน้ำที่เพิ่มหรือลดนี้ เราจะนำไปใช้ในหน้าตัดลำน้ำที่อยู่ในตำแหน่งก่อนเขื่อน

เปิดหน้าตัดลำน้ำ ที่ตำแหน่งก่อนเขื่อน


คลิกที่ปุ่ม View Processed Data จะได้ตารางแสดงข้อมูลของหน้าตัดนั้น พร้อมระดับน้ำและค่า Add.storage area (เบื้องต้นจะมีค่าเป็น 0 ทั้งหมด) จากนั้นให้ Copy พื้นที่ผิวน้ำที่ต้องการเพิ่มหรือลดจาก Excel มา Paste ลงไป (ระวัง ให้ข้อมูลตรงกัน ระหว่าง ระดับ กับค่าพื้นที่ผิวน้ำที่จะเพิ่มหรือลด)


เมื่อเพิ่มพื้นที่ผิวน้ำแล้ว ให้เซฟ แล้วรัน พร้อมกับ Trial ค่า Point source เพื่อให้ได้ระดับน้ำในช่วงเวลาที่รันมีระดับสูงพอให้ตรวจสอบความถูกต้องได้

เมื่อได้ผลรันใหม่แล้ว ให้ตรวจสอบเช่นเดิม โดย Plot ระหว่างค่าระดับน้ำกับพื้นที่ผิวน้ำ ว่าถูกต้องตรงกับข้อมูลจากโค้งความจุของเขื่อนหรือไม่ เพื่อเป็นการตรวจสอบซ้ำในกรณีที่มีการดำเนินการผิดขั้นตอน

แต่โดยปกติแล้ว การทำเนินการตามขั้นตอนดังกล่าวข้างต้น จะได้ผลพื้นที่ผิวน้ำที่ถูกต้อง หากเชคแล้วผิด หรือไม่ตรงกับข้อมูลตรวจวัด ให้ย้อนกลับไปตรวจสอบว่าขั้นตอนไหนผิดพลาด

เมื่อเสร็จขั้นตอนนี้ ก็จะได้หน้าตัดลำน้ำ ที่เป็นตัวแทนของอ่างเก็บน้ำ หรือเขื่อน ที่อธิบายระดับน้ำและปริมาณเก็บกักได้อย่างถูกต้อง พร้อมจะนำไปใช้ในการคำนวณในแบบจำลองรวมได้แล้ว

สำหรับกรณีการตั้งค่าการบริหารจัดการเขื่อนตาม Rule Curve นั้น ขอยกไปตอนต่อไปครับ





วันอังคารที่ 24 กันยายน พ.ศ. 2556

การลดจำนวน Points ใน Network ของแบบจำลอง MIKE11

ปัญหาหนึ่งในแบบจำลอง MIKE11 ที่พบเมื่อสร้างแบบจำลองสำหรับ

พื้นที่ศึกษาที่มีขนาดใหญ่ แล้วใช้ข้อมูลเส้นลำน้ำจากฐานข้อมูลเชิง GIS

คือ จำนวน Node หรือ Points ของเส้นลำน้ำ มีเยอะมาก (เกิน 50 000 Points)

แล้วมีผลทำให้การเปิดใช้งานหน้าต่างการจัดการข้อมูล Network มีปัญหา

ทำให้การเลื่อน ซูม การดู หรือจะแก้ไขค่าต่างๆ มีอาการหน่วงเป็นอย่างมาก

แต่หากจะลดจำนวน Points ของเส้นลำน้ำลงมากๆ

ด้วยวิธีใช้ระยะห่างของ node เท่าๆกัน ก็ทำให้เส้นลำน้ำ ไม่โค้งตามธรรมชาติเท่าที่ควร

ทำให้ลดจำนวน Node ไม่ได้อย่างที่ต้องการ

หากใครมีปัญหานี้ ต่อไปนี้เป็นวิธีแก้ไข โดยสมมุติว่ามี Network ที่สร้างเสร็จแล้ว

และมีจำนวน Points เยอะมากเกินและต้องการลดจำนวน Points ลง

ให้ทำตามขั้นตอนดังนี้

1) เปิดไฟล์ Network นั้นขึ้นมา แล้วเลือกเมนู Network/Export Network Data to Shape file



2) เลือกสร้างเฉพาะ River Network ดังรูป



3) เปิดเวบไซด์ http://www.mapshaper.org/ ซึ่งจะมีตัวช่วยในการลดจำนวน points ให้เลือก % ว่าจะลดจำนวน points เหลือเท่าไหร่ โดยขั้นตอนนี้ต้องทดสอบว่าลดเหลือเท่าไหร่ จึงยังได้เส้นลำน้ำที่ยังมีส่วนโค้งที่ยอมรับได้อยู่



4) การใช้งานเวบไซด์ดังกล่าว แนะนำให้เลือกวิธีการลด points แบบ modified Visvalingam จากนั้นให้ลากไฟล์ SHP วางลงไปบนหน้าเวบ แล้วทดสอบเลื่อน % ในการลด point และหากได้ % ที่ต้องการแล้วให้คลิกที่ ปุ่ม Shapefile เพื่อโหลดไฟล์ SHP ที่ทำการลดทอน point ลงแล้วกลับมา



5) ไฟล์ที่ได้กลับมาจะมีเพียงสองไฟล์ที่มีนามสกุล SHP และ SHX ส่วนไฟล์ DBF ให้ใช้ไฟล์เดิมได้เลย ดังนั้นเมื่อ โหลดไฟล์กลับมาแล้ว unzip แล้วให้ copy ไฟล์ DBF ไปไว้ด้วยกันด้วย ถึงจะใช้งานได้

6) กลับมาที่ Network แล้วเลือกเมนู Layer/Add remove layer เพิ่ม Layer ใหม่แล้ว เลือกชนิด Shape File แล้วโหลดไฟล์ SHP ที่ได้มาใหม่เข้ามา



7) ลบเส้นลำน้ำเดิมพร้อมทั้ง points ทั้งหมด (ลบใน Tabular view จะสะดวกกว่า)

8) แปลงไฟล์ SHP มาเป็นเส้นลำน้ำโดยเลือกเมนู Network/Generate network from shape file



9) หากไฟล์เดิมมีการ Link เส้นลำน้ำไว้ เราสามารถ Copy การ Link ของเดิม ใน Tabular view/Network/Branches ในตาราง Overview มา paste ลงไปใน Network ที่ทำใหม่ได้ โดยมีเทคนิคว่าจะต้องใช้เมนู Edit/Copy และ Edit/Paste ในการ copy และ paste (ใน version 2012 sp2 พบว่าไม่สามารถใช้ Shot cut Ctrl+C และ Ctrl+V ได้)



หวังว่าเทคนิคนี้จะช่วยให้ทำงานกับ Network ในแบบจำลอง MIKE11 ได้สะดวกมากขึ้น

การลดจำนวน points ในแบบจำลองลงได้ จะทำให้การทำงานกับแบบจำลองไม่หน่วงมาก ใช้งานได้คล่องตัวมากขึ้น และไม่มีผลกับผลคำนวณจากแบบจำลอง เว้นแต่กรณีที่ทำแผนที่น้ำท่วม ซึ่งความโค้งของเส้นลำน้ำ มีผลต่อแผนที่น้ำท่วมที่สร้างขึ้นมาด้วย

วันพฤหัสบดีที่ 19 กันยายน พ.ศ. 2556

การวิเคราะห์ระดับน้ำยกตัวเนื่องจากพายุ Storm Surge ด้วยโปรแกรม MIKE 21 FM

ในกรณีที่ต้องการคำนวณระดับน้ำที่ยกตัวเนื่องจากพายุ

ข้อมูลที่จำเป็นในการคำนวณคือ ระดับน้ำขึ้น น้ำลง ที่ Boundary ของแบบจำลอง

ซึ่งได้อธิบายวิธีการหาค่าระดับน้ำดังกล่าวไว้แล้วในบทความก่อนหน้านี้

สำหรับอีกข้อมูลหนึ่งที่ต้องใช้คือ ความเร็วลมที่เกิดขึ้นเนื่องจากพายุ

แต่โดยทั่วไปแล้ว เราจะได้ข้อมูลของพายุคือ ตำแหน่งที่แสดงการเคลื่อนที่ของพายุเท่านั้น

โดยจะมาพร้อมกับ เส้นรอบวงของพายุ ความเร็วสูงสุด และระดับความดันที่ต่ำกว่าพื้นที่โดยรอบ

ด้วยข้อมูลพายุดังกล่าว เราสามารถนำมาใช้ในการคำนวณความเร็วลม

สำหรับใช้เป็นข้อมูลนำเข้าแบบจำลองได้ด้วยโปรแกรม MIKE 21 Toolbox

โดยจะมีเครื่องมือช่วยคำนวณความเร็วลม จากข้อมูลตำแหน่งของพายุ



ในเครื่องมือนี้ หากใช้วิธีคำนวณความเร็วลมอย่างง่ายสุด จะต้องการข้อมูลของพายุประกอบไปด้วย

วันเวลา พิกัดของตาพายุ รัศมีของพายุ ความเร็วลมสูงสุด ความกดอากาศที่ศูนย์กลาง และความกดอากาศบริเวณรอบนอก



ในตัวอย่างนี้ ผมได้ทดสอบคำนวณการยกตัวของน้ำ จากกรณีพายุเกย์ ที่เกิดขึ้นเมื่อปี พ.ศ. 2532

โดยได้ข้อมูลพายุจากเวบไซด์


เมื่อตรวจสอบข้อมูลพายุที่ได้มาจะมีลักษณะดังรูป


เส้นทางพายุเกย์ เป็นดังรูปนี้

** รูปจาก http://www.jma.go.jp

หลังจากที่กรอกข้อมูลพายุในเครื่องมือครบแล้ว พร้อมกับระบุขนาดและจำนวณกริดที่จะให้สร้างข้อมูลลมแบบ 2 มิติ ก็สามารถสั่งรันเพื่อสร้างข้อมูลลมจากพายุได้ทันที

ตัวอย่างข้อมูลลมที่คำนวณได้จาก พายุเกย์



เมื่อได้ข้อมูลครบแล้ว ทั้งระดับน้ำที่ Boundary และลมจากพายุเกย์

ก็นำทั้งหมดมาคำนวณการยกตัวของน้ำในแบบจำลอง MIKE 21 FM

โดยตัวอย่างด้านล่างนี้ ได้ทดสอบเพื่อให้เห็นอิทธิพลของ น้ำขึ้นน้ำลง พายุ และผลรวมของทั้งคู่ (รูปเรียงตามลำดับ)



ในการใช้งานจริง จะต้องมีการปรับเทียบแบบจำลอง โดยหาข้อมูลเท่าที่มีบันทึกค่าระดับน้ำช่วงที่เกิดพายุไว้ นำมาปรับเทียบกับผลจากแบบจำลอง เพื่อให้มีความถูกต้องก่อนนำมาใช้งานเพื่อศึกษาในเหตุการณ์สมมุติอื่นๆต่อไป