การดำเนินการของอัลกอริทึม D8, การระบุทะเลสาบและอัลกอริทึมการไหลด้วย Python และ Matplotlib
รหัสนี้ใช้อัลกอริทึมการไหลโดยใช้ข้อมูล DEM และปริมาณน้ำฝน มันระบุเพิ่มเติมและเติมเต็ม pitflags / ทะเลสาบและพัฒนาอัลกอริทึมการระบายน้ำโดยใช้แบบจำลองแรงโน้มถ่วงต่อการไหลออกของทะเลสาบ สำหรับข้อมูลเพิ่มเติมและรหัสหลอกของอัลกอริทึมการระบายน้ำดู: www.geo-blog.com/lake-flow-algorithm
รหัสถูกแบ่งออกเป็นสี่งานที่แตกต่างกัน (ดูความคิดเห็นใน driver.py)
ไดอะแกรมเอาท์พุท "โครงสร้างเครือข่าย - ก่อนทะเลสาบ" แสดงโครงสร้างเครือข่ายการไหลก่อนที่จะลบ pitflags (เครือข่ายไม่ได้เชื่อมต่อ)

พื้นหลังในรูปนี้แสดงถึงระดับความสูงด้วยสีเหลืองที่แสดงถึงเซลล์แรสเตอร์ที่สูงขึ้นและสีฟ้าที่บ่งบอกถึงเซลล์แรสเตอร์ต่ำ เส้นแสดงทิศทางการไหล ทิศทางการไหลถูกคำนวณด้วยอัลกอริทึมมาตรฐาน D8 ซึ่งแนะนำโดย O'Callaghan & Mark (1984) ซึ่งดูที่ 8 เซลล์เพื่อนบ้านและตั้งทิศทางการไหลไปยังเพื่อนบ้านต่ำสุด นอกจากนี้เมื่อไม่มีเซลล์ใกล้เคียงต่ำกว่าเซลล์เองมันจะถูกทำเครื่องหมายด้วยจุดสีแดงในรูปที่ 1 ซึ่งเป็นตัวแทนของ "pitflag" Pitflags เป็นเซลล์แรสเตอร์ที่ไม่มี downnode เช่นน้ำไม่สามารถไหลในเซลล์อื่น ๆ จากเซลล์นี้
ภารกิจที่ 2 คำนวณอัตราการไหล (สมมติว่าปริมาณน้ำฝนคงที่) โดยใช้โครงสร้างเครือข่ายจากภารกิจ 1 อัตราการไหลจะถูกคำนวณในฟังก์ชันการเรียกซ้ำ getFlow () โปรดทราบว่าน้ำดูเหมือนจะหายไปในทะเลสาบ / pitflag เนื่องจากเครือข่ายยังไม่เข้าร่วม

รูปนี้แสดงอัตราการไหลของแม่น้ำที่มีฝนตกคงที่ (1 มม. ต่อเซลล์) ค่าสีเหลืองบ่งบอกถึงอัตราการไหลสูงในขณะที่ค่าสีน้ำเงินบ่งบอกถึงอัตราการไหลต่ำ
ภารกิจที่ 3 ทำซ้ำงาน 2 โดยใช้ปริมาณน้ำฝนที่ไม่ต่อเนื่อง (สร้างแบบสุ่ม)
ภารกิจที่ 4 ทำให้แบบจำลองอุทกวิทยาเป็นจริงมากขึ้นโดยการเข้าร่วมพื้นที่เก็บกักน้ำ ในการทำเช่นนี้จะมีการระบุอ่างล้างมือและทะเลสาบและคำนวณการไหลออกของทะเลสาบ สิ่งนี้ดำเนินการในสามขั้นตอน ก่อนอื่นทะเลสาบจะถูกระบุโดยอัลกอริทึมที่เริ่มต้นด้วย pitflag แต่ละอันและสร้างเส้นทางไปยังขอบด้วยการเลือกเพื่อนบ้านที่ต่ำที่สุดเสมอ (คล้ายกับอัลกอริทึม D8) จุดสูงสุดของเส้นทางนี้แสดงถึงการไหลออกของทะเลสาบ ในขั้นตอนที่สองทะเลสาบที่ระบุจะเต็มไปด้วยความสูงเท่ากับการไหลออก ประการที่สามการไหลใหม่ที่มีแรงโน้มถ่วงไปสู่การไหลออกของทะเลสาบถูกคำนวณสำหรับแต่ละทะเลสาบ
เพื่อทดสอบอัลกอริทึมที่นำมาใช้ปริมาณน้ำฝนที่เข้ามาและการไหลของการไหลที่รวมที่ pitflags บนขอบถูกนำมาเปรียบเทียบ ค่าทั้งสองจะต้องเหมือนกัน
อัลกอริทึมสำหรับการคำนวณการไหลด้วยแรงโน้มถ่วงต่อการไหลออกของทะเลสาบ



สำหรับภารกิจ 5 ข้อมูลแรสเตอร์จริง (ปริมาณน้ำฝนและ DEM) จะถูกนำเข้าและแปลงเป็นความละเอียดเดียวกัน
