arcgis字段计算表达式不支持iif函数吗?
发布于 4 年前 作者 sblisb 3492 次浏览 来自 问答

想做个多条件判断,一直不成功,试了单个的iif都不通过 bw271h57661_1421638351_566.jpg bw178h57661_1421638351_457.jpg

14 回复

你在这个里面用字段计算器有点麻烦了,你可以直接在属性表中使用字段计算器,写if 语句是写在代码块中的 QQ截图20150119133052.png

什么叫鞋子代码? 这样不行吗? a2.jpg a1.jpg

两个字段类型都是字符串,来个示例吧

@sblisb 你的iif是什么函数?

其实ArcGIS从10.1之后就开始不支持vba,相对的VBScript的某些函数或者关键字也不能使用了,比如最近我遇到一个自动编号的代码中的Static关键字 就失效了,建议开始转向python吧,像你这种三目运算用python是很容易实现的,看下面这个函数

def iif(condition, true_part, false_part):
    return (condition and [true_part] or [false_part])[0]

untitled1.png untitled2.png 在计算字段的工具箱里面也是一样操作,代码块里面填写封装好的python的iif函数@sblisb

回答的很赞,thinkgis才人辈出啊。 发自 ThinkGIS ionic

@wandergis 谢谢!鞋子代码指python? 处理结果中提示: 提示未找到字段名称,或引号不匹配 aa1.jpg a2.png aa3.jpg

@sblisb 首先你的字段是大写的,而你却写成了小写的,另外要注意引号要使用英文状态下的引号。 untitled1.png

@admin 论坛没有传附件功能? @wandergis 又试了下,今天出错提示又变了,成了代码有误了,晕 还是传个附件给你试一下吧,麻烦你了 附件中代码另存为一个cal文件了,直接导入就行,看一下我错在哪! 附件链接

@sblisb 你附件里面的错误我就不一一列出了,首先上面的代码块中的)你写成了)还是中文的右括号并且前面还缺少一个],第二告诉你下面的!STJB!要跟字段名称对应要大写,你也没改过来。 untitled1.png 给你写个正确版的 untitled2.png 结果: untitled3.png 预逻辑脚本代码:

def iif(condition, true_part, false_part):
  return (condition and [true_part] or [false_part])[0]

表达式代码:

iif( !STJB! =="1","10","20")

python 被你们写成这样, 我也是无力吐槽

@zenwalk 哈哈,请大神来个标准的写法!

@zenwalk 同求大神来一段python代码给吾等观摩一下

晕,谢谢了 低级错误了,新手伤不起呀 经测试,字段名大小写不影响运行 @wandergis 这个函数支持多层嵌套吗? 怎么以下的还是不通过?中间条件可以用or,and之类的连接吗? iif(!STJB!==“1”,iif(!BHDJ!==“1”,“11”,iif(!BHDJ!=“2”,“12”,“13”)),iif(!STJB!==“2”,“20”,“30”))

赞助本站 点击广告
回到顶部