import arcpy import os import sys feature_class = arcpy.GetParameterAsText(0) query = arcpy.GetParameterAsText(1) output_path = arcpy.GetParameterAsText(2) if not arcpy.Exists(output_path): arcpy.CreateFolder_management(os.path.dirname(output_path), os.path.basename(output_path)) gdb_path = os.path.join(output_path, "output.gdb") if not arcpy.Exists(gdb_path): arcpy.CreateFileGDB_management(output_path, "output.gdb", "CURRENT") expression = arcpy.AddFieldDelimiters(feature_class, "SHAPE_Area") + " < " + query if arcpy.Exists(feature_class): with arcpy.da.UpdateCursor(feature_class, "*", where_clause=expression) as cursor: for row in cursor: cursor.deleteRow() arcpy.FeatureClassToFeatureClass_conversion(feature_class, gdb_path, "output_feature_class") del cursor print("操作完成") else: print("要素类不存在")运行代码没有导出数据。请改正代码
时间: 2024-01-22 12:18:50 浏览: 151
根据你提供的代码,可能是因为在删除要素之后,没有将剩下的要素导出到输出要素类中。你可以尝试将以下代码添加到删除要素的代码后面:
```
arcpy.FeatureClassToFeatureClass_conversion(feature_class, gdb_path, "output_feature_class", where_clause=expression)
```
这将把符合查询条件的要素导出到输出要素类中。另外,你还需要注意一下以下几点:
1. 确保输入的要素类和输出路径是正确的。
2. 确保输入的查询表达式是正确的。
3. 确保输出路径中文件夹和文件名没有特殊字符或空格。
相关问题
import arcpy # 获取输入和输出参数 input_feature_class = arcpy.GetParameterAsText(0) output_feature_class = arcpy.GetParameterAsText(1) # 复制输入要素类到输出要素类 arcpy.CopyFeatures_management(input_feature_class, output_feature_class)运行后未导出输入的要素,请改正代码
可能是因为代码中没有正确处理输入参数的情况,可以添加一些错误处理代码来解决问题。例如,可以添加以下代码来检查输入要素类是否存在:
```
# 检查输入要素类是否存在
if not arcpy.Exists(input_feature_class):
arcpy.AddError("输入要素类不存在")
sys.exit()
```
完整的修改后代码如下:
```
import arcpy
import sys
# 获取输入和输出参数
input_feature_class = arcpy.GetParameterAsText(0)
output_feature_class = arcpy.GetParameterAsText(1)
# 检查输入要素类是否存在
if not arcpy.Exists(input_feature_class):
arcpy.AddError("输入要素类不存在")
sys.exit()
# 复制输入要素类到输出要素类
arcpy.CopyFeatures_management(input_feature_class, output_feature_class)
```
这样,当输入要素类不存在时,程序将会输出错误信息并停止执行,避免了未处理的异常情况。
import arcpy import sys feature_class = arcpy.GetParameterAsText(0) query = arcpy.GetParameterAsText(1) output_path = arcpy.GetParameterAsText(2) if not arcpy.Exists(output_path): arcpy.CreateFileGDB_management(os.path.dirname(output_path), os.path.basename(output_path)) expression = arcpy.AddFieldDelimiters(feature_class, "SHAPE_Area") + " < " + query with arcpy.da.UpdateCursor(feature_class, "*", where_clause=expression) as cursor: for row in cursor: cursor.deleteRow() arcpy.FeatureClassToFeatureClass_conversion(feature_class, output_path, "output_feature_class") del cursor print("操作完成")运行错误:执行: 删除小面 Export_Output 497477.651983 D:\实验2\新建文件地理数据库.gdb\qqqqqq 开始时间: Wed May 24 19:51:32 2023 正在运行脚本 删除小面... Failed script 删除小面... IndentationError: expected an indented block (批量删除小面积.py, line 11) 执行(删除小面)失败。 失败 在 Wed May 24 19:51:32 2023 (经历的时间: 0.02 秒)请改正代码
import arcpy
import os
import sys
feature_class = arcpy.GetParameterAsText(0)
query = arcpy.GetParameterAsText(1)
output_path = arcpy.GetParameterAsText(2)
if not arcpy.Exists(output_path):
arcpy.CreateFileGDB_management(os.path.dirname(output_path), os.path.basename(output_path))
expression = arcpy.AddFieldDelimiters(feature_class, "SHAPE_Area") + " < " + query
with arcpy.da.UpdateCursor(feature_class, "*", where_clause=expression) as cursor:
for row in cursor:
cursor.deleteRow()
arcpy.FeatureClassToFeatureClass_conversion(feature_class, output_path, "output_feature_class")
del cursor
print("操作完成")
在Python中,缩进非常重要。您的代码第11行的缩进不正确。请注意在 if 语句下面增加了4个空格。此外,在第7行和第10行之间也需要增加一个空格。我已经帮您更正了代码。
阅读全文
相关推荐














