2013-06-20 69 views
0

我有問題讓python 2.7來做這個公式。其目的是將Landsat 7 DN值轉換爲反射值。 b1引用band1 TIFF圖像。公式中不支持的操作數類型(s)

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

對我來說,它看起來像你正在操作字符串,這是你的變量之一,如LMax_B1等是一個Unicode字符串,或可能他們都是。你必須將它們轉換爲浮點數(或不管他們是)第一,即改變:

LMax_B1 - LMin_B1 

float(LMax_B1) - float(LMin_B1) 

這樣做也爲所有其他變量。順便說一下,您不需要爲運營商+ - * /導入數學。如果您使用數字進行操作,它們始終可用並按預期工作。數學需要更高級的功能,如sin

+0

嗨約翰內斯,你的權利我的變量是字符串,但我改變他們創建時浮動。我按照你所說的關於添加浮點數的方式做了,但是我得到了TypeError:float()參數必須是字符串或數字 – Simon

+0

可能並非所有的變量都是unicode字符串。你能打印所有變量,還是更好:打印類型(QCALMax_B1)? –

+0

結果是float類型。但是b1是一個列表。 [u'LE71460402013077PFS00_B1.TIF']所以這就是問題所在。 B1應該引用我想要執行計算的band 1圖像。我不知道該怎麼做。我應該使用另一個模塊嗎? – Simon

相關問題