Considera il set di dati NLCD2001 Land Cover per l'Alaska ( link per il download ). Devo riclassificare questo set di dati in modo che vengano conservati solo i pixel con valore 41, 42 e 43; tutti gli altri valori di pixel dovrebbero diventare NoData (o 0, se necessario).
Sembra un'attività semplice, che richiede solo una chiamata allo strumento Ricodifica. Sfortunatamente, ogni chiamata genera un messaggio di errore vago e inutile:
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)
Come posso fare per riclassificare questo set di dati raster? Sto usando ArcCatalog 10.0, Build 4000, con l'estensione Analista spaziale abilitata.
reclassify
dovrebbe essere l'ultima risorsa, perché ha una portata così generale che probabilmente utilizza metodi meno efficienti di quelli che si possono ottenere quando la riclassificazione è facile da esprimere in modo aritmetico o logico. Nel caso presente, il criterio per la riclassificazione è così semplice che dovresti prima provare con Con
o anche semplici operazioni aritmetiche (perché sono veloci). Ad esempio, "grid" * ("grid" >= 41) * ("grid" <= 43)
dovrebbe farlo. La RAM non dovrebbe essere un problema: Spatial Analyst esegue automaticamente il windows I / O raster e queste sono operazioni locali.
Inlist
è una bella soluzione (+1). Sono stato in grado di utilizzare con
e monitorare l'utilizzo della RAM durante l'operazione. Non ha mai superato i 180 MB, che è appena maggiore della RAM utilizzata solo per avviare ArcMap. La piastrellatura in ArcGIS è automatica : non è nemmeno possibile controllarla (a meno che non si stia programmando l'interfaccia C / Fortran). Sembra che le limitazioni della RAM siano di scarsa preoccupazione.
con
funzionato anche per me, a condizione "Value" >= 41 AND "Value" <= 43
. Sarei andato con questa soluzione, ma non sono sicuro se ulteriori valori raster saranno di interesse in futuro. Ovviamente potrei aggiungere un OR
nella clausola where, ma poi inizia a diventare più complicato. InList
sembra la soluzione più diretta in termini di leggibilità e manutenibilità.