五、处理地理数据异常【ArcGIS Python系列】
处理地理数据异常
对于 Python 程序的通用错误
在运行 ArcPy 程序中,大多数异常都是 Python 产生的:
-
语法错误(SyntaxError):代码不符合 Python 语法规则,通常是由于拼写错误、缺少冒号、括号不匹配等引起的。
-
名称错误(NameError):尝试使用一个未定义的变量或函数名称。
-
类型错误(TypeError):操作或函数应用于不适当的类型的对象。
-
索引错误(IndexError):尝试访问列表、元组或字符串等序列类型的元素时使用了无效的索引。
-
键错误(KeyError):尝试使用字典中不存在的键。
-
文件不存在错误(FileNotFoundError):尝试打开或读取一个不存在的文件。
-
除零错误(ZeroDivisionError):尝试进行除以零的操作。
-
值错误(ValueError):传递给函数的参数类型正确,但是值不合适。
-
属性错误(AttributeError):尝试访问对象没有的属性。
-
异常处理错误(ExceptionHandlingError):在异常处理语句中出现错误,例如错误的语法或逻辑。
这只是一些常见的错误异常,实际上 Python 还有很多其他的异常类型。在编写代码时,应该注意捕获和处理这些异常,以便更好地调试和处理错误。
捕捉 ArcPy 工具的错误
当地理处理工具写入错误消息时,ArcPy 将生成系统错误。具体而言,当地理处理工具运行失败时,它将引发 ExecuteError 异常,该异常可用于处理特定的地理处理错误。它不是 Python 内置异常类之一,但它是由 ArcPy 生成的,因此必须使用 arcpy.ExecuteError
类。
import arcpy
arcpy.env.workspace = "C:/Data"
in_features = "streams.shp"
out_features = "streams.shp"
try:
arcpy.CopyFeatures_management(in_features, out_features)
except arcpy.ExecuteError: # 捕获所有地理处理错误
print(arcpy.GetMessages(2))
except: # 捕获与地理处理无关的任何其他错误
print("There has been a nontool error.")
由于输入要素类和输出要素类不能相同,“复制要素”工具会生成错误,如下所示:
Failed to execute. Parameters are not valid.ERROR 000725: Output Feature Class: Dataset C:/Data\streams.shp already exists.Failed to execute (CopyFeatures).
在复杂的脚本中,若难以确定错误的精确位置,可以使用 Python 的traceback
模块或 IDE 工具进行调试。
推荐社区:
文章索引
【ArcGIS Python 系列】系列笔记为学习 ArcGIS Pro 和
Arcpy
过程中的总结,记下来方便回看,最新版本会优先发布在我的博客和GITHUB。
【ArcGIS Python 系列】教程部分:
- 一、Arcpy 介绍和安装【ArcGIS Python 系列】
- 二、ArcGIS Pro 和 ArcMap 的区别【ArcGIS Python 系列】
- 三、Arcpy 基础【ArcGIS Python 系列】
- 四、探索空间数据【ArcGIS Python 系列】
- 五、处理地理数据异常【ArcGIS Python 系列】
- 六、处理几何数据【ArcGIS Python 系列】
- 七、处理栅格数据【ArcGIS Python 系列】
- 八、制图模块【ArcGIS Python 系列】
- 九、自定义工具箱【ArcGIS Python 系列】
- 十、ArcGIS_Pro 常见问题【ArcGIS Python 系列】
- 利用 ArcGIS Python 批量处理地理数据的坐标系
- 使用 ArcGIS Python 检测洪水影像的区域
- 利用 ArcGIS_Python 制作考虑路况的交通等时圈
- 利用 ArcGIS Pro 制作弧线 OD 图【ArcGIS Python 系列】
- 使用 ArcGIS Pro 对卫星图进行建筑轮廓识别和车辆检测
- ArcGIS_Pro 官方课程整理
- 持续更新…
【ArcGIS Python 系列】jupyter notebook:
- 4.2.3-arcpy 基础(代码练习).ipynb
- 4.2.4-探索空间数据(代码练习).ipynb
- 4.2.5-示例 1:使用 Arcpy 进行 GIS 人口空间分布数据探索.ipynb
- 4.2.7-处理几何数据代码练习和示例 2.ipynb
- 4.2.8-栅格数据(代码练习).ipynb
- 4.2.9-制图模块.ipynb
- 4.2.12-实操 1-利用 Python 批量处理地理数据的坐标系.ipynb
- 4.2.13-实操 2-使用 Python 对图像中的洪水进行分类.ipynb
- 4.2.14-实操 3-制作考虑路况的交通等时圈.ipynb
如果你觉得本系列文章有用,欢迎关注博客,点赞 👍 和收藏,也欢迎在评论区讨论,也欢迎访问我的爱发电支持我,或者对此文章进行赞赏。