“InaSAFE hadir dengan sejumlah bahaya yang telah didefinisikan sebelumnya. Pada latihan kali ini akan mencoba bagaimana untuk menambahkan definisi bahaya yang baru”
Sebagian besar fungsionalitas dari InaSAFE diatur oleh sebuah sistem metadata yang sederhana yang mendefinisikan bahaya, keterpaparan dan konsep perilaku lainnya. Sistem ini disebut sebagai 'definisi' dan diimplementasikan melalui kumpulan file python sederhana yang berisi kamus (seperti struktur pohon). Pada latihan kali ini, kita akan melihat langkah-langkah yang diperlukan untuk membuat jenis bahaya baru dan kontribusi balik ke InaSAFE.
Catatan Meskipun pada latihan kali ini memerlukan beberapa dasar coding python, tidak diperlukan kemampuan seorang pengembang perangkat lunak untuk menambahkan sebuah jenis bahaya baru di InaSAFE.
Pada latihan kali ini, kita akan menggunakan tumpahan kimia sebagai contoh jenis bahaya baru yang akan ditambahkan pada InaSAFE. Kita akan mengubah kode sumber dari InaSAFE, tetapi jangan khawatir jika nanti akan rusak - jika semuanya menjadi rusak, tinggal melakukan instalasi kembali / reinstall dari menu kelola dan install plugin. Setiap perubahan yang dibuat untuk kode sumber harus dilakukan menggunakan editor teks seperti Notepad++ atau Sublime Edit.
Goal: Menambah jenis bahaya baru untuk tumpahan kimia pada InaSAFE
~
mengacu kepada direktori home.hazard_generic
di file defninisi hazard dan salin semua blok ( semua sampai ketemu tanda tutup }
).hazard_generic
yang secara efektif akan memberikan 2 blok yang sama.hazard_all
pada bagian bawah hazard.py
sebagaimana bagian blok all hazard pada spesifikasi di bawah.hazard_classification.py
.generic_hazard_classes
kemudian salin.hazard.py
lagi dan mengganti 'classifications': [generic_hazard_classes, chemical_spill_hazard_classes],
Name | Expectation |
---|---|
Direktori kerja ❗ |
~/.qgis2/python/plugins/inasafe/safe/definitions |
Definisi bahaya / hazard ❗ |
hazard.py |
Blok hazard |
ganti hazard_generic menjadi hazard_chemical_spill |
Blok hazard |
ganti nilai 'key' dari 'hazard_generic' menjadi 'hazard_chemical_spill' |
Blok hazard |
ganti nilai 'name' dari 'Generic Hazard' menjadi 'Chemical Spill' |
Blok hazard |
ganti nilai 'description' menjadi 'Example chemical spill hazard' |
Blok all hazard |
masukan semua elemen baru 'hazard_chemical_spill' ke dalam daftar |
Hazard definitions ❗ |
Add |
Blok hazard classfication |
Ganti semua referensi ke 'generic_hazard_classes' menjadi 'chemical_spill_hazard_classes'. |
Blok hazard classfication |
atur nilai 'name' menjadi 'Chemical spill classes' |
Blok hazard classfication |
atur nilai 'description' menjadi 'A chemical spill example classification' |
Blok hazard classfication |
atur nilai 'citations' menjadi 'This example classification is not cited'. |
Blok hazard classfication |
ganti key : 'high' menjadi key : 'evacuation_zone'. |
Blok hazard classfication |
ganti nilai name pada key :'high' menjadi 'Evacuation zone'. |
Blok hazard classfication |
ganti key 'medium' menjadi key: 'danger_zone'. |
Blok hazard classfication |
ganti nilai name pada key : 'medium' menjadi 'Danger zone'. |
Blok hazard classfication |
ganti key : 'low' menjadi key : 'use_caution_zone'. |
Blok hazard classfication |
ganti nilai name pada key : 'high' menjadi 'Use caution zone'. |
Blok jenis / type |
tambahkan satu garis baru : chemical_spill_hazard_classes, |
Layer masukan |
Chemical spill, wards, worldpop_25 |
Pertanyaan analisis |
Pada kejadian tumpahan kimia, berapa banyak orang yang terdampak? Jumlahkan sesuai Wards |
Dalam proses yang kita ikuti pada latihan di atas, kita mengikuti suatu proses sederhana untuk memperkaya definisi pada InaSAFE. Ada banyak cara yang bisa anda buat untuk memodifikasi definisi bahaya. Sebagai contoh, anda dapat mendefinisikan tindakan tertentu pada daftar tindakan, anda dapat mendefinisikan penambahan klasifikasi (dan tidak perlu dibatasi sampai 3 kelas). Ketika mengkompilasi sebuah klasifikasi bahaya, anda harus memberikan perhatian khusus untuk properti tingkat pengungsi dan status terdampak dari setiap kelas karena akan menentukan logika untuk menghitung berapa banyak orang yang akan terdampak atau mengungsi ketika analisis dijalankan.
Jika anda berencana untuk lebih serius dalam memodifikasi definisi InaSAFE, anda perlu mempertimbangkan untuk menggunakan editor kode python yang lebih powerfull daripada hanya sekedar menggunakan teks editor yang sederhana. Dengan demikian, akan membuat lebih mudah untuk mengikuti logika bagaimana bahaya didefinisikan.
Dengan cara yang sama untuk mendifinisikan bahaya tertentu, eksposure tertentu juga dapat didefinisikan - In the same way that custom hazards can be defined, custom exposures can also be defined - meskipun dalam pengalaman kami hal ini adalah persyaratan yang kurang umum.
Lebih hati-hati ketika memperbaharui plugin InaSAFE anda jika anda mempunyai beberpa perubahan di lokal anda - karena akan menimpa pekerjaan anda.
Kami mendorong anda untuk berkontribusi dalam penambahan definisi bahaya yang baru, dan dikembalikan / dikontribusikan juga ke dalam Project InaSAFE. Jika anda melakukan ini, secara otomatis akan menjadi tersedia ketika pengguna lain memasang InaSAFE. Hal ini juga memastikan bahwa anda dapat meng-upgrade InaSAFE anda dengan mudah dan masih menggunakan definisi dari kontribusi anda. Anda hanya dapat melihat bahaya anda dalam versi Inggris sebelum diterjemahkan - proses tersejemahan akan dikelola setelah kode anda telah masuk ke dalam Project InaSAFE.
Cara paling sederhana untuk membagikan perubahan kita adalah dengan membuat sebuah tiket di GitHub dan tambahkan file anda yang telah diubah.
InaSAFE dapat dimodifikasi dengan mudah dengan mengedit sedikit file metadata python:
Apakah dengan cara ini juga dapat digunakan untuk menambahkan jenis keterpaparan baru pada InaSAFE:
Download the sample data for the lesson.