公式中不支持的操作数类型

时间:2013-06-20 08:43:38

标签: python formula operand

我在使用python 2.7来执行此公式时遇到问题。其目的是将Landsat 7 DN值转换为反射率值。 b1引用band1 TIFF图像。

L_B1 = float(((LMax_B1 - LMin_B1) / (QCALMax_B1 - QCALMin_B1)) * (b1 - QCALMin_B1) + LMin_B1)

我得到的错误信息是:

Runtime error 
Traceback (most recent call last):
  File "<string>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'unicode' and 'unicode'

似乎不喜欢 - / *。我输入了数学。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

对我来说,看起来你正在操作字符串,这是你的变量之一,如LMax_B1等,是一个unicode字符串,或者可能都是unicode字符串。您必须先将它们转换为浮点数(或其他任何值),即更改:

LMax_B1 - LMin_B1

float(LMax_B1) - float(LMin_B1)

同样适用于所有其他变量。顺便说一句,您不需要为运算符+ - * /导入数学运算。如果您使用数字,它们始终可用并按预期工作。更高级的函数需要数学,如sin等。