import arcpy # 输入参数 fc = arcpy.GetParameterAsText(0) # 要素类 field = arcpy.GetParameterAsText(1) # 查询字段 value = arcpy.GetParameterAsText(2) # 查询条件值 # 构建查询语句 query = "{} = '{}'".format(arcpy.AddFieldDelimiters(fc, field), value) # 删除符合条件的要素 with arcpy.da.UpdateCursor(fc, ["OID@", field], where_clause=query) as cursor: for row in cursor: cursor.deleteRow() arcpy.AddMessage("Deleted OID {} with {} = {}".format(row[0], field, value))运行错误IndentationError: unexpected indent (批量删除小面积.py, line 10) 执行(删除小面)失败。请改正代码
时间: 2023-12-13 14:02:41 浏览: 93
IndentationError: unexpected indent 表示代码缩进错误,可能是因为使用了不同数量的空格或制表符。建议使用一致的缩进,例如使用4个空格或1个制表符。
在你的代码中,第10行的缩进可能有误,请检查是否有多余的空格或制表符。建议将第10行的缩进调整为与第9行相同的方式,例如:
```python
for row in cursor:
cursor.deleteRow()
arcpy.AddMessage("Deleted OID {} with {} = {}".format(row[0], field, value))
```
相关问题
import arcpy # 设置工作空间 arcpy.env.workspace = r"D:\多对一空间连接\多对一空间连接.gdb" # 输入要素类 input_fc = arcpy.GetParameterAsText(0) # 自定义字段名 field_name = arcpy.GetParameterAsText(1) # 自定义字段值 field_value = arcpy.GetParameterAsText(2) # 输出要素类路径 output_fc = arcpy.GetParameterAsText(3) # 构建查询语句 query = "{} = '{}'".format(field_name, field_value) # 选择要素 arcpy.Select_analysis(input_fc, output_fc, query)运行错误:Traceback (most recent call last): File "D:\多对一空间连接\批量导出数据.py", line 16, in <module> NameError: name 'field_value' is not defined 执行(批量导数据)失败。请改正代码
这个错误提示是因为在第12行中,`field_value`没有被定义,可能是因为在输入参数时没有传入第三个参数,请检查一下参数设置。你可以在代码的开头添加一些调试代码,如下所示:
```python
import arcpy
# 设置工作空间
arcpy.env.workspace = r"D:\多对一空间连接\多对一空间连接.gdb"
# 输入要素类
input_fc = arcpy.GetParameterAsText(0)
print("input_fc:", input_fc)
# 自定义字段名
field_name = arcpy.GetParameterAsText(1)
print("field_name:", field_name)
# 自定义字段值
field_value = arcpy.GetParameterAsText(2)
print("field_value:", field_value)
# 输出要素类路径
output_fc = arcpy.GetParameterAsText(3)
print("output_fc:", output_fc)
# 构建查询语句
query = "{} = '{}'".format(field_name, field_value)
# 选择要素
arcpy.Select_analysis(input_fc, output_fc, query)
```
这样可以帮助你找到问题所在。
import arcpy # 获取输入参数 input_features = arcpy.GetParameterAsText(0) # 输入要素 output_features = arcpy.GetParameterAsText(1) # 输出要素 query_field = arcpy.GetParameterAsText(2) # 查询字段 query_expression = arcpy.GetParameterAsText(3) # 查询表达式 # 构建查询语句 query = "{} = '{}'".format(arcpy.AddFieldDelimiters(input_features, query_field), query_expression.replace("'", "''")) # 使用选择工具选择数据 arcpy.Select_analysis(input_features, output_features, query)运行代码输出要素为空图层,请改正代码
在这段代码中,使用的是 Select_analysis 工具,它是将符合查询条件的要素选择出来并存储到输出要素中,如果没有符合条件的要素,则输出为空图层。因此,代码中输出为空图层的原因可能是查询条件不正确或者输入要素中不存在符合条件的要素。为了解决这个问题,可以尝试以下几种方法:
1. 检查输入参数是否正确:检查输入的要素是否正确、查询字段是否存在、查询表达式是否正确等。
2. 确认查询条件是否正确:可以将查询条件打印出来,检查是否符合预期。如:print(query)。
3. 确认输入要素中是否存在符合条件的要素:可以使用属性表或者其他方法检查输入要素中是否存在符合条件的要素。
4. 调整查询条件:如果查询条件不正确,可以调整查询条件以确保能够选择到符合条件的要素。
下面是修改后的代码:
```python
import arcpy
# 获取输入参数
input_features = arcpy.GetParameterAsText(0) # 输入要素
output_features = arcpy.GetParameterAsText(1) # 输出要素
query_field = arcpy.GetParameterAsText(2) # 查询字段
query_expression = arcpy.GetParameterAsText(3) # 查询表达式
# 构建查询语句
query = "{} = '{}'".format(arcpy.AddFieldDelimiters(input_features, query_field), query_expression.replace("'", "''"))
# 使用选择工具选择数据
arcpy.MakeFeatureLayer_management(input_features, "lyr") # 创建要素图层
arcpy.SelectLayerByAttribute_management("lyr", "NEW_SELECTION", query) # 选择符合条件的要素
arcpy.CopyFeatures_management("lyr", output_features) # 将选择的要素复制到输出要素中
# 删除临时图层
arcpy.Delete_management("lyr")
```
修改后的代码中,使用了 MakeFeatureLayer 和 SelectLayerByAttribute 工具来选择符合条件的要素,并将其复制到输出要素中。同时,在代码末尾使用了 Delete_management 工具来删除临时图层。
阅读全文