日前在处理数据量较大的图层是时常报错ERROR 999999,经多方查询之后发现网上目前的参考均为Arcgis官网给出的解决方案罗列,并无详细的排查步骤,因此经整理之后理出了详细的排查步骤。
一、官网给出的错误原因归纳
1.因要素类中存在空几何、短线段、自相交和其他几何问题导致的出错。
2.创建输出的名称存在中文字符或过长。
3.因输出文件夹路径长度或权限问题而导致的错误。
4.图层数据量过大,导致的溢出。
5.处理shp数据时,因导出问题导致的错误。推荐导出至数据库。
二、排查顺序
这里推荐一个笔者自己整理的筛查顺序,考虑到一般出现此类错误一般为运算量级较大的数据,故
debug的顺序如下:
1.排查输出的路径长度和权限问题。
1)以管理员权限启动Arcgis。
找到arcgis图标,右键以管理员身份运行。
2)排查输出路径问题
1.需排查是否输出至无权限文件夹
2.需排查是否存在中文字符
3.需排查是否输出的路径过长
笔者这里推荐测试时使用默认的文件夹进行输出操作,具体操作如下。以clip工具为例。此地理信息库为默认的输出文件夹所在位置。此文件夹一般不存在路径长度和路径名的问题,可以用此路径作为排查的测试文件夹。此文件夹为默认的地理文件数据库,也可以一并排查shp数据的导出问题。
若未找到此文件夹可在文件管理中直接找到对应文件夹,一般位于c盘_用户文件夹_用户名文件夹_文档_Arcgis中。
2.排查图层本身问题
若第一步排查之后仍存在问题,则可能是图层本身存在的问题。按照一下步骤排查。
1)排查图层的几何问题
Arcgis内置了修复几何功能,位于工具箱-----数据管理-----要素—修复几何中。英文版如图所示,勾选去除空白。
2)排查工具并行计算问题
Arcgis的并行计算可谓是做的一塌糊涂,这里给出一个最简单的排查方式。在工具的右下角找到环境设置,找到并行计算,点开找到并行计算处理因子,设置为0。部分资料显示改成4或者4的倍数也可以,笔者并未测试可行性。英文版如图所示。
3)排查图层的数据量问题
对于Arcgis这个32位的程序来说,数据量的一直是大问题。但是若以上问题经排查后都没问题的话,基本确定是数据量问题了。笔者这里推荐两种方式。
1.利用Arcgis自带工具减少单图层数据量,或者采用union处理。
若采用这种方法,在分析工具中的这四个工具基本满足各种要求。
2.提升最大计算量(新手慎用)
Arcgis作为32位的系统,本身寻址空间只有4GB,每个 32 位程序的用户空间可独享前 2GB 空间。一般认为Arcgis的最好不要超过2048MB,也就是最好控制在2g之内。但是若是有需求计算2g以上的数据。则需要更改配置文件以扩大运算空间。
1.工具准备
利用Visual Studio的editbin
和dumpbin
两个工具。
Visual Studio下载地址为:https://visualstudio.microsoft.com/zh-hans/vs/
editbin主要用于修改配置文件,dunmpbin主要用于查看是否修改成功。编辑一个程序使之可以突破2GB的命令为:
editbin /largeaddressaware xxx.exe
这里我们需要更改Arcgis自带的python文件使之突破2GB的空间。
2.修改配置文件
打开cmd,进入C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC
输入editbin /LARGEADDRESSAWARE “C:\Python26\ArcGIS10.2.2\python.exe”
路径换为Arcgis自带python路径。
输入查看:dumpbin /headers “C:\Python26\ArcGIS10.0\python.exe” | more”
即可看到:Application can handle large (>2GB) addresses
的提示