Saya memiliki raster tipe habitat untuk wilayah tertentu di Skotlandia. Saya perlu membuat skenario habitat masa depan dengan perubahan habitat untuk menilai kelayakan populasi spesies burung.
Misalnya, di masa depan mungkin ada 10% lebih banyak kehutanan di daerah tersebut. Saya ingin mengubah peta saat ini dengan menambahkan secara acak kehutanan dalam blok dengan ukuran tertentu. Sejauh ini saya berpikir untuk memilih titik acak dari raster yang mengidentifikasi area di mana kehutanan dapat terjadi dan menumbuhkan blok berukuran benar menggunakan semacam automata seluler.
Apakah ini sepertinya cara terbaik untuk melakukan ini? Apakah ada metode yang lebih baik?
Jika ini cara terbaik yang tersedia, bagaimana saya bisa melakukan ini, lebih disukai, R? (Saat ini saya sedang melihat fungsi rpoint di "spatstat" bersama dengan paket CellularAutomata)
Saya juga memiliki akses ke GRASS, QGis dan ArcMap 10 jika ada cara yang lebih sederhana di antara mereka.
raster
paketnya? Itu punya banyak alat untuk bekerja dengan data raster (noo, rly?).Jawaban:
Pernahkah Anda berpikir untuk menggunakan rantai Markov ? Ini secara efektif merupakan "otomat seluler seluler probabilistik," sehingga memasok keacakan yang diinginkan. Alih-alih meresepkan generasi baru dalam hal tetangga lokal dari generasi yang ada, itu menentukan distribusi probabilitas untuk generasi baru. Distribusi itu dapat diperkirakan dari, katakanlah, urutan waktu gambar dari area yang sama atau serupa.
Secara intuitif, model ini mengatakan bahwa sel tidak harus membuat transisi dari berhutan ke tidak berhutan (atau sebaliknya ), tetapi kemungkinan bahwa hal itu akan membuat transisi tergantung pada tutupan lahan segera di sekitarnya. Ia dapat menangani beberapa kelas tutupan, konfigurasi kompleks lingkungan, dan bahkan digeneralisasikan untuk "mengingat" sejarah evolusi tutupan lahan baru-baru ini.
Transisi dapat diimplementasikan menggunakan pernyataan Peta Aljabar, yang membuat metode ini praktis dalam GIS berbasis raster, bahkan yang tanpa akses langsung atau cepat ke data tingkat sel. Menggunakan R membuatnya lebih mudah.
Sebagai contoh, pertimbangkan konfigurasi awal ini hanya dengan dua kelas, putih dan hitam:
Untuk menggambarkan apa yang bisa terjadi, saya membuat model parameter (tidak didasarkan pada data apa pun) di mana transisi ke hitam terjadi dengan probabilitas 1 - q ^ k di mana k adalah jumlah rata-rata sel hitam dalam lingkungan 3 oleh 3 (k = 0, 1/9, 2/9, ..., 1). Ketika q kecil atau sebagian besar lingkungan sudah hitam, sel baru akan hitam. Berikut adalah empat simulasi independen dari generasi kesepuluh untuk lima nilai q mulai dari 0,25 hingga 0,05:
Jelas model ini memiliki banyak karakteristik CA tetapi juga mencakup efek acak yang berguna untuk mengeksplorasi hasil alternatif.
Kode
Berikut ini mengimplementasikan simulasi di
R
.sumber
kernel = ConstantArray[1/3^2, {3,3}]
untuk kernel;transitionRule [k_] := With[{q = 0.1}, Boole[RandomReal[{0, 1}] > q^k]]
untuk aturan; dannext[a_, kernel_, f_] := Map[f, ListConvolve[kernel, a, {1, 1}, 0], {2}]
untuk menerapkannya ke array a . Misalnya, untuk merencanakan empat generasi dari awal , gunakanArrayPlot /@ NestList[next[#, kernel, transitionRule] &, start, 3]
.