ComputeBandStats极其缓慢

问题描述:

当我尝试使用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文件非常大,可以使用较小的测试用例来查看该进程是否加速。 –

我发现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')