之前用IDL写高分预处理的时候,就有想过可不可以用python+GDAL写,可是一直卡在了第一步的正射校正,gdal.Warp()
函数始终找不到放DEM的位置,最近终于找到了。我尝试了一景1.3G的GF1/WFV,采用ENVI/IDL的脚本运行每次都需要500s以上,而python3+osgeo则稳定在惊人的15s以内!就速度而言,python3+osgeo远远快于ENVI接口。
以下是今天写的简单的代码,包括解压函数,正射校正函数和融合函数(GDAL的融合方法只有默认的加权brovey变换)。运行了一景GF6/PMS,并和IDL版白鸽的结果作了简单对比。
import sys, os, tarfile, tempfile as tmp
from osgeo import gdal, osr
from gdalconst import *
def unpackage(fn):
dirname, basename = os.path.split(fn)
odir = os.path.join(dirname, 'snowyDove_' + basename[0:-7])
with tarfile.open(fn) as file:
file.extractall(path = odir)
return odir
def ortho(ifn, demfn, res, ofn):
ds = gdal.Open(ifn, GA_ReadOnly)
isNorth = 1 if os.path.basename(ifn).split('_')[3][0] == 'N' else 0
zone = str(int(float(os