92 lines
3.3 KiB
Python
92 lines
3.3 KiB
Python
|
#
|
||
|
# Author: Joshua Cohen
|
||
|
# Copyright 2016
|
||
|
#
|
||
|
|
||
|
import os
|
||
|
import isceobj
|
||
|
import logging
|
||
|
import numpy as np
|
||
|
from imageMath import IML
|
||
|
|
||
|
def runCropOffsetGeo(self):
|
||
|
'''
|
||
|
Crops and resamples lat/lon/los/z images created by topsApp to the
|
||
|
same grid as the offset field image.
|
||
|
'''
|
||
|
print('\n====================================')
|
||
|
print('Cropping topo products to offset grid...')
|
||
|
print('====================================')
|
||
|
|
||
|
suffix = '.full'
|
||
|
if (self.numberRangeLooks == 1) and (self.numberAzimuthLooks == 1):
|
||
|
suffix=''
|
||
|
flist1b = ['lat.rdr'+suffix, 'lon.rdr'+suffix, 'z.rdr'+suffix]
|
||
|
flist2b = [self._insar.mergedLosName+suffix]
|
||
|
|
||
|
wend = (self.offset_width*self.skipwidth) + self.offset_left
|
||
|
lend = (self.offset_length*self.skiphgt) + self.offset_top
|
||
|
|
||
|
for filename in flist1b:
|
||
|
print('\nCropping %s to %s ...\n' % (filename,filename+'.crop'))
|
||
|
f = os.path.join(self._insar.mergedDirname, filename)
|
||
|
outArr = []
|
||
|
mmap = IML.mmapFromISCE(f,logging)
|
||
|
'''
|
||
|
for i in range(self.offset_top, mmap.length, self.skiphgt):
|
||
|
outArr.append(mmap.bands[0][i][self.offset_left::self.skipwidth])
|
||
|
'''
|
||
|
for i in range(self.offset_top, lend, self.skiphgt):
|
||
|
outArr.append(mmap.bands[0][i][self.offset_left:wend:self.skipwidth])
|
||
|
|
||
|
outFile = os.path.join(self._insar.mergedDirname, filename+'.crop')
|
||
|
outImg = isceobj.createImage()
|
||
|
outImg.bands = 1
|
||
|
outImg.scheme = 'BIP'
|
||
|
outImg.dataType = 'DOUBLE'
|
||
|
outImg.setWidth(len(outArr[0]))
|
||
|
outImg.setLength(len(outArr))
|
||
|
outImg.setFilename(outFile)
|
||
|
with open(outFile,'wb') as fid:
|
||
|
for i in range(len(outArr)):
|
||
|
np.array(outArr[i]).astype(np.double).tofile(fid) ### WAY easier to write to file like this
|
||
|
outImg.renderHdr()
|
||
|
print('Cropped %s' % (filename))
|
||
|
|
||
|
for filename in flist2b:
|
||
|
print('\nCropping %s to %s ...\n' % (filename,filename+'.crop'))
|
||
|
f = os.path.join(self._insar.mergedDirname, filename)
|
||
|
outArrCh1 = []
|
||
|
outArrCh2 = []
|
||
|
mmap = IML.mmapFromISCE(f,logging)
|
||
|
'''
|
||
|
for i in range(self.offset_top, mmap.length, self.skiphgt):
|
||
|
outArrCh1.append(mmap.bands[0][i][self.offset_left::self.skipwidth])
|
||
|
outArrCh2.append(mmap.bands[1][i][self.offset_left::self.skipwidth])
|
||
|
'''
|
||
|
for i in range(self.offset_top, lend, self.skiphgt):
|
||
|
outArrCh1.append(mmap.bands[0][i][self.offset_left:wend:self.skipwidth])
|
||
|
outArrCh2.append(mmap.bands[1][i][self.offset_left:wend:self.skipwidth])
|
||
|
|
||
|
outFile = os.path.join(self._insar.mergedDirname, filename+'.crop')
|
||
|
outImg = isceobj.createImage()
|
||
|
outImg.bands = 2
|
||
|
outImg.scheme = 'BIL'
|
||
|
outImg.dataType = 'FLOAT'
|
||
|
outImg.setWidth(len(outArrCh1[0]))
|
||
|
outImg.setLength(len(outArrCh1))
|
||
|
outImg.setFilename(outFile)
|
||
|
with open(outFile,'wb') as fid:
|
||
|
for i in range(len(outArrCh1)):
|
||
|
np.array(outArrCh1[i]).astype(np.float32).tofile(fid)
|
||
|
np.array(outArrCh2[i]).astype(np.float32).tofile(fid)
|
||
|
outImg.renderHdr()
|
||
|
print('Cropped %s' % (filename))
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
'''
|
||
|
Default run method for runCropOffsetGeo.
|
||
|
'''
|
||
|
main()
|