我在使用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'
似乎不喜欢 - / *。我输入了数学。
任何帮助将不胜感激。
答案 0 :(得分:1)
对我来说,看起来你正在操作字符串,这是你的变量之一,如LMax_B1
等,是一个unicode字符串,或者可能都是unicode字符串。您必须先将它们转换为浮点数(或其他任何值),即更改:
LMax_B1 - LMin_B1
到
float(LMax_B1) - float(LMin_B1)
同样适用于所有其他变量。顺便说一句,您不需要为运算符+ - * /
导入数学运算。如果您使用数字,它们始终可用并按预期工作。更高级的函数需要数学,如sin
等。