import arcpy # 输入参数 input_features = arcpy.GetParameterAsText(0) # 连接要素 join_field = arcpy.GetParameterAsText(1) # 连接字段 target_feature = arcpy.GetParameterAsText(2) # 目标要素 target_field = arcpy.GetParameterAsText(3) # 目标字段 area_threshold = arcpy.GetParameterAsText(4) # 面积阈值 # 创建空间连接 arcpy.SpatialJoin_analysis(input_features, target_feature, "in_memory/spatial_join", "JOIN_ONE_TO_ONE", "KEEP_ALL", "", "INTERSECT") # 选择面积大于阈值的连接要素 arcpy.Select_analysis("in_memory/spatial_join", "in_memory/selected_features", "Shape_Area > " + area_threshold) # 统计相同连接字段值的面积总和 arcpy.Statistics_analysis("in_memory/selected_features", "in_memory/summarized_features", "Shape_Area SUM", join_field) # 创建字典,存储连接字段值和对应的面积总和 sum_dict = {} with arcpy.da.SearchCursor("in_memory/summarized_features", [join_field, "SUM_Shape_Area"]) as cursor: for row in cursor: sum_dict[row[0]] = row[1] # 更新目标要素中的字段值 with arcpy.da.UpdateCursor(target_feature, [target_field, join_field]) as cursor: for row in cursor: join_value = row[1] if join_value in sum_dict: area_sum = sum_dict[join_value] row[0] = str(area_sum) cursor.updateRow(row) # 导出结果 arcpy.CopyFeatures_management(target_feature, arcpy.GetParameterAsText(5))运行出现错误Traceback (most recent call last): File "D:\实验2\空间连接.py", line 13, in <module> File "c:\program files (x86)\arcgis\desktop10.2\arcpy\arcpy\analysis.py", line 84, in Select raise e ExecuteError: ERROR 000358: 无效的表达式 "Shape_Area" > 600 执行(Select)失败。 执行(fzzz)失败。请改正代码并写出完整可复制的代码
时间: 2023-12-06 08:42:58 浏览: 143
import arcpy
# 输入参数
input_features = arcpy.GetParameterAsText(0)
# 连接要素
join_field = arcpy.GetParameterAsText(1)
# 目标要素
target_feature = arcpy.GetParameterAsText(2)
# 目标字段
target_field = arcpy.GetParameterAsText(3)
# 面积阈值
area_threshold = arcpy.GetParameterAsText(4)
# 创建空间连接
arcpy.SpatialJoin_analysis(input_features, target_feature, "in_memory/spatial_join", "JOIN_ONE_TO_ONE", "KEEP_ALL", "", "INTERSECT")
# 选择面积大于阈值的连接要素
arcpy.Select_analysis("in_memory/spatial_join", "in_memory/selected_features", "\"Shape_Area\" > " + str(area_threshold))
# 统计相同连接字段值的面积总和
arcpy.Statistics_analysis("in_memory/selected_features", "in_memory/summarized_features", "Shape_Area SUM", join_field)
# 创建字典,存储连接字段值和对应的面积总和
sum_dict = {}
with arcpy.da.SearchCursor("in_memory/summarized_features", [join_field, "SUM_Shape_Area"]) as cursor:
for row in cursor:
sum_dict[row[0]] = row[1]
# 更新目标要素中的字段值
with arcpy.da.UpdateCursor(target_feature, [target_field, join_field]) as cursor:
for row in cursor:
join_value = row[1]
if join_value in sum_dict:
area_sum = sum_dict[join_value]
row[0] = str(area_sum)
cursor.updateRow(row)
# 导出结果
arcpy.CopyFeatures_management(target_feature, arcpy.GetParameterAsText(5))
阅读全文