Considere el conjunto de datos NLCD2001 Land Cover para Alaska ( enlace de descarga ). Necesito reclasificar este conjunto de datos para que solo se conserven los píxeles de valor 41, 42 y 43; todos los demás valores de píxeles deben convertirse en NoData (o 0, si es necesario).
Esto parece una tarea simple, que solo requiere una llamada a la herramienta Reclasificar. Desafortunadamente, cada llamada da como resultado un mensaje de error vago e inútil:
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)
¿Cómo puedo reclasificar este dataset ráster? Estoy usando ArcCatalog 10.0, Build 4000, con la extensión Spatial Analyst habilitada.
reclassify
debería ser un último recurso, porque tiene un alcance tan general que probablemente utiliza métodos que son menos eficientes que los que se pueden obtener cuando la reclasificación es fácil de expresar de forma aritmética o lógica. En el presente caso, el criterio para la reclasificación es tan simple que primero debe intentarlo Con
o incluso con operaciones aritméticas directas (porque son rápidas). Por ejemplo, "grid" * ("grid" >= 41) * ("grid" <= 43)
debería hacerlo. La RAM no debería ser un problema: Spatial Analyst abre automáticamente su E / S ráster y estas son operaciones locales.
Inlist
Es una buena solución (+1). Pude usar con
y monitorear el uso de RAM durante la operación. Nunca superó los 180 MB, que es apenas mayor que la RAM utilizada solo para iniciar ArcMap. El mosaico en ArcGIS es automático: ni siquiera puede controlarlo (a menos que esté programando en la interfaz C / Fortran). Parece que las limitaciones de RAM son poco preocupantes.
con
trabajó para mí también, con la condición "Value" >= 41 AND "Value" <= 43
. Me hubiera ido con esta solución, pero no estoy seguro de si los valores ráster adicionales serán de interés en el futuro. Obviamente podría agregar una OR
cláusula where, pero luego comienza a complicarse. InList
Parece la solución más sencilla en cuanto a legibilidad y facilidad de mantenimiento.