ArcGIS Python工具箱Buffer工具METHOD参数配置错误求助
问题原因
你调用arcpy.Buffer_analysis()时参数位置错误。ArcGIS Buffer工具的第四个参数是线缓冲的侧边类型(仅接受Full/Left/Right),而你需要的PLANAR/GEODESIC是第8个参数缓冲方法的合法值,直接把方法参数放到第四个位置导致了参数类型不匹配错误。
修复方案
调整execute方法中Buffer工具的参数调用,将缓冲方法参数放到正确位置,以下两种方式任选其一:
方法1:使用关键字参数(推荐,可读性更强)
通过指定method关键字参数,无需关心前面可选参数的顺序,同时处理参数未选择的默认情况:
def execute(self, parameters, messages): """The source code of the tool.""" in_features = parameters[0].valueAsText out_features = parameters[1].valueAsText bf_distance = parameters[2].valueAsText # 若用户未选择方法,默认使用PLANAR bf_method = parameters[3].valueAsText if parameters[3].value else "PLANAR" arcpy.Buffer_analysis(in_features, out_features, bf_distance, method=bf_method) return
方法2:补全可选参数默认值
如果习惯用位置参数,需要为前面的可选参数传入ArcGIS的默认值(侧边类型FULL、端点类型ROUND、溶解选项空字符串、溶解字段空字符串):
def execute(self, parameters, messages): """The source code of the tool.""" in_features = parameters[0].valueAsText out_features = parameters[1].valueAsText bf_distance = parameters[2].valueAsText bf_method = parameters[3].valueAsText if parameters[3].value else "PLANAR" arcpy.Buffer_analysis(in_features, out_features, bf_distance, "FULL", "ROUND", "", "", bf_method) return
额外优化建议
- 输出参数的
datatype建议改为DEFeatureClass,因为输出是要素类而非图层,更符合ArcGIS工具的参数规范:
param1 = arcpy.Parameter( displayName = "Output Feature Class", name = "out_features", datatype = "DEFeatureClass", # 修改此处 parameterType = "Required", direction = "Output")
内容的提问来源于stack exchange,提问作者Kay Ram
相关产品推荐
相关产品推荐

