ArcSWAT各种报错总结
- 1 变量未实例化
- 2 Error Number :-2147467259; 对 COM 组件的调用返回了错误 HRESULT E_FAIL
- 3 Error Number :-2147467259
- 4 INSER INTO 语句的语法错误。: IN, mWriteInputFiles.sol
- 5 IN, mWriteInputFiles.wgn
- 6 系统找不到指定的文件。:Unable to open Access database from ArcSWAT
- 7 Outlet输入文件格式:Type field does not exist
- 8 Overlay时:Unhandled exception has occured in a component in your application. Exception from HERSULF: 0x800A01C9
- 9 Error Number: -2147217256
- 10 至少一个参数没有被指定值。
- 参考
本文总结了本人在利用ArcSWAT模拟过程中,出现的各种错误。希望能和大家共同学习!
说明:在本人遇到的所有错误都总结在了此博客中,如若未提供解决方法,说明这个问题我目前没找到解决办法,直接重新构建SWAT模型了
1 变量未实例化
1.1 报错内容
ArcGIS报错:
空间参考:变量未实例化
Spatial Reference: Object reference not set to an instance of an object
1.2 解决方法
把Arcgis的并行计算改为0即可。
打开Arcgis,点击Geoprocessing——Environments,进入Environment Settings面板,找到Parallel Processing, 输入0,点击OK。
2 Error Number :-2147467259; 对 COM 组件的调用返回了错误 HRESULT E_FAIL
2.1 报错内容
出错位置:土地利用/土壤数据/坡度 覆盖overlay
Error Number :-2147467259
Eror Message: Eror HRESULTE FAIL has been retuned froma alltoa a COM component.
Module:mAnalysis
Function:dissolve
Procedurure:1
随后,依次弹出以下界面:
Description:
Microsoft Jet数据引擎找不到输入表或查询’FulLHRU’。确定它是否存在,以及它的名称的拼写是否正确。
尝试将并行设置更改为0,但依旧报错。
2.2 解决方法
不勾选overlay中的前一选项。
3 Error Number :-2147467259
3.1 报错内容
3.2 解决方法
4 INSER INTO 语句的语法错误。: IN, mWriteInputFiles.sol
4.1 报错内容
在用ArcSWAT进行Write SWAT Input Tables操作中,遇到报错:INSERTINTO 语句的语法错误。:IN,mWritelnputFiles.wg。
4.2 解决方法
在建的工程里面打开swat2012,打开usersoil,然后将没有数据的其他土壤层用0补齐,再进行操作。
再打开SWAT软件界面,更新数据库后,数据加载即可成功。
【另】在导入Usersoil表到SWAT2012数据库时候,弹出以下错误:“索引或主关键字不能包含一个空(NULL)值”
错误原因: excel中空格行存在,在导入access时也作为行数据导入,因数据为空,故报错“索引或主关键字不能包含一个空(NULL)值”
解决方案: 可将excel表中数据全选复制到另一sheet表中,此时导入不出错。
5 IN, mWriteInputFiles.wgn
5.1 报错内容
在用ArcSWAT进行Write SWAT Input Tables操作中,遇到报错:INSERTINTO 语句的语法错误。:IN,mWritelnputFiles.wg。
随后,依次弹出以下界面:
通过查看SWAT2021.mdb数据库中的WGEN_user表,发现ObjectID的值与气象站点编号不匹配。这是因为导入电子表格时,Access自动将ObjectID中的值更改为从1开始的序号。
5.2 解决方法
在导入表时,选择【我自己选择主键】,如下图:
记得关闭SWAT文件,再次打开!
6 系统找不到指定的文件。:Unable to open Access database from ArcSWAT
6.1 报错内容
在执行保存文件后,点击【Open SWATOutput.mdb 】,如下:
显示系统找不到指定文件。如下
6.2 解决方法
发现问题在于,SWATOutput.mdb保存在Default文件夹中,将此新建文件夹Copy后即可。
7 Outlet输入文件格式:Type field does not exist
7.1 报错内容
在导入实测水文站作为outlet时,报错显示“Type field does not exist”。
查阅SWAT2012手册可知:
此表必须具有3.3节中指定的子流域出口位置表(Subbasin Outlet Location Table)中的相同字段。
表中列出的所有位置必须为 “O”型出口 。如果指定了不同的“Type”值,则会出现一个对话框,报告如图5.33所示的错误,并且加载过程将停止。
7.2 解决方法
按手册制作Outlet表:
将此文件保存为.dbf格式后,可成功导入在SWAT中:
确定后,显示以下界面:(成功导入14个outlet)
经纬度坐标转平面坐标
在工具箱中依次点击数据管理工具->投影和变换->要素->投影,弹出投影对话框,如下图所示:
此时将arcmap右侧内容列表中之前导出的shp文件数据要素类拖动至输入数据集或要素类文本框中,此时见输入坐标系文本框中自动填写此shp文件的之前已经定义过的坐标系。
在弹出的对话框中点击左上角按钮,在弹出的菜单中点击添加字段,在弹出的添加字段对话框中,填写字段名及字段类型,如下图所示:
点击确定,完成字段的添加。在新建的字段名上右键,在弹出的菜单中选择计算几何,弹出计算几何对话框,属性栏选择点的X坐标或者Y坐标,计算对应的XY平面坐标值。
点击确认完成X坐标的计算,同以上步骤添加字段、计算几何完成Y坐标的计算工作。如下图:
如果需将表格数据导出,可在工具栏中点击搜索按钮,输入表转Excel,如下图:
点击搜索到的表转Excel工具,弹出对话框表转Excel对话框,将上述步骤得到的数据要素拖至输入表文本框中,在输出Excel文件文本框中选择输出路径及Excel表名,点击确定,完成Excel导出步骤,如下图所示:
8 Overlay时:Unhandled exception has occured in a component in your application. Exception from HERSULF: 0x800A01C9
8.1 报错内容
Land Use/Soils/Slope Definition成功重分类后,选择overlay时,弹出以下错误:
8.2 解决方法
9 Error Number: -2147217256
9.1 报错内容
导入河网数据(Burn In) 时,
Errot in GRID IO:
9.2 解决方法
很莫名其妙,明明啥也没干,就报错了。一般这个情况就直接重新操作了!
我恨这个软件!!!
10 至少一个参数没有被指定值。
参考
1、CSDN博客-ArcSWAT报错:Error Number :-2147467259; 对 COM 组件的调用返回了错误 HRESULT E_FAIL
2、在ArcSWAT中一直弹出INSECT INFO 语句的语法错误。
3、arcgis经纬度转平面坐标教程
4、ArcGIS之“异常来自HRESULT:0x8004021F”解决方法