Mendefinisikan bahaya baru dan klasifikasi bahaya pada InaSAFE

“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.

You try:

Goal: Menambah jenis bahaya baru untuk tumpahan kimia pada InaSAFE

  • Untuk memulai, buka IFCW dan perhatikan jenis bahaya yang tersedia pada tampilan awal.
  • Selanjutnya buka contoh project yang disediakan, anda akan melihat kejadian tumpahan kimia fiktif.
  • Catatan untuk semua instruksi, ~ mengacu kepada direktori home.
  • Catatan juga kapanpun membuat perubahan definisi hazard, anda perlu me-restart QGIS untuk mengetes perubahannya.
  • Arahkan direktori kerja anda menggunakan pengelola file anda.
  • Atur definisi file yang berisi definisi hazard menggunakan editor teks anda.
  • Cari definisi dari hazard_generic di file defninisi hazard dan salin semua blok ( semua sampai ketemu tanda tutup }).
  • Tempelkan di belakang blok hazard_generic yang secara efektif akan memberikan 2 blok yang sama.
  • Pada blok yang baru, ubah isi sebagaimana pada tabel dibawah bagian 'blok hazard'.
  • Setelah selesai melakukan perubahan blok hazard, tambahkan masukan baru ke blok hazard_all pada bagian bawah hazard.py sebagaimana bagian blok all hazard pada spesifikasi di bawah.
    *Simpan perubahan anda ke hazard.py dan restart QGIS.
  • Buka IFCW. Apakah anda melihat jenis bahaya baru disana?
  • Saat ini, bahaya tumpahan kimia menggunakan klasifikasi yang sama dengan bahaya generik (tinggi, sedang, rendah). Pada langkah selanjutnya kita akan membuat spesifikasi klasifikasi baru.
  • Buka file bernama hazard_classification.py.
  • Lihat pada blok bernama generic_hazard_classes kemudian salin.
  • Pada salinan blok, ganti semua hal seperti pada bagian Blok klasifikasi hazard di bawah.
  • Tambahkan klasifikasi bahaya ke daftar 'hazard_classification' pada bagian bawah di seksi 'types'
  • Anda perlu mendefinisikan bahaya untuk mendukung klasifikasi bahaya yang baru. Lakukan dengan mengedit hazard.py lagi dan mengganti 'classifications': [generic_hazard_classes, chemical_spill_hazard_classes],
  • SImpan perubahan anda dan restart QGIS. Tambahkan layer dari contoh data yang disediakan sebagaimana yang tertulis pad tabel di bawah.
  • Jalankan Wizard pembuat keyword dan sekarang anda dapat mendefinisikan kelas bahaya dan klasifikasi bahaya untuk tumpahan kimia, kemudian jalankan analisis.
  • Terakhir, lakukan analisis untuk pertanyaan yang ada pada tabel di bawah.

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 from safe.definitions.hazard_classifications import chemical_spill_hazard_classes to the top of hazard.py

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

Lebih lanjut tentang pendefinisian bahaya

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.

Check your knowledge:

  1. InaSAFE dapat dimodifikasi dengan mudah dengan mengedit sedikit file metadata python:

    1. Ya
    2. Tidak
  2. Apakah dengan cara ini juga dapat digunakan untuk menambahkan jenis keterpaparan baru pada InaSAFE:

    1. Ya
    2. Tidak

Further reading:

Download the sample data for the lesson.