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.
arcpy
raster
arcgis-10.0
reclassify
error-999998
DoggoDougal
fuente
fuente
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 intentarloCon
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 usarcon
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 unaOR
cláusula where, pero luego comienza a complicarse.InList
Parece la solución más sencilla en cuanto a legibilidad y facilidad de mantenimiento.Respuestas:
El primer script adjunto reclasificó con éxito sus datos AK NLCD en aproximadamente 15 minutos (i7, máquina de 12 GB de RAM). Dado que el conjunto de datos original es de casi 7 GB, es posible que tenga problemas de memoria. Si no puede procesar todo el conjunto de datos en un fragmento, intente dividirlo con el segundo script antes de la reclasificación. Mi recomendación es tomar un pequeño subconjunto de los datos (haga clic con el botón derecho en la capa ráster en TOC> Datos> Exportar datos> Extensión (Marco de datos) y pruebe el primer script. Una vez que marque los parámetros para el comando de reclasificación, luego avance hacia la reclasificación todo el conjunto de datos o dividiéndolo. Alternativamente, intente descargar el producto de geoprocesamiento en segundo plano de 64 bits para ArcGIS 10.1 SP1, disponible aquí . Mucha suerte.
Script 1
Editar : si necesita dividir sus datos antes del procesamiento, este script debería ayudarlo:
Guión 2
fuente
whuber hizo un comentario sobre el uso de herramientas lógicas para expresar esta reclasificación . Después de un poco de investigación, encontré que InList , como parte del conjunto de herramientas Logical Math de Spatial Analyst, llenaba mi necesidad.
Es, con mucho, la solución simplista que pude encontrar, se ejecuta más rápido y no requiere considerar el mosaico del conjunto de datos original. No es necesario tener en cuenta la RAM disponible de la máquina, ya que esta herramienta leerá directamente desde el disco y almacenará los resultados directamente en el disco.
fuente
SplitRaster_management
, toma 7.04 segundos.He usado el conjunto de datos mencionado en la publicación original con una versión de desarrollo 10.4 de arcmap. La reclasificación falla cuando el ráster de salida es una cuadrícula, porque los recuentos de celdas reclasificadas están desbordando lo que se puede almacenar en el campo COUNT de un IVA de cuadrícula. Cuando el ráster de salida es un fgdb, se ejecuta con éxito para mí en aproximadamente 11 minutos en una máquina de 4 núcleos más antigua que ejecuta Windows 8. Los formatos de ráster sin cuadrícula deberían funcionar ya que usan valores flotantes de precisión doble para el campo de recuento. Espero que deba tener el mismo comportamiento con las versiones 10.2 o 10.3 lanzadas. Investigaremos usando un formato ráster diferente para la salida predeterminada para Reclassify.
fuente