ArcPy函数索引与操作概览

版权申诉
0 下载量 128 浏览量 更新于2024-07-02 收藏 2.06MB PDF 举报
ArcPyFunctionIndex是一份全面指南,介绍了ArcGIS Pro中的ArcPy函数库,它是Esri提供的一种Python接口,用于与ArcGIS地理数据库(Geodatabases)进行交互。这些函数涵盖了多种类别,包括数据管理、工具箱操作、环境设置、错误处理和数据描述等,旨在简化GIS开发过程中的任务。 1. **数据管理**: - **AddDataStoreItem**: 用于向数据存储(如文件GDB或个人工作空间)添加新的数据项,支持数据导入或创建。 - **AlterAliasName**: 用于修改对象别名,便于管理和组织数据。 2. **错误和消息处理**: - **AddError**: 提供错误报告机制,用于在运行过程中记录并处理错误信息。 - **AddMessage**: 发送通用的消息,可以是警告或成功提示,有助于日志跟踪和用户反馈。 - **AddReturnMessage**: 传递函数执行结果作为消息,用于返回特定操作的状态或结果。 - **AddWarning**: 发出警告信息,提醒开发者或用户潜在问题。 3. **工具箱与工具**: - **AddToolbox**: 用于在工作空间中添加或管理工具箱,方便组织和调用GIS工具。 4. **环境设置**: - **ClearEnvironment**: 清除ArcPy环境变量,确保脚本执行时的隔离性和一致性。 - **CreateScratchName**: 生成临时工作目录名称,用于创建临时文件或工作区。 5. **几何处理**: - **AsShape**: 将数据转换为Shape对象,便于处理几何数据。 - **FromWKBGeometry**: 将Well-Known Binary (WKB)格式的几何数据转换为Python对象。 - **FromWKTGeometry**: 从Well-Known Text (WKT)字符串解析几何对象。 6. **参数获取和设置**: - **CopyParameter**: 复制参数值,常用于函数间的参数传递或自定义函数的参数设置。 - **GetArgumentCount**: 获取函数接受参数的数量,帮助开发者理解和使用函数。 7. **数据描述**: - **Describe**: 描述数据集属性,包括字段、类型、长度等信息,用于了解数据结构。 8. **GIS服务与发布**: - **CreateGPSDDraft**: 创建地理过程服务的草稿,用于准备发布地图服务。 - **CreateImageSDDraft**: 同上,但针对图像服务。 9. **随机值生成**: - **CreateRandomValueGenerator**: 生成随机数值,用于模拟或测试场景。 10. **身份管理**: - **DisconnectUser**: 断开用户连接,通常在用户完成任务后清理环境。 ArcPy_Functions.pdf文档提供了丰富的ArcPy功能,无论是对数据操作、工具箱管理,还是错误处理和环境配置,都能在其中找到相应的函数和方法。掌握这些函数对于使用ArcGIS进行GIS开发和数据分析具有重要作用。

运行import arcpy # 定义输入图层和输出图层 input_layer = arcpy.GetParameterAsText(0) output_layer = arcpy.GetParameterAsText(1) # 定义合并条件 merge_field = arcpy.GetParameterAsText(2) # 要合并的字段名 merge_gap = arcpy.GetParameterAsText(3) # 相邻图斑面积差距 # 定义面积筛选条件 selection_field = arcpy.GetParameterAsText(4) # 用于筛选的字段名 selection_value = arcpy.GetParameterAsText(5) # 筛选条件 selection_area = float(arcpy.GetParameterAsText(6)) # 面积筛选阈值 # 进行面积筛选 arcpy.MakeFeatureLayer_management(input_layer, "layer", "{}='{}' AND SHAPE_AREA > {}".format(selection_field, selection_value, selection_area)) # 寻找相邻图斑 arcpy.PolygonNeighbors_analysis("layer", "neighbors", ["FID"]) # 定义合并列表 merge_list = [] # 进行合并 with arcpy.da.SearchCursor("neighbors", ['src_FID', 'nbr_FID', 'src_{}'.format(merge_field)]) as cursor: for row in cursor: if row[0] < row[1]: src_geom = arcpy.da.SearchCursor("layer", ["SHAPE@"], "FID={}".format(row[0])).next()[0] nbr_geom = arcpy.da.SearchCursor("layer", ["SHAPE@"], "FID={}".format(row[1])).next()[0] if src_geom.area < nbr_geom.area: src_geom, nbr_geom = nbr_geom, src_geom if src_geom.area - nbr_geom.area > merge_gap: merge_list.append(row[0]) merge_list.append(row[1]) arcpy.management.Dissolve("layer", output_layer, "{}".format(merge_field), None, "MULTI_PART", "DISSOLVE_LINES") # 删除被合并的图斑 with arcpy.da.UpdateCursor(output_layer, ['FID']) as cursor: for row in cursor: if row[0] in merge_list: cursor.deleteRow()时报错Traceback (most recent call last): File "D:\实验YY\新建文件夹 (2)\批量合并小图斑.py", line 13, in <module> File "c:\program files (x86)\arcgis\desktop10.2\arcpy\arcpy\analysis.py", line 984, in PolygonNeighbors raise e ExecuteError: 执行失败。参数无效。 ERROR 000732: 输入要素: 数据集 layer 不存在或不受支持 执行(PolygonNeighbors)失败。 执行(批量合并小图斑)失败。请改正代码

2023-05-22 上传
2023-05-25 上传

-- coding: utf-8 -- import arcpy arcpy.env.overwriteOutput = True # 输入参数 input_feature_class = arcpy.GetParameterAsText(0) # 输入要素类 join_feature_class = arcpy.GetParameterAsText(1) # 连接要素类 output_feature_class = arcpy.GetParameterAsText(2) # 输出要素类 join_fields = arcpy.GetParameterAsText(3) # 连接字段 merge_fields = arcpy.GetParameterAsText(4) # 合并字段 min_area = arcpy.GetParameter(5) # 最小面积 # 创建空间连接 arcpy.SpatialJoin_analysis(input_feature_class, join_feature_class, output_feature_class, "JOIN_ONE_TO_MANY", "", "", "INTERSECT") # 创建输出要素类的字段列表 field_list = [f.name for f in arcpy.ListFields(output_feature_class)] # 创建合并字段的字典 merge_dict = {} # 遍历输出要素类中的要素 with arcpy.da.UpdateCursor(output_feature_class, field_list) as cursor: for row in cursor: # 如果要素面积大于最小面积,则进行合并 if row[0] > min_area: # 创建合并字段的键值 merge_key = tuple([row[field_list.index(f)] for f in merge_fields.split(";")]) # 如果合并字段的键值不存在,则添加到字典中 if merge_key not in merge_dict: merge_dict[merge_key] = [] # 将当前要素的连接字段值添加到字典中 join_values = [row[field_list.index(f)] for f in join_fields.split(";")] merge_dict[merge_key].append(join_values) # 删除不符合条件的要素 else: cursor.deleteRow() # 遍历合并字段的字典,将连接字段的值合并并更新到输出要素类中 with arcpy.da.UpdateCursor(output_feature_class, merge_fields.split(";")) as cursor: for row in cursor: merge_key = tuple(row) if merge_key in merge_dict: join_values = merge_dict[merge_key] join_values = ["/".join([str(v) for v in j]) for j in join_values] row = tuple(join_values) cursor.updateRow(row)运行错误:IndentationError: unexpected indent (空间连接.py, line 18) 执行(空间连接多对一)失败。请改正代码

2023-05-25 上传
2023-05-24 上传