今天在arcgis脚本开发中碰到一个问题,在定义变量时,用的是GetParameterAsText函数,此函数返回的是一个字符串,但是在输入时,限定了只能输入整型数据。
#定义的接收变量
zaodao_gw = arcpy.GetParameterAsText(3)
wandao_gw = arcpy.GetParameterAsText(4)
youcai_gw = arcpy.GetParameterAsText(5)
hanyoucai_gw = arcpy.GetParameterAsText(6)
mianhua_gw = arcpy.GetParameterAsText(7)
ganshu_gw = arcpy.GetParameterAsText(8)
huasheng_gw =arcpy.GetParameterAsText(9)
candou_gw = arcpy.GetParameterAsText(10)
在后面函数中定义了一个元组变量gwxs,直接接收变量值。 gwxs = (zaodao_gw, wandao_gw, hanyoucai_gw, mianhua_gw)
在将此元组变量直接用gwxs[0],gwxs[1],参与数学计算时,报错,原因是类型错误。
这时就需要将此字符串的元组变量,统一转换成整型的元组变量。搜索发现,python提供了一个lambda,lambda是Python预留的关键字,其中有个map函数。此时lambda函数用于指定对列表中每一个元素的共同操作。例如map(lambda x: x+1, [1, 2,3])将列表[1, 2, 3]中的元素分别加1,其结果[2, 3, 4]。
将以上的元组代码改造下,
gwxs_new=tuple(map(lambda x: int(x),gwxs)),这时gwxs_new就变成了一个整型元组,这时候就可以直接调用了。