ISCE_INSAR/contrib/stack/stripmapStack/resampleOffsets.py

92 lines
2.3 KiB
Python
Executable File

#!/usr/bin/env python3
# Heresh Fattahi
import numpy as np
import argparse
import os
import isce
import isceobj
import shelve
import gdal
import osr
from gdalconst import GA_ReadOnly
from scipy import ndimage
GDAL2NUMPY_DATATYPE = {
1 : np.uint8,
2 : np.uint16,
3 : np.int16,
4 : np.uint32,
5 : np.int32,
6 : np.float32,
7 : np.float64,
10: np.complex64,
11: np.complex128,
}
def createParser():
'''
Command line parser.
'''
parser = argparse.ArgumentParser( description='interpolates and adds to the targetFile')
parser.add_argument('-i', '--input', dest='input', type=str, default=None,
help='input file')
parser.add_argument('-t', '--target_file', dest='targetFile', type=str, default=None,
help='the reference file that the input will be interpolated to its size and added to it')
parser.add_argument('-o', '--output', dest='output', type=str, default=None,
help='output file')
return parser
def cmdLineParse(iargs = None):
parser = createParser()
return parser.parse_args(args=iargs)
def getShape(file):
dataset = gdal.Open(file,GA_ReadOnly)
return dataset.RasterYSize, dataset.RasterXSize
def resampleOffset(maskedFiltOffset, geometryOffset, resampledOffset, outName):
length, width = getShape(geometryOffset)
print('oversampling the filtered and masked offsets to the width and length:', width, ' ', length )
cmd = 'gdal_translate -of ENVI -outsize ' + str(width) + ' ' + str(length) + ' ' + maskedFiltOffset + ' ' + resampledOffset
os.system(cmd)
img = isceobj.createImage()
img.setFilename(resampledOffset)
img.setWidth(width)
img.setLength(length)
img.setAccessMode('READ')
img.bands = 1
img.dataType = 'FLOAT'
img.scheme = 'BIP'
img.renderHdr()
img.renderVRT()
print ('Adding the dense offsets to the geometry offsets. Output: ', outName)
cmd = "gdal_calc.py -A " + geometryOffset + " -B " + resampledOffset + " --outfile=" + outName + ' --calc="A+B" --format=ENVI --type=Float64 --quiet --overwrite'
print (cmd)
os.system(cmd)
def main(iargs=None):
inps = cmdLineParse(iargs)
resampledDenseOffset = inps.input + '.resampled'
resampleOffset(inps.input, inps.targetFile, resampledDenseOffset, inps.output)
if __name__ == '__main__':
'''
Main driver.
'''
main()