python - 字段计算器和 Python 3 字符串重分类警告
问题描述
我在 ArcPro 中抛出了一个 python 3 警告,其中指出:
警告 002858:由于评估 python 表达式时出错,某些行设置为 NULL:文件“字符串”,第 3 行,重新分类
我正在使用的代码如下:
UpOrDown_PerAcre = reclass(!GP2040Area!,!UpOrDownNum!)
代码块
def reclass(GP2040AREA, UpOrDownNum):
if (UpOrDownNum != 0 or UpOrDownNum != 999):
UpOrDown_PerAcre = GP2040AREA * UpOrDownNum
return UpOrDown_PerAcre
我要做的是,对于 UpOrDownNum 中不是 0 或 999 的每个单元格,在新列 UpOrDown_PerAcre 中输出单元格 GP2040ArEA 和 UpOrDownNum 的倍数。
根据我的理解,第 3 行是“UpOrDown_PerAcre = GP2040AREA * UpOrDownNum”,也就是说输出是一个字符串?我确实将 if 语句归类为if (UpOrDownNum == int and UpOrDownNum != 0 or UpOrDownNum != 999):
因为 UpOrDownNum 中有 -are- null 值,这可能会引发“字符串”警告,但在从 if 语句中删除它之后是相同的。
我到底哪里错了?
解决方案
也许检查 UpOrDownNum 不是 None (Python 的 null 版本):
def reclass(GP2040AREA, UpOrDownNum):
if (UpOrDownNum is not None and (UpOrDownNum != 0 or UpOrDownNum != 999)):
UpOrDown_PerAcre = GP2040AREA * UpOrDownNum
return UpOrDown_PerAcre
else:
return None # or 0 or -1 or whatever you want to signify the UpOrDown_PerAcre wasn't calculated
推荐阅读
- scp - 仅在 SCP 中禁止欢迎横幅
- sql - ORA-01427: 单行子查询在更新语句中返回多于一行
- typo3 - Typo3 tx_news 类别菜单:仅显示使用的类别
- vba - 如何使用电子表格中的命名约定创建 600 多个 word 文档副本?
- html - 为什么`backface-visibility:hidden` 在 iframe 上不起作用?
- c# - 有没有办法为不同命名空间中的同名扩展方法指定使用哪种扩展方法?
- ios - 通知到来时没有调用 didReceiveRemoteNotification 方法
- javascript - 在倒计时脚本上设置 GMT
- javascript - Leaflet.js - 如果所有弹出窗口都关闭,则将视图返回到起始位置
- java - 使用 Java 运行 Windows 服务