Aplikasi Pengolahan Data Hujan
Pengembangan tiga aplikasi web pengolahan data hujan menggunakan python
Dalam analisis hidrologi, pengolahan data hujan merupakan proses yang penting. Dengan membesarnya penyimpanan data dan permintaan pengolahan data yang lebih cepat, diperlukan solusi teknologi yang dapat menjawab tantangan tersebut. Dikembangkan tiga aplikasi pengolahan data hujan berbasis web yang mampu mempersingkat proses pengerjaan pengolahan data hujan dan mengurangi kekeliruan yang terjadi. Aplikasi yang telah dikembangkan yaitu Rainfall Stations Explorer, Rainfall Data Explorer, dan Frequency Analysis.
1 Aplikasi Pengolahan Data Hujan
Aplikasi Pengolahan Data Hujan merupakan tiga aplikasi web yang dapat membantu saat pengolahan data hujan berupa penyimpanan data hingga analisis frekuensi. Aplikasi ini menerapkan ilmu hidrologi yang digunakan di Indonesia1.
1.1 Rainfall Stations Explorer
Rainfall Stations Explorer atau fiako-stations
adalah aplikasi web yang dapat digunakan untuk mengeksplorasi data hujan harian yang tersedia di database. Dari aplikasi ini dapat memperoleh informasi kelengkapan data dan akusisi data hujan harian dengan mudah dan cepat. “Demo” disini diartikan menggunakan dataset publik atau acak dan hanya berfungsi untuk mendemonstrasikan fungsi aplikasi. Demonstrasi aplikasi bisa dilihat pada Gambar 1.1 dengan tabel informasi di Tabel 1.1.
Judul Aplikasi | Rainfall Stations Explorer |
Kode Aplikasi | fiako-stations |
Versi Aplikasi | v3.1.0 (15 November 2022) |
Alamat Aplikasi | demo-fiako-stations.herokuapp.com |
Source Code | fiakoenjiniring/demo-stations |
1.2 Rainfall Data Explorer
Rainfall Data Explorer atau hidrokit-rainfall
adalah aplikasi web yang dapat digunakan untuk menganalisis data hujan harian. Dari aplikasi ini dapat memperoleh informasi hujan maksimum, total hujan, hari hujan, hari kering, dan kejadian hujan maksimum setiap periode yang ditentukannya dengan presentasi menggunakan visualisasi data. Grafik kumulatif tahunan dan konsistensi (kurva massa ganda) juga ditambahkan sejak versi v1.1.x. Demonstrasi aplikasi bisa dilihat di Gambar 1.2 dengan tabel informasi di Tabel 1.2.
Judul Aplikasi | Rainfall Data Explorer |
Kode Aplikasi | hidrokit-rainfall |
Versi Aplikasi | v1.3.0 (15 November 2022) |
Alamat Aplikasi | hidrokit-rainfall.herokuapp.com |
Source Code | fiakoenjiniring/rainfall |
1.3 Frequency Analysis
Frequency Analysis (sebelumnya dikenal Frequency Analysis in Hydrology) atau fiako-anfrek
adalah aplikasi web yang dapat digunakan untuk menghitung parameter statistik, jenis sebarannya (distribusi), analisis frekuensi, dan uji kecocokan distribusi. Output aplikasi ini berupa visualisasi hasil perhitungan dan tabel/teks berupa .csv/.txt. Demonstrasi aplikasi bisa dilihat di Gambar 1.3 dengan tabel informasi di Tabel 1.3.
Judul Aplikasi | Frequency Analysis |
Kode Aplikasi | fiako-anfrek |
Versi Aplikasi | v1.1.0 (15 November 2022) |
Alamat Aplikasi | fiako-anfrek.herokuapp.com |
Source Code | fiakoenjiniring/anfrek |
2 Pengembangan Aplikasi
Pengembangan aplikasi ini tidak mengikuti template yang sudah tersedia sehingga penulisan kode ataupun strukturnya yang dihasilkan masih perlu dievaluasi kembali. Dalam bab ini, akan dibahas informasi mengenai development aplikasi sehingga memudahkan developer membaca source code atau mengembangkannya.
2.1 Dependencies
Pengembangan aplikasi ini dibangun menggunakan bahasa pemrograman python. Daftar package/library yang digunakan dalam pengembangan aplikasi disajikan dalam bentuk tabel di Tabel 2.1.
Package/Library | fiako-stations |
hidrokit-rainfall |
fiako-anfrek |
---|---|---|---|
python==3.9.13 |
✔️ | ✔️ | ✔️ |
pandas==1.5.1 |
✔️ | ✔️ | ✔️ |
dash==2.7.0 |
✔️ | ✔️ | ✔️ |
dash-bootstrap-components==1.2.1 |
✔️ | ✔️ | ✔️ |
dash-bootstrap-templates==1.0.7 |
✔️ | ✔️ | ✔️ |
python-box==6.1.0 |
✔️ | ✔️ | ✔️ |
pyyaml==6.0 |
✔️ | ✔️ | ✔️ |
dash-auth==1.4.1 2 |
✔️ | ❌ | ❌ |
geopy==2.3.0 |
✔️ | ❌ | ❌ |
pytables==3.7.0 |
✔️ | ❌ | ❌ |
hidrokit==0.4.1 |
❌ | ✔️ | ✔️ |
statmodels==0.13.5 |
❌ | ✔️ | ❌ |
scipy==1.8 3 |
❌ | ❌ | ✔️ |
environment.yml (conda) | env | env | env |
requirements.txt (venv) | env | env | env |
Pengembangan aplikasi ini menggunakan sistem operasi Windows 11 dan miniconda. Informasi environment untuk setiap aplikasi sudah tersedia di repository dengan nama file environment.yml
(conda) atau requirements.txt
(venv). Beberapa package/library tambahan dalam development antara lain black
, flake8
untuk code-formatting atau linting. Untuk pengembangan visualisasinya menggunakan fitur notebook yang tersedia di VSCode. Alternatifnya menggunakan Google Colab, hanya perlu diperhatikan untuk versi setiap library yang digunakan4.
2.2 Struktur Aplikasi
Aplikasi ini terdiri beberapa file atau komponen yang saling berhubungan. Pada dasarnya aplikasi berpusat pada file app.py
sebagai file utama menjalankannya aplikasi. Daftar file yang digunakan dalam aplikasi dapat dilihat di Tabel 2.2.
Filename | Kegunaan | Catatan |
---|---|---|
app_config.yml |
Konfigurasi aplikasi dalam bentuk .yml |
- |
pyconfig.py |
Mengubah app_config.yml menjadi objek appConfig |
Hanya digunakan untuk membaca app_config.yml |
pytemplate.py |
Konfigurasi template untuk interactive plot plotly |
- |
pyfigure.py |
Membangkitkan objek figure grafik interaktif |
. |
pylayoutfunc.py |
Kumpulan fungsi terkait tampilan/layout aplikasi | . |
pylayout.py |
File utama untuk menyimpan layout aplikasi | . |
pyfunc.py |
Kumpulan fungsi umum yang digunakan dalam aplikasi | . |
app.py |
File utama aplikasi | Seluruh callback diatur dalam file ini |
Hubungan antara file bisa dilihat pada Gambar 2.1. Struktur aplikasi tersebut tidak begitu ketat sehingga beberapa file/modul yang seharusnya tidak digunakan di app.py
tetap dipanggil. Struktur ini hanya memudahkan developer untuk menyusun fitur ataupun menelusuri fungsi. Dengan struktur tersebut, harapannya memudahkan untuk developer atau kontributor untuk berkontribusi ataupun mengembangkan.
Struktur diatas masih bisa diperbaiki atau dikembangkan lagi seperti memisahkan callback ke file tersendiri.
2.3 Pengujian
Aplikasi ini tidak memiliki pengujian seperti unit test. Hal ini dikarenakan untuk pengujian tersebut memakan waktu pengembangan aplikasi. Pada Dash
versi v2.6
, fitur unit tests sudah ditambahkan, sehingga memungkinkan pada pengembangan lanjutannya menyertakan unit test. Akan tetapi, aplikasi ini tetap melalui tahap pengujian, hanya saja dilakukan secara manual dan mandiri.
Aplikasi pengolahan data hujan hanya fokus pada visualisasi. Jadi, beberapa fitur analisis itu tergantung package/library yang digunakan pada aplikasinya. Untuk fiako-stations
tidak ada proses analisis sehingga pengujian hanya sebatas visualisasi dan interaktif antar komponennya. Pada hidrokit-rainfall
dan fiako-anfrek
bergantung dengan paket hidrokit
, sehingga untuk hasil analisis akan bergantung pengujian pada paket tersebut.
Pengujian dimulai dengan memeriksa interaksi komponen dengan melihat visualisasi dan outputnya sesuai ekspetasi. Jika tidak sesuai ekspetasi, kembali lagi ke tahap pengembangan, tapi jika sesuai ekspetasi bisa dilanjutkan ke tahap publikasi. Proses pengujian manual ini dapat diilustrasikan seperti Gambar 2.2.
2.4 Open-Source dan GitHub
Setelah hasil aplikasi memuaskan dan dapat digunakan, aplikasi dirilis dalam bentuk proyek open-source di GitHub. Ketiga aplikasi menggunakan lisensi MIT. Karena proyek akan diserahkan ke komunitas, maka menyusun struktur dan mengikuti tata cara penulisan kode perlu diperhatikan.
Sebelum dipublikasikan ke publik, ada tahap refactoring dengan harapannya memudahkan developer lain membaca kode aplikasi. Setelah dipublikasikan di github, aplikasi bisa didemonstrasikan melalui deployment ke server, dan pengelolaan. Akan tetapi, tahap tersebut merupakan opsional dan tergantung kebutuhan saja. Pada akhirnya, setelah dipublikasikan di github, dikembalikan ke tanggung jawab komunitas untuk mengembangkannya ketika repository tidak ada pengelolanya. Alur publikasi seperti pada gambaran Gambar 2.3.
Sesuai ilustrasi diatas, aplikasi yang telah dipublikasikan diserahkan ke komunitas untuk mengembangkannya lebih lanjut. Dengan lisensi MIT, aplikasi juga bisa dimodifikasi dan dirilis dengan lisensi yang berbeda6. Pada tahap terakhir mengacu pada pengembangan dengan menggunakan Open Source Software Development.
3 Fitur Aplikasi
Tiga aplikasi yang telah dipublikasikan memiliki fitur-fitur yang dapat membantu pekerjaan analisis hidrologi dari penyimpanan/pengambilan data hujan hingga analisis frekuensi.
3.1 Rainfall Stations Explorer
Fitur aplikasi Rainfall Stations Explorer (fiako-stations
) antara lain:
3.1.1 Eksplorasi stasiun hujan
Memudahkan eksplorasi stasiun hujan yang dimiliki. Demonstrasi fitur bisa dilihat pada Gambar 3.1 seperti navigasi dan interaksi di Gambar 3.1 (a).
3.1.2 Informasi stasiun terdekat
Mengetahui informasi stasiun terdekat terhadap titik lokasi tinjauan. Demonstrasi fitur bisa dilihat pada Gambar 3.2 seperti pengisian koordinat titik tinjau di Gambar 3.2 (a) dan interaksi peta dan tabel di Gambar 3.2 (b).
3.1.3 Kelengkapan data
Melihat secara sekilas kelengkapan data dengan heatmap. Demonstrasi fitur bisa dilihat pada Gambar 3.3 seperti grafik heatmap di Gambar 3.3 (a) dan grafik bar plot di Gambar 3.3 (b).
3.1.4 Memilih stasiun dan periode
Memilih stasiun dan periode yang akan digunakan untuk analisis. Demonstrasi fitur bisa dilihat pada Gambar 3.4 seperti navigasi saat memilih stasiun di Gambar 3.4 (a).
3.1.5 Visualisasi & download
Visualisasi & download data hujan harian dengan periode yang telah dipilih. Demonstrasi fitur bisa dilihat pada Gambar 3.5 seperti interaksi visualisasi di Gambar 3.5 (a), download data hujan harian di Gambar 3.5 (b), isi file CSV di Gambar 3.5 (c).
3.2 Rainfall Data Explorer
Fitur aplikasi Rainfall Data Explorer (hidrokit-rainfall
) antara lain:
3.2.1 Eksplorasi data hujan
Eksplorasi data hujan dalam bentuk table. Termasuk melakukan modifikasi dan filter. Demonstrasi bisa dilihat pada Gambar 3.6 seperti interaksi tabel di Gambar 3.6 (a).
3.2.2 Visualisasi data hujan
Visualisasi data hujan untuk setiap stasiun dalam bentuk line atau bar (jika datasetnya kecil). Demonstrasi bisa dilihat pada Gambar 3.7 seperti visualisasi dalam bentuk garis / line di Gambar 3.7 (a) dan dalam bentuk bar di Gambar 3.7 (b).
3.2.3 Analisis data hujan
Analisis data hujan yang mengeluarkan rekapitulasi/ringkasan untuk tiga periode yaitu biweekly, monthly, dan yearly.
3.2.4 Visualisai analisis data hujan
Mempresentasikan hasil analisis dalam bentuk visualisasi analisis data hujan berupa bar plot dan bubble chart. Demonstrasi fitur ini bisa dilihat pada Gambar 3.9. Visualisasi rekap bisa dilihat di Gambar 3.9 (a) atau lebih detailnya untuk maksimum dan jumlah hujan di Gambar 3.9 (b), jumlah hari kering dan basah di Gambar 3.9 (c), dan visualisasi kejadian hujan maksimum di Gambar 3.9 (d). Terdapat visualisasi baru sejak versi 1.1 yaitu kumulatif tahunan di Gambar 3.9 (e) dan konsistensi di Gambar 3.9 (f).
3.3 Frequency Analysis
Fitur aplikasi Frequency Analysis (fiako-anfrek
) antara lain:
3.3.1 Eksplorasi data deret waktu
Eksplorasi data deret waktu (time series) dengan visualisasi bar dan bubble. Demonstrasi fitur dapat dilihat pada Gambar 3.10 seperti interaksi tabel dan grafik di Gambar 3.10 (a).
3.3.2 Parameter statistik dan outlier
Menghitung parameter statistik dan outlier beserta visualisasinya. Demonstrasi fitur dapat dilihat pada Gambar 3.11 seperti visualisasi statistik & outlier di Gambar 3.11 (a), visualisasi distribusi di Gambar 3.11 (b), dan download hasil perhitungan di Gambar 3.11 (c).
3.3.3 Analisis frekuensi
Menghitung analisis frekuensi setiap distribusi dengan periode ulang beserta visualisasinya. Demonstrasi fitur dapat dilihat pada Gambar 3.12 seperti interaksi input di Gambar 3.12 (a), interaksi grafik di Gambar 3.12 (b), dan download hasil analisis di Gambar 3.12 (c).
3.3.4 Uji kecocokan distribusi
Melakukan uji kecocokan distribusi Chi-Square dan Kolmogorov-Smirnov beserta visualisasinya. Demonstrasi fitur ini dapat dilihat pada Gambar 3.13 seperti interaksinya di Gambar 3.13 (a), visualisasi uji kecocokdan distribusi di Gambar 3.13 (b), visualisasi hasil pengujian di Gambar 3.13 (c), dan bentuk download hasilnya di Gambar 3.13 (d).
4 Penggunaan Aplikasi
Dalam penggunaan aplikasi pengolahan data hujan terdapat langkah yang harus dilakukan untuk aplikasi fiako-stations
di Bab 4.1. Dan ketiga aplikasi ini pada akhirnya juga merupakan satu kesatuan yang dapat membantu pekerjaan analisis hidrologi seperti dijelaskan pada Bab 4.2.
4.1 Persiapan aplikasi fiako-stations
Berbeda dengan aplikasi lain yang cukup langsung digunakan dengan memberikan data ke aplikasi. Pada aplikasi fiako-stations
, terdapat langkah-langkah yang harus dilakukan atau diperhatikan agar aplikasi bekerja sesuai dengan harapan pengguna. Berikut langkah-langkah yang harus dilakukan sebelum menggunakan aplikasi fiako-stations
:
- Mengompilasi dataset (bisa berupa .xlsx / .csv) menjadi format HDF5 (.h5). Contoh kompilasi dataset hujan harian dari CSV ke format HDF5 bisa dilihat di notebook: Compile Rainfall Dataset to HDF5.
- Setelah memiliki dataset berbentuk HDF5, pengguna harus menjalankan dua python script yaitu
run_completeness.py
kemudianrun_metadata.py
. Untuk membangkitkan kelengkapan data dan metadata setiap stasiun yang ada di aplikasi. - Aplikasi bisa dijalankan ketika kelengkapan data dan metadata terbaru (dengan dataset baru) sudah tersedia.
Proses tersebut bisa dilihat pada Gambar 4.1.
flowchart LR rawdata[Data Mentah] storedata[Dataset HDF5 di aplikasi] completescript[Menjalankan <code>run_completeness.py</code>] metadatascript[Menjalankan <code>run_metadata.py</code>] outcomplete[Completeness HDF5] outmetadata[Metadata CSV] aplikasi[["Aplikasi <code>fiako-stations</code>"]] runapp["Jalankan Aplikasi"] rawdata -- Kompilasi Dataset --> storedata completescript --> metadatascript metadatascript --> outmetadata storedata --> completescript completescript --> outcomplete storedata -.- runapp outcomplete -.- runapp outmetadata -.- runapp runapp --> aplikasi
fiako-stations
.4.2 Alur kerja aplikasi
Ketiga aplikasi diatas dapat membantu proses analisis hidrologi dari menyimpan data hingga analisis frekuensi. Berikut proses analisis hidrologi menggunakan ketiga aplikasi:
- Setelah memperoleh koordinat lokasi yang ditinjau, masukkan titik koordinat tersebut di aplikasi
fiako-stations
. - Dari aplikasi
fiako-stations
diperoleh hujan harian seluruh stasiun dengan format CSV. - Hasil dari aplikasi
fiako-stations
dapat langsung digunakan sebagai input di aplikasihidrokit-rainfall
. - Resample data hujan per periode yang dihasilkan dari aplikasi
hidrokit-rainfall
harus diolah kembali secara manual dan mandiri. - Proses manual ini bisa termasuk menghitung hujan wilayahnya (poligon thiessen), merekap hujan tahunan maksimum, koreksi data hujan harian. Dari proses manual ini bisa juga dimasukkan kembali ke aplikasi
hidrokit-rainfall
. - Setelah memperoleh hasil final dari aplikasi
hidrokit-rainfall
dan mengolahnya dalam bentuk ringkasan untuk analisis frekuensi, file CSV tersebut bisa digunakan sebagai input di aplikasifiako-anfrek
. - Hasil dari
fiako-anfrek
berupa analisis frekuensi & uji kecocokan distribusi bisa dioleh menjadi laporan ataupun digunakan sebagai analisis berikutnya. Dan laporan tersebut bisa juga disampaikan ke engineer lain untuk diperiksa ataupun dievaluasi.
Proses tersebut dapat dilihat ilustrasinya dalam bentuk sequence diagram di Gambar 4.2.
%%{ init: { 'sequence': {'useMaxWidth': false, 'showSequenceNumbers': true }, 'theme': 'forest' } }%% sequenceDiagram actor user as Engineer 1 participant stations as FIAKO-STATIONS participant rainfall as HIDROKIT-RAINFALL participant anfrek as FIAKO-ANFREK actor super as Engineer 2 user->>stations: Titik koordinat Note over user, stations: INPUT: latitude, longitude activate stations %% stations --> user: evaluasi dan pengambilan keputusan stations ->> rainfall: Hujan harian<br/>seluruh stasiun Note over stations, rainfall: OUTPUT: CSV deactivate stations activate rainfall %% rainfall --> user: evaluasi dan pengambilan keputusan rainfall ->> user: Resample data hujan per periode Note over rainfall, user: OUTPUT: CSV deactivate rainfall activate user Note right of user: Proses manual opt Evaluasi ulang/Koreksi user -->> rainfall: Hujan harian (wilayah / koreksi) Note over user, rainfall: INPUT: CSV deactivate user activate rainfall rainfall ->> user: Resample data hujan per periode Note over rainfall, user: OUTPUT: CSV deactivate rainfall activate user end user ->> anfrek: Hujan wilayah maksimum tahunan Note over user, anfrek: INPUT: CSV deactivate user activate anfrek %% anfrek --> user: evaluasi dan pengambilan keputusan anfrek ->> user: Analisis frekuensi &<br>Uji kecocokan distribusi Note over anfrek, user: OUTPUT: CSV deactivate anfrek activate user user ->> super: Laporan analisis data hujan Note over user, super: REPORT/DELEGATE deactivate user
Dari diagram diatas dapat disimpulkan juga bahwa aplikasi pengolahan data hujan ini dapat membantu kinerja pengguna lebih cepat mengevaluasi, menganalisis, dan menghasilkan analisis data hujan sampai analisis frekuensi.
5 Kekurangan Aplikasi
Ketiga aplikasi ini jauh dari sempurna dan masih banyak yang bisa diperbaiki dan dikembangkan lagi. Berikut kekurangan atau batasan aplikasi pengolahan data hujan:
- Tidak adanya pengujian (unit test) untuk setiap fungsi yang tersedia di aplikasi.
- Mengevaluasi paket tambahan seperti
hidrokit
, karena pakethidrokit
masih dalam tahap pengembangan dini. - Layout aplikasi yang tidak konsisten antar aplikasi.
Selain hal tersebut, terdapat juga beberapa kekurangan/batasan yang diketahui untuk masing-masing aplikasi.
5.1 Rainfall Stations Explorer
- Penentuan data stasiun hujan terdekat masih berdasarkan radius dari titik tinjau. Seharusnya berdasarkan DAS dari titik tinjau/outlet.
- Proses pembuatan dataset/dataabse masih bersifat case-by-case.
5.2 Rainfall Data Explorer
- Perlu dilakukan koreksi ataupun analisis lebih lanjut sebelum digunakan di aplikasi
fiako-anfrek
. Seperti:- Koreksi dari informasi kurva massa ganda.
- Menghitung hujan wilayah.
- Harus melakukan pengolahan tabel setelah menerima hasil analisis dalam bentuk CSV.
5.3 Frequency Analysis
- Penggunaan distribusi Log Pearson III harus dievaluasi kembali. Hal ini terkait perilaku pada fungsi
pearson
discipy
. Saat ini, aplikasi harus menggunakanscipy
versi1.8
untuk menghasilkan nilai yang diharapkan. Alternatif lainnya menggunakan sumber tabel di distribusi Log Pearson III. - Dasar teori mengenai penentuan kelas dan parameter untuk uji Chi-Square harus dievaluasi kembali.
6 Kesimpulan
Aplikasi pengolahan data hujan yang terdiri dari: 1. Rainfall Stations Explorer (fiako-stations
); 2. Rainfall Data Explorer (hidrokit-rainfall
); 3. Frequency Analysis (fiako-anfrek
), mampu membantu mempercepat proses analisis hidrologi.
Catatan Kaki
Aplikasi ini bergantung pada paket
hidrokit
yang menerapkan ilmu hidrologi dalam bentuk python.↩︎dash-auth
hanya digunakan untuk aplikasifiako-stations
internal.↩︎versi
scipy
harus menggunakan versi1.8.x
. Hal ini terkait fungsi distribusi pearson. Untuk lebih jelasnya bisa membaca isu hidrokit/hidrokit#228.↩︎Per tanggal 18 November 2022, Google Colab masih menggunakan python versi
3.7
.↩︎Terdapat perbedaan antara artikel ini dengan makalah PIT HATHI ke-39. Gambar ini merupakan gambar terbaru yang telah dikoreksi.↩︎
Harap membaca lisensi masing-masing aplikasi untuk lebih jelasnya.↩︎
Penggunaan Kembali
Sitasi
@misc{saktimegariansyah2022,
author = {Taruma Sakti Megariansyah},
title = {Aplikasi Pengolahan Data Hujan},
date = {2022-11-22},
url = {https://manual.fiako.engineering/hidrokit/webapps-rainfall.html},
langid = {id},
abstract = {Dalam analisis hidrologi, pengolahan data hujan merupakan
proses yang penting. Dengan membesarnya penyimpanan data dan
permintaan pengolahan data yang lebih cepat, diperlukan solusi
teknologi yang dapat menjawab tantangan tersebut. Dikembangkan tiga
aplikasi pengolahan data hujan berbasis web yang mampu mempersingkat
proses pengerjaan pengolahan data hujan dan mengurangi kekeliruan
yang terjadi. Aplikasi yang telah dikembangkan yaitu Rainfall
Stations Explorer, Rainfall Data Explorer, dan Frequency Analysis.}
}