Implementasi algoritma D8, identifikasi danau dan algoritma aliran dengan Python dan Matplotlib.
Kode ini mengimplementasikan algoritma aliran menggunakan data DEM dan curah hujan. Lebih lanjut mengidentifikasi dan mengisi pitflag / danau dan mengembangkan algoritma drainase menggunakan model gravitasi menuju aliran danau. Untuk informasi lebih lanjut dan kode pseudo dari algoritma drainase lihat: www.geo-blog.com/lake-flow-algorithm
Kode ini dibagi menjadi empat tugas berbeda (lihat komentar di driver.py).
Diagram output "Struktur Jaringan - Sebelum Danau" menampilkan struktur jaringan aliran sebelum menghapus pitflags (jaringan tidak terhubung).

Latar belakang dalam gambar ini mewakili ketinggian, dengan warna kuning mewakili sel raster yang lebih tinggi dan warna biru yang menunjukkan sel raster rendah. Garis mewakili arah aliran. Arah aliran dihitung dengan algoritma standar D8, diperkenalkan oleh O'Callaghan & Mark (1984), yang melihat 8 sel tetangga dan menetapkan arah aliran ke tetangga terendah (lihat juga metode setDownnode () dari kelas flowraster di flow.py). Selain itu, ketika tidak ada sel tetangga yang lebih rendah dari sel itu sendiri ditandai dengan titik merah pada Gambar 1, mewakili "pitflag". Pitflag adalah sel raster yang tidak memiliki downnode, yaitu air tidak dapat mengalir di sel lain dari sel ini.
Tugas 2 menghitung laju aliran (dengan asumsi curah hujan konstan) menggunakan struktur jaringan dari tugas 1. Laju aliran dihitung dalam fungsi rekursif getFlow () . Perhatikan bahwa air tampaknya menghilang di danau / pitflag karena jaringan belum bergabung.

Gambar ini menunjukkan laju aliran sungai dengan hujan konstan (1mm per sel). Nilai kuning menunjukkan laju aliran yang tinggi sedangkan nilai biru menunjukkan laju aliran rendah.
Tugas 3 mengulangi tugas 2 menggunakan curah hujan non-konstan (dihasilkan secara acak)
Tugas 4 membuat model hidrologi lebih realistis dengan bergabung dengan daerah tangkapan air. Untuk melakukan ini, wastafel dan danau diidentifikasi dan arus keluar danau dihitung. Ini dilakukan dalam tiga langkah. Pertama, danau diidentifikasi dengan algoritma yang dimulai dengan setiap pitflag dan menciptakan jalan menuju tepi dengan selalu memilih tetangga terendah (mirip dengan algoritma D8). Titik tertinggi dari jalan ini mewakili arus keluar danau. Pada langkah kedua, danau yang diidentifikasi diisi hingga ketinggian yang sama dengan aliran keluar. Ketiga, aliran baru dengan gravitasi menuju aliran keluar danau dihitung untuk setiap danau.
Untuk menguji algoritma yang diimplementasikan, curah hujan yang masuk dan aliran yang dijumlahkan di pitflag di tepi dibandingkan. Kedua nilai harus sama.
Algoritma untuk menghitung aliran dengan gravitasi menuju aliran keluar danau.



Untuk tugas 5 data raster nyata (curah hujan dan DEM) diimpor dan dikonversi ke resolusi yang sama.
