"""
Description: arcpy
我有一个矢量图层,里面有很多字段,我希望可以选择多个不同字段,
每个字段做一次IDW反距离权重插值,输出图层的名称应当是字段名称,
并保存到特定的文件夹中,如何通过arcpy实现,且封装成自定义工具箱
等值线的间距需要自动设置,设置的大小应当是栅格数据的(最大值减去最小值)*3%
Usage: arcgis pro 可用
"""
# -------------------------------------------
import arcpy
import os
def idw_interpolation_to_contours(input_layer, fields, output_folder, cell_size=10):
arcpy.env.workspace = output_folder
arcpy.env.overwriteOutput = True
for field in fields:
# 创建输出栅格路径
output_raster = os.path.join(output_folder, field + ".tif")
# 执行IDW插值
idw_result = arcpy.sa.Idw(in_point_features=input_layer, z_field=field, cell_size=cell_size)
idw_result.save(output_raster)
arcpy.AddMessage("Interpolated field: {} and saved as raster: {}".format(field, output_raster))
# 计算等值线间距
min_value = arcpy.GetRasterProperties_management(idw_result, "MINIMUM").getOutput(0)
max_value = arcpy.GetRasterProperties_management(idw_result, "MAXIMUM").getOutput(0)
min_value = float(min_value)
max_value = float(max_value)
contour_interval = (max_value - min_value) * 0.03
contour_interval = round(contour_interval, 2)
arcpy.AddMessage("Calculated contour interval: {}".format(contour_interval))
# 创建输出等值线路径
output_contour = os.path.join(output_folder, field