首页 > 解决方案 > 字段计算器和 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 语句中删除它之后是相同的。

我到底哪里错了?

标签: pythonarcgis

解决方案


也许检查 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

推荐阅读