import arcpy import sys # 获取要素类路径和查询条件 feature_class = arcpy.GetParameterAsText(0) query = arcpy.GetParameterAsText(1) if not arcpy.Exists(feature_class): arcpy.AddError("输入的要素类不存在!") sys.exit() # 构建查询语句 expression = arcpy.AddFieldDelimiters(feature_class, "SHAPE_Area") + " < " + query # 使用 arcpy.da.UpdateCursor 删除要素 with arcpy.da.UpdateCursor(feature_class, "*", where_clause=expression) as cursor: for row in cursor: cursor.deleteRow() output_path = arcpy.GetParameterAsText(2) arcpy.FeatureClassToFeatureClass_conversion(feature_class, output_path) # 完成操作并清理内存 del cursor运行错误:Traceback (most recent call last): File "D:\多对一空间连接\批量删除小面积.py", line 21, in <module> File "c:\program files (x86)\arcgis\desktop10.2\arcpy\arcpy\conversion.py", line 1675, in FeatureClassToFeatureClass raise e ExecuteError: 执行失败。参数无效。 ERROR 000732: 输出位置: 数据集 D:\实验2\新建文件地理数据库.gdb\ddd 不存在或不受支持 ERROR 000735: 输出要素类: 值是必需的 执行(FeatureClassToFeatureClass)失败。 执行(删除小面)失败。请改正代码
时间: 2023-12-30 07:03:14 浏览: 182
使用arcpy获取简单的矢量数据信息.zip_arcPy 查询_arcpy 数据读入_arcpy 读取数据_arcpy矢量拼接
根据错误信息,看起来是输出路径不正确导致的问题。请确认 `output_path` 变量所指定的输出路径是否正确,并且已经存在。如果不存在,请先创建该路径。同时,也需要确认输出要素类的名称是否正确指定,即 `arcpy.FeatureClassToFeatureClass_conversion()` 方法的第二个参数是否正确传入。
此外,你的代码中删除要素的操作也有问题。你应该先使用 `cursor.updateRow()` 更新游标位置,然后再使用 `cursor.deleteRow()` 删除该行记录。代码修改如下:
```
import arcpy
import sys
# 获取要素类路径和查询条件
feature_class = arcpy.GetParameterAsText(0)
query = arcpy.GetParameterAsText(1)
if not arcpy.Exists(feature_class):
arcpy.AddError("输入的要素类不存在!")
sys.exit()
# 构建查询语句
expression = arcpy.AddFieldDelimiters(feature_class, "SHAPE_Area") + " < " + query
# 使用 arcpy.da.UpdateCursor 删除要素
with arcpy.da.UpdateCursor(feature_class, "*", where_clause=expression) as cursor:
for row in cursor:
cursor.deleteRow()
# 输出要素类到指定路径
output_path = arcpy.GetParameterAsText(2)
arcpy.FeatureClassToFeatureClass_conversion(feature_class, output_path, "output_feature_class")
# 完成操作并清理内存
del cursor
```
阅读全文