Калькулятор поля и предупреждение о переклассификации строк Python 3 - PullRequest
2 голосов
/ 29 мая 2020

Я выдаю предупреждение python 3 в ArcPro, в котором говорится:

Предупреждение 002858: для некоторых строк установлено значение NULL из-за ошибки при оценке выражения python: Файл "строка", строка 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, вывести кратное из ячейки GP2040ArEA и UpOrDownNum в новом столбце UpOrDown_PerAcre.

Строка 3, насколько я понимаю, будет «UpOrDown_PerAcre = GP2040AREA * UpOrDownNum», что означает, что вывод является строкой? У меня был оператор if, классифицированный как if (UpOrDownNum == int and UpOrDownNum != 0 or UpOrDownNum != 999):, потому что в UpOrDownNum есть значения -are- null, которые могут выдавать предупреждение о 'строке', но это было то же самое после удаления этого из оператора if.

Где именно я go ошибся?

1 Ответ

0 голосов
/ 01 июня 2020

Возможно, проверьте, что 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
...