最近用Arcpy处理遥感影像,很有可能昨天代码还能正常运行,今天再打开就是999999,一般都是内存问题,如果你尝试了修改路径(输出路径不能有中文、不能太长)等种种花里胡哨的操作后还是无法解决,可以试试以下方法:
1. 缩小待处理栅格(裁剪、重分类……)
比如将栅格裁剪为几部分,或者降低分辨率,最终目的都是让栅格所占空间尽可能小(最好不要超过2G)。
当你的栅格可以尽可能缩小分辨率的前提下(比如,用30m分辨率的landsat-8影像裁剪更高精度的夜间灯光数据,后续对影像进行分类只需要30m精度的分辨率即可),这种方法比较推荐,因为程序运行起来会快很多,快速提高效率!
2. 修改可执行文件,让程序能处理超过2GB的字节(高阶技巧)
原理见:GIS Geek: Set 32bit Executable LARGEADDRESSAWARE Flag to True
需要工具:Visual Studio 2010
步骤:
- 打开VS2010命令提示
文件路径打开: All Programs > Microsoft Visual Studio 2010 > Visual Studio Tools > Visual Studio Command Prompt (2010)
或者打开命令提示符 (cmd.exe):
“C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat” x86
- 输入
editbin /LARGEADDRESSAWARE “C:\Python26\ArcGIS10.0\python.exe”
(注:路径换为你的ArcGIS Python 安装的路径)
- 查看
dumpbin /headers “C:\Python26\ArcGIS10.0\python.exe” | more
应该可以看到"…Application can handle large (>2GB) addresses…"的提示
解决999999的更多方法可见:Death, Taxes and the Esri ArcGIS 999999 Error: How to Fix It