Pertimbangkan dataset NLCD2001 Land Cover untuk Alaska ( tautan unduhan ). Saya perlu mengklasifikasi ulang dataset ini sehingga hanya piksel dengan nilai 41, 42, dan 43 yang dipertahankan; semua nilai piksel lainnya harus menjadi NoData (atau 0, jika perlu).
Ini sepertinya tugas yang sederhana, hanya membutuhkan satu panggilan ke alat Reklasifikasi. Sayangnya, setiap panggilan menghasilkan pesan kesalahan yang tidak jelas dan tidak membantu:
Executing: Reclassify "D:\ak_nlcd_2001_land_cover_3-13-08_se5.img" Value "0 40 0;41 41;42 42;43 43;44 255 0;NODATA 0" "D:\alaska_reclassified.tif" DATA
Start Time: Thu Jan 03 09:23:13 2013
ERROR 999998: Unexpected Error.
Failed to execute (Reclassify).
Failed at Thu Jan 03 09:23:13 2013 (Elapsed Time: 0.00 seconds)
Bagaimana saya bisa melakukan klasifikasi ulang dataset raster ini? Saya menggunakan ArcCatalog 10.0, Build 4000, dengan ekstensi Spatial Analyst diaktifkan.
arcpy
raster
arcgis-10.0
reclassify
error-999998
DoggoDougal
sumber
sumber
reclassify
harus menjadi upaya terakhir, karena cakupannya sangat umum sehingga cenderung menggunakan metode yang kurang efisien daripada yang dapat diperoleh ketika reklasifikasi mudah diungkapkan secara hitung atau secara logis. Dalam kasus ini, kriteria untuk reklasifikasi sangat sederhana sehingga Anda harus mencobanya terlebih dahuluCon
atau bahkan melakukan operasi aritmatika langsung (karena cepat). Misalnya,"grid" * ("grid" >= 41) * ("grid" <= 43)
harus melakukannya. RAM seharusnya tidak menjadi masalah - Analis Tata Ruang secara otomatis windows I / O raster dan ini adalah operasi lokal.Inlist
adalah solusi yang bagus (+1). Saya bisa menggunakancon
dan memantau penggunaan RAM selama operasi. Tidak pernah melebihi 180 MB, yang hampir tidak lebih besar dari RAM yang digunakan hanya untuk meluncurkan ArcMap. Ubin di ArcGIS otomatis - Anda bahkan tidak bisa mengendalikannya (kecuali jika Anda memprogram ke antarmuka C / Fortran). Tampaknya keterbatasan RAM tidak terlalu diperhatikan.con
bekerja untuk saya juga, dengan kondisinya"Value" >= 41 AND "Value" <= 43
. Saya akan pergi dengan solusi ini, tapi saya tidak yakin apakah nilai raster tambahan akan menarik di masa depan. Jelas saya bisa menambahkanOR
klausa di mana, tapi kemudian mulai menjadi lebih rumit.InList
tampaknya solusi paling mudah dalam hal keterbacaan dan pemeliharaan.Jawaban:
Skrip terlampir pertama berhasil mereklasifikasi data AK NLCD Anda dalam waktu sekitar 15 menit (i7, mesin RAM 12GB). Karena set data asli hampir 7GB Anda mungkin mengalami masalah memori. Jika Anda tidak dapat memproses seluruh dataset dalam satu chunk, coba pisahkan dengan skrip kedua sebelum klasifikasi ulang. Rekomendasi saya adalah untuk mengambil sebagian kecil dari data (Klik kanan layer raster di TOC> Data> Ekspor Data> Extent (Data Frame) dan uji skrip pertama. Setelah Anda memanggil parameter untuk perintah reklasifikasi, kemudian bergerak menuju klasifikasi ulang seluruh dataset atau membaginya. Atau, coba unduh produk 64 bit Background Geoprocessing untuk ArcGIS 10.1 SP1, tersedia di sini . Semoga beruntung.
Skrip 1
Sunting : Jika Anda perlu membagi data Anda sebelum diproses, skrip ini akan membantu:
Skrip 2
sumber
whuber membuat komentar mengenai penggunaan alat logis untuk mengekspresikan reklasifikasi ini . Setelah menggali sedikit, saya menemukan InList , sebagai bagian dari perangkat Logical Math dari Spatial Analyst, memenuhi kebutuhan saya.
Sejauh ini solusi sederhana yang dapat saya temukan, mengeksekusi tercepat, dan tidak memerlukan pertimbangan untuk memasang dataset asli. Tidak perlu mempertimbangkan RAM mesin yang tersedia, karena alat ini akan membaca langsung dari disk dan menyimpan hasilnya segera kembali pada disk.
sumber
SplitRaster_management
, membutuhkan waktu 7.04 detik.Saya telah menggunakan dataset yang disebutkan dalam posting asli dengan versi arcmap 10.4 dev. Reklasifikasi gagal ketika raster keluaran adalah kisi, karena jumlah sel yang direklasifikasi melebihi apa yang dapat disimpan dalam bidang COUNT dari PPN kisi. Ketika output raster adalah fgdb, itu dieksekusi dengan sukses bagi saya dalam waktu sekitar 11 menit pada mesin 4 core yang lebih tua yang menjalankan Windows 8. Format raster non-grid harus bekerja karena mereka menggunakan nilai mengambang presisi ganda untuk bidang hitung. Saya berharap Anda harus mendapatkan perilaku yang sama dengan versi yang dirilis 10.2 atau 10.3. Kami akan menyelidiki menggunakan format raster yang berbeda untuk output default untuk Reklasifikasi.
sumber