Lihat tautan ini untuk lebih jelasnya.
Masalah:
Saya ingin mengulang melalui raster berkelanjutan (yang tidak memiliki tabel atribut), sel demi sel, dan mendapatkan nilai sel. Saya ingin mengambil nilai-nilai itu dan menjalankan persyaratannya, meniru langkah-langkah aljabar peta yang dirinci di bawah ini tanpa benar-benar menggunakan kalkulator raster.
Per permintaan komentar di bawah ini, saya telah menambahkan detail yang memberikan latar belakang masalah dan membenarkan perlunya menerapkan metode seperti pada bagian di bawah ini yang disebut "Analisis yang diperlukan:".
Analisis yang diajukan di bawah ini, meskipun relevan dengan masalah saya dengan memberikan latar belakang, tidak perlu diimplementasikan dalam jawaban. Ruang lingkup pertanyaan hanya berkaitan dengan iterasi melalui raster berkelanjutan untuk mendapatkan / menetapkan nilai sel.
Analisis yang dibutuhkan:
Jika salah satu dari kondisi berikut terpenuhi, berikan sel output nilai 1. Hanya beri sel output nilai 0 jika tidak ada kondisi yang terpenuhi.
Kondisi 1: Jika nilai sel lebih besar dari sel atas dan bawah, beri nilai 1:
Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0)
Di mana file kernel terlihat seperti ini:
3 3
0 1 0
0 0 0
0 1 0
Kondisi 2: Jika nilai sel lebih besar dari sel kiri dan kanan, beri nilai 1:
Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0)
Di mana file kernel terlihat seperti ini:
3 3
0 0 0
1 0 1
0 0 0
Kondisi 3: Jika nilai sel lebih besar dari sel topleft dan bottomright, beri nilai 1:
Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0)
Di mana file kernel terlihat seperti ini:
3 3
1 0 0
0 0 0
0 0 1
Kondisi 4: Jika nilai sel lebih besar dari bottomleft dan sel topright, beri nilai 1:
Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0)
Di mana file kernel terlihat seperti ini:
3 3
0 0 1
0 0 0
1 0 0
Kondisi 5: Jika salah satu sel yang berdekatan memiliki nilai EQUAL untuk sel pusat, berikan nilai raster nilai 1 ( menggunakan varietas fokus dengan dua perhitungan lingkungan terdekat )
Mengapa tidak menggunakan aljabar peta?
Telah dicatat di bawah ini bahwa masalah saya dapat diselesaikan dengan menggunakan aljabar peta tetapi seperti yang terlihat di atas ini adalah total dari enam perhitungan raster, ditambah satu untuk menggabungkan semua raster yang dibuat bersama-sama. Menurut saya, jauh lebih efisien untuk melakukan sel demi sel dan melakukan semua perbandingan sekaligus di setiap sel daripada mengulangi masing-masing secara terpisah tujuh kali dan menggunakan sedikit memori untuk membuat tujuh raster.
Bagaimana seharusnya masalah diserang?
Tautan di atas menyarankan untuk menggunakan antarmuka IPixelBlock, namun tidak jelas dari dokumentasi ESRI apakah Anda benar-benar mengakses nilai sel tunggal itu sendiri melalui IPixelBlock, atau jika Anda mengakses beberapa nilai sel dari ukuran IPixelBlock yang Anda atur. Sebuah jawaban yang baik harus menyarankan metode untuk mengakses nilai-nilai sel raster terus menerus dan memberikan penjelasan tentang metodologi di balik kode, jika tidak jelas.
Singkatnya:
Apa metode terbaik untuk loop melalui setiap sel dalam raster TERUS-MENERUS (yang tidak memiliki tabel atribut ) untuk mengakses nilai selnya?
Jawaban yang baik tidak perlu mengimplementasikan langkah-langkah analisis yang dijelaskan di atas, hanya perlu menyediakan metodologi untuk mengakses nilai sel raster.