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)
答
我发现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')
是否有可能,它正在采取非常长的时间?你有没有尝试将列表理解分解为一个简单的'for'循环,以便你可以监控进度? –
实际上几个小时后就完成了。有什么办法可以加快这个过程吗? –
你最好的办法可能是多处理它,把任务分成多个小任务。您正在使用的数据有多大?另外,如果img文件非常大,可以使用较小的测试用例来查看该进程是否加速。 –