2016-06-14 145 views
1

當我嘗試使用ComputeBandStats時,需要花費很長時間才能完成。有什麼辦法可以加快這個過程嗎?ComputeBandStats極其緩慢

這裏是我的代碼:

inIMG = gdal.Open(infile) 
bandas = [inIMG.GetRasterBand(b+1) for b in range(3)] 
print('hej1') 
meanSD = [b.ComputeBandStats(1) for b in bandas] 
print('hej2') 

它打印出「hej1」相當快,但它只是幾個小時後寫道:「hej2」。因此,似乎ComputeBandStats是問題所在。

我試過它沒有參數(在早期工作)和1,但它似乎沒有任何區別。

(我使用python 2.7和GDAL 1.11.3)

+0

是否有可能,它正在採取非常長的時間?你有沒有嘗試將列表理解分解爲一個簡單的'for'循環,以便你可以監控進度? –

+0

實際上幾個小時後就完成了。有什麼辦法可以加快這個過程嗎? –

+0

你最好的辦法可能是多處理它,把任務分成多個小任務。您正在使用的數據有多大?另外,如果img文件非常大,可以使用較小的測試用例來查看該進程是否加速。 –

回答

0

我發現ComputeStatistics比ComputeBandStats快得多,所以我用它來代替。我不知道究竟有什麼區別,但除了速度優勢外,ComputeStatistics還會忽略無數據值,這對於ComputeBandStats來說是一個問題。它也計算最小,最大,平均值和標準偏差,我都需要。

這就是我所做的更改:

inIMG = gdal.Open(infile) 
bandas = [inIMG.GetRasterBand(b+1) for b in range(3)] 
print('hej1') 
stats = [b.ComputeStatistics(False) for b in bandas] 
print('hej2')