PySheds

`'''PySheds'''` adalah sebuah pustaka (library) Python sumber terbuka yang dirancang khusus untuk memproses data model elevasi digital (DEM) secara cepat, terutama untuk keperluan analisis hidrologi, termasuk deliniasi (penentuan batas) daerah aliran sungai. Dengan pustaka ini, pengguna dapat secara otomatis menentukan batas-batas daerah tangkapan air (catchment area) dari data topografi.

`pysheds` dirancang untuk kinerja yang cepat, bahkan dengan kumpulan data elevasi yang besar, menjadikannya alat yang efisien untuk analisis hidrologi. Sebagai pustaka sumber terbuka, `pysheds` dapat digunakan dan dimodifikasi secara gratis, berbeda dengan perangkat lunak GIS komersial. Karena dibangun di Python, `pysheds` dapat dengan mudah diintegrasikan ke dalam alur kerja analisis data yang lebih besar menggunakan pustaka Python lainnya, seperti `[[NumPy]]`, `Pandas`, dan `GeoPandas`. Pustaka ini menawarkan berbagai fungsi tambahan untuk pemodelan hidrologi, seperti penghitungan jarak ke muara dan ekstraksi jaringan sungai.

## Sejarah
Awal mula `pysheds` adalah sebagai *pet project* dari pengembang utamanya, *Matt Bartos*. Tujuannya adalah untuk membuat pustaka Python sumber terbuka yang cepat dan efisien untuk memproses data model elevasi digital (DEM) untuk keperluan analisis hidrologi.

### Latar belakang dan motivasi
Pustaka ini diciptakan dengan mempertimbangkan kecepatan. Bartos menyatakan bahwa `pysheds` dirancang untuk mampu mendeliniasi grid arah aliran berukuran jutaan sel dalam hitungan detik, dan menghitung akumulasi aliran untuk grid puluhan juta sel dalam waktu kurang dari satu menit. `pysheds` dikembangkan sebagai alternatif sumber terbuka yang kuat dan mandiri untuk fungsi-fungsi hidrologi dasar yang biasanya ditawarkan oleh perangkat lunak GIS komersial, seperti ArcGIS. Sebagai pustaka Python, `pysheds` memudahkan pengguna untuk mengintegrasikan analisis hidrologi ke dalam alur kerja analisis data yang lebih luas, memanfaatkan ekosistem Python yang kaya dengan pustaka lain seperti NumPy, Pandas, dan Scikit-Image.

### Perjalanan dan rilis awal
Versi awal `pysheds` (v0.1) dirilis pada tanggal 26 Juni 2018 di PyPI (Python Package Index). Pada 15 Mei 2018, sebelum rilis perdananya, Bartos mempresentasikan `pysheds` kepada komunitas Earth Science Information Partners (ESIP), di mana ia memamerkan kemampuan pustaka tersebut dan membagikan tautan ke repositori GitHub-nya. Ini menandai perkenalan resmi `pysheds` ke khalayak yang lebih luas. Sejak rilis awal, pustaka ini terus berkembang dengan penambahan fitur-fitur baru dan peningkatan performa. Versi-versi baru dirilis secara berkala, menambahkan dukungan untuk berbagai metode perutean aliran dan meningkatkan versatilitas dalam analisis.

## Posisi dalam ekosistem GIS
`pysheds` dengan cepat mendapatkan pengakuan dalam komunitas Geospasial dengan Python karena kemudahannya, kecepatannya, dan sifatnya yang sumber terbuka. Pustaka ini menjadi alat yang berharga bagi para ilmuwan data, hidrolog, dan peneliti yang bekerja dengan data DEM, memungkinkan mereka untuk melakukan pemodelan hidrologi kompleks secara terprogram, reprodusibel, dan efisien.

## Cara kerja
Proses deliniasi DAS dengan `pysheds` bekerja berdasarkan alur kerja hidrologi yang umum, yang umumnya dimulai dari data DEM, yaitu representasi permukaan bumi dalam bentuk grid sel-sel elevasi. Berikut adalah langkah-langkah utamanya:

# **Pramuat data DEM**: Data elevasi digital (DEM) dimuat ke dalam objek `Grid` `pysheds`. Data ini sering kali berasal dari file raster seperti `.tif`.
# **Perbaikan topografi**: DEM sering kali memiliki *sink* (cekungan tanpa jalan keluar) dan *flat* (area datar) yang dapat mengganggu analisis aliran air. `pysheds` menyediakan fungsi untuk memperbaiki area-area ini agar aliran air dapat mengalir secara benar.
# **Penghitungan arah aliran (<code>flow direction</code>)**: `pysheds` menghitung arah aliran untuk setiap sel dalam grid. Secara *default*, ini dilakukan menggunakan skema D8 (delapan arah), yang mengarahkan aliran dari setiap sel ke satu dari delapan sel tetangga dengan penurunan elevasi tercuram.
# **Penghitungan akumulasi aliran (<code>flow accumulation</code>)**: Dengan menggunakan grid arah aliran, pustaka ini menghitung berapa banyak sel di hulu yang mengalir ke setiap sel. Sel-sel dengan akumulasi aliran tinggi menunjukkan lokasi sungai atau saluran air.
# **Deliniasi DAS**: Setelah aliran dan akumulasi aliran diketahui, Pengguna dapat menentukan "titik curah" (*pour point*), yaitu titik di mana Pengguna ingin menentukan batas DAS-nya. `pysheds` kemudian akan melacak semua sel di hulu yang mengalir ke titik tersebut untuk menghasilkan batas DAS.

## Fitur <code>pysheds</code>
Fitur-fitur hidrologi utama yang tersedia dalam `pysheds` mencakup berbagai tahap pemrosesan hidrologi, mulai dari pengkondisian DEM hingga analisis jaringan sungai dan pemetaan genangan.

Berikut adalah fungsi-fungsi hidrologi spesifik yang ditawarkan oleh `pysheds`:

### 1. Pengkondisian DEM (''DEM Conditioning'')
Fungsi-fungsi ini digunakan untuk mempersiapkan data elevasi digital (DEM) sebelum analisis aliran, seperti menghilangkan anomali yang dapat memengaruhi penentuan arah aliran:

* **<code>fill_pits</code>**: Mengisi lubang sel tunggal (*single-celled pits*) dalam DEM.
* **<code>fill_depressions</code>**: Mengisi depresi sel ganda (*multi-celled depressions*) dalam DEM.
* **<code>resolve_flats</code>**: Menghilangkan daerah datar (*flats*) dari DEM.
* **<code>detect_pits</code>**: Mendeteksi lubang sel tunggal.
* **<code>detect_depressions</code>**: Mendeteksi depresi sel ganda.
* **<code>detect_flats</code>**: Mendeteksi daerah datar.

### 2. Arah Aliran dan Akumulasi (''Flow Direction and Accumulation'')
Fungsi-fungsi ini menentukan bagaimana air mengalir melintasi permukaan dan seberapa banyak aliran yang terkumpul:

* **<code>flowdir</code>**: Menghasilkan kisi arah aliran (*flow direction grid*) dari DEM yang diberikan. `pysheds` mendukung skema perutean (routing) **D8** dan **D-infinity**.
* **<code>accumulation</code>**: Menghitung **akumulasi aliran** (jumlah sel di hulu setiap sel). Jika bobot (*weights*) diberikan, fungsi ini menghitung jumlah sel berbobot di hulu setiap sel.

### 3. Deliniasi Daerah Tangkapan (''Catchment Delineation'') dan Jarak Aliran
Fungsi-fungsi ini berfokus pada penentuan batas DAS dan pengukuran jarak yang relevan secara hidrologi:

* **<code>catchment</code>**: Mendeliniasi daerah aliran sungai (*watershed*) untuk titik buangan (*pour point*) yang diberikan.
* **<code>distance_to_outlet</code>**: Menghitung jarak (berbobot) dari setiap sel ke titik buangan yang diberikan, bergerak ke hilir (*downstream*).
* **<code>distance_to_ridge</code>**: Menghitung jarak (berbobot) dari setiap sel ke batas drainase asalnya (*originating drainage divide*), bergerak ke hulu (*upstream*).

### 4. Ekstraksi dan Analisis Jaringan Sungai (''River Network Analysis'')
Fungsi-fungsi untuk menganalisis dan mengekstraksi fitur jaringan sungai:

* **<code>extract_river_network</code>**: Mengekstrak segmen sungai dari daerah tangkapan dan mengembalikan objek geojson.
* **<code>stream_order</code>**: Menghitung ordo sungai (*stream order*), biasanya menggunakan ordo Strahlerr.
* **<code>extract_profiles</code>**: Mengekstrak segmen sungai dan mengembalikan daftar indeks saluran bersama dengan kamus yang menjelaskan konektivitas.
* **<code>compute_hand</code>**: Menghitung **ketinggian di atas drainase terdekat** (*height above nearest drainage*, **HAND**). HAND dapat digunakan untuk pemetaan genangan.

### 5. Metrik Sel Aliran (''Cell Flow Metrics'')
Fungsi-fungsi ini menghitung karakteristik topografi lokal antar sel:

* **<code>cell_dh</code>**: Menghitung penurunan elevasi (*drop in elevation*) dari setiap sel ke sel tetangga di hilirnya.
* **<code>cell_distances</code>**: Menghitung jarak dari setiap sel ke sel tetangga di hilirnya.
* **<code>cell_slopes</code>**: Menghitung kemiringan (*slope*) antara setiap sel dan sel tetangga di hilirnya.

## Lihat pula

* Badan Informasi Geospasial
* Google Earth
* Google Maps
* Google My Maps
* HEC-HMS
* OpenStreetMap
* Pemetaan Digital
* QGIS
* Sistem Informasi Geografis

## Referensi