Рассмотрим набор данных NLCD2001 Land Cover для Аляски ( ссылка для скачивания ). Мне нужно переклассифицировать этот набор данных, чтобы сохранить только пиксели со значениями 41, 42 и 43; все остальные значения пикселей должны стать NoData (или 0, если необходимо).
Это кажется простой задачей, требующей всего одного вызова инструмента переклассификации. К сожалению, каждый вызов приводит к неопределенному и бесполезному сообщению об ошибке:
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)
Как я могу реклассифицировать этот набор растровых данных? Я использую ArcCatalog 10.0, Build 4000, с включенным расширением Spatial Analyst.
reclassify
должно быть последнее средство, потому что оно настолько общее по объему, что, вероятно, использует методы, которые менее эффективны, чем те, которые можно получить, когда реклассификацию легко выразить арифметически или логически. В данном случае критерий переклассификации настолько прост, что вам следует сначала попробовать его Con
или даже выполнить арифметические операции (потому что они быстрые). Например, "grid" * ("grid" >= 41) * ("grid" <= 43)
должен это сделать. ОЗУ не должно быть проблемой - Spatial Analyst автоматически запускает свой растровый ввод-вывод, и это локальные операции.
Inlist
это хорошее решение (+1). Я мог использовать con
и контролировать использование оперативной памяти во время операции. Он никогда не превышал 180 МБ, что чуть больше, чем оперативная память, используемая только для запуска ArcMap. Плитка в ArcGIS автоматическая - вы даже не можете управлять ей (если вы не программируете интерфейс C / Fortran). Похоже, что ограничения ОЗУ не представляют большой проблемы.
con
у меня тоже работал, с условием "Value" >= 41 AND "Value" <= 43
. Я бы пошел с этим решением, но я не уверен, будут ли дополнительные растровые значения представлять интерес в будущем. Очевидно, я мог бы добавить OR
к предложению where, но тогда это стало бы более сложным. InList
кажется наиболее простым решением в отношении удобочитаемости и удобства обслуживания.