From 28bb81ed03629aa9375fa9d1d6dcfc7e4af8b386 Mon Sep 17 00:00:00 2001 From: CunrenLiang <56097947+CunrenLiang@users.noreply.github.com> Date: Mon, 11 May 2020 18:05:30 -0700 Subject: [PATCH 1/7] improve ALOS-2 ionospheric correciton and geocode --- .../isceobj/Alos2burstProc/runGeocodeSd.py | 5 ++- .../isceobj/Alos2burstProc/runIonSubband.py | 42 ++++++++++++++++++- 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/components/isceobj/Alos2burstProc/runGeocodeSd.py b/components/isceobj/Alos2burstProc/runGeocodeSd.py index e8634e3..445fa68 100644 --- a/components/isceobj/Alos2burstProc/runGeocodeSd.py +++ b/components/isceobj/Alos2burstProc/runGeocodeSd.py @@ -4,6 +4,7 @@ # import os +import glob import logging import numpy as np @@ -31,7 +32,9 @@ def runGeocodeSd(self): if self.geocodeListSd == None: geocodeList = self._insar.multilookCoherenceSd + self._insar.azimuthDeformationSd + self._insar.maskedAzimuthDeformationSd else: - geocodeList = self.geocodeListSd + geocodeList = [] + for xxx in self.geocodeListSd: + geocodeList += glob.glob(xxx) if self.bbox == None: bbox = getBboxGeo(masterTrack) diff --git a/components/isceobj/Alos2burstProc/runIonSubband.py b/components/isceobj/Alos2burstProc/runIonSubband.py index 131b6f3..f02a781 100644 --- a/components/isceobj/Alos2burstProc/runIonSubband.py +++ b/components/isceobj/Alos2burstProc/runIonSubband.py @@ -252,18 +252,56 @@ def runIonSubband(self): #list of input files inputInterferograms = [] inputAmplitudes = [] + phaseDiff = [None] for j, swathNumber in enumerate(range(self._insar.startingSwath, self._insar.endingSwath + 1)): swathDir = 's{}'.format(swathNumber) inputInterferograms.append(os.path.join('../', swathDir, self._insar.interferogram)) inputAmplitudes.append(os.path.join('../', swathDir, self._insar.amplitude)) + #compute phase needed to be compensated using startingRange + if j >= 1: + #phaseDiffSwath1 = -4.0 * np.pi * (masterTrack.frames[i].swaths[j-1].startingRange - slaveTrack.frames[i].swaths[j-1].startingRange)/subbandRadarWavelength[k] + #phaseDiffSwath2 = -4.0 * np.pi * (masterTrack.frames[i].swaths[j].startingRange - slaveTrack.frames[i].swaths[j].startingRange)/subbandRadarWavelength[k] + phaseDiffSwath1 = +4.0 * np.pi * masterTrack.frames[i].swaths[j-1].startingRange * (1.0/radarWavelength - 1.0/subbandRadarWavelength[k]) \ + -4.0 * np.pi * slaveTrack.frames[i].swaths[j-1].startingRange * (1.0/radarWavelength - 1.0/subbandRadarWavelength[k]) + phaseDiffSwath2 = +4.0 * np.pi * masterTrack.frames[i].swaths[j].startingRange * (1.0/radarWavelength - 1.0/subbandRadarWavelength[k]) \ + -4.0 * np.pi * slaveTrack.frames[i].swaths[j].startingRange * (1.0/radarWavelength - 1.0/subbandRadarWavelength[k]) + if masterTrack.frames[i].swaths[j-1].startingRange - slaveTrack.frames[i].swaths[j-1].startingRange == \ + masterTrack.frames[i].swaths[j].startingRange - slaveTrack.frames[i].swaths[j].startingRange: + #phaseDiff.append(phaseDiffSwath2 - phaseDiffSwath1) + #if master and slave versions are all before or after version 2.025 (starting range error < 0.5 m), + #it should be OK to do the above. + #see results in neom where it meets the above requirement, but there is still phase diff + #to be less risky, we do not input values here + phaseDiff.append(None) + else: + phaseDiff.append(None) + #note that frame parameters are updated after mosaicking #mosaic amplitudes swathMosaic(masterTrack.frames[i], inputAmplitudes, self._insar.amplitude, rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, resamplingMethod=0) #mosaic interferograms - swathMosaic(masterTrack.frames[i], inputInterferograms, self._insar.interferogram, - rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, updateFrame=False, phaseCompensation=True, resamplingMethod=1) + #These are for ALOS-2, may need to change for ALOS-4! + phaseDiffFixed = [0.0, 0.4754024578084084, 0.9509913179406437, 1.4261648478671614, 2.179664007520499, 2.6766909968024932, 3.130810857] + + snapThreshold = 0.2 + (phaseDiffEst, phaseDiffUsed, phaseDiffSource) = swathMosaic(masterTrack.frames[i], inputInterferograms, self._insar.interferogram, + rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, updateFrame=False, + phaseCompensation=True, phaseDiff=phaseDiff, phaseDiffFixed=phaseDiffFixed, snapThreshold=snapThreshold, pcRangeLooks=1, pcAzimuthLooks=3, + filt=False, resamplingMethod=1) + + #the first item is meaningless for all the following list, so only record the following items + catalog.addItem('{} subswath phase difference input'.format(ionDir['subband'][k]), phaseDiff[1:], 'runIonSubband') + catalog.addItem('{} subswath phase difference estimated'.format(ionDir['subband'][k]), phaseDiffEst[1:], 'runIonSubband') + catalog.addItem('{} subswath phase difference used'.format(ionDir['subband'][k]), phaseDiffUsed[1:], 'runIonSubband') + catalog.addItem('{} subswath phase difference used source'.format(ionDir['subband'][k]), phaseDiffSource[1:], 'runIonSubband') + #check if there is value around 3.130810857, which may not be stable + phaseDiffUnstableExist = False + for xxx in phaseDiffUsed: + if abs(abs(xxx) - 3.130810857) < 0.2: + phaseDiffUnstableExist = True + catalog.addItem('{} subswath phase difference unstable exists'.format(ionDir['subband'][k]), phaseDiffUnstableExist, 'runIonSubband') create_xml(self._insar.amplitude, masterTrack.frames[i].numberOfSamples, masterTrack.frames[i].numberOfLines, 'amp') create_xml(self._insar.interferogram, masterTrack.frames[i].numberOfSamples, masterTrack.frames[i].numberOfLines, 'int') From aee2495367c73cfee4883eff579f4caf006fdda2 Mon Sep 17 00:00:00 2001 From: CunrenLiang <56097947+CunrenLiang@users.noreply.github.com> Date: Mon, 11 May 2020 18:06:18 -0700 Subject: [PATCH 2/7] improve ALOS-2 ionospheric correciton and geocode --- components/isceobj/Alos2Proc/runGeocode.py | 5 +- components/isceobj/Alos2Proc/runIonSubband.py | 62 ++++++++++++++++++- .../isceobj/Alos2Proc/runSwathMosaic.py | 53 +++++++++++++++- 3 files changed, 114 insertions(+), 6 deletions(-) diff --git a/components/isceobj/Alos2Proc/runGeocode.py b/components/isceobj/Alos2Proc/runGeocode.py index 9dfbbbf..386bb38 100644 --- a/components/isceobj/Alos2Proc/runGeocode.py +++ b/components/isceobj/Alos2Proc/runGeocode.py @@ -4,6 +4,7 @@ # import os +import glob import logging import numpy as np @@ -42,7 +43,9 @@ def runGeocode(self): if self.doIon: geocodeList.append(self._insar.multilookIon) else: - geocodeList = self.geocodeList + geocodeList = [] + for xxx in self.geocodeList: + geocodeList += glob.glob(xxx) numberRangeLooks = self._insar.numberRangeLooks1 * self._insar.numberRangeLooks2 numberAzimuthLooks = self._insar.numberAzimuthLooks1 * self._insar.numberAzimuthLooks2 diff --git a/components/isceobj/Alos2Proc/runIonSubband.py b/components/isceobj/Alos2Proc/runIonSubband.py index ef95806..ce7d16f 100644 --- a/components/isceobj/Alos2Proc/runIonSubband.py +++ b/components/isceobj/Alos2Proc/runIonSubband.py @@ -88,6 +88,23 @@ def runIonSubband(self): frameDir = 'f{}_{}'.format(i+1, frameNumber) for j, swathNumber in enumerate(range(self._insar.startingSwath, self._insar.endingSwath + 1)): swathDir = 's{}'.format(swathNumber) + + #skip this time consuming process, if interferogram already exists + if os.path.isfile(os.path.join(ionDir['subband'][0], frameDir, swathDir, self._insar.interferogram)) and \ + os.path.isfile(os.path.join(ionDir['subband'][0], frameDir, swathDir, self._insar.interferogram+'.vrt')) and \ + os.path.isfile(os.path.join(ionDir['subband'][0], frameDir, swathDir, self._insar.interferogram+'.xml')) and \ + os.path.isfile(os.path.join(ionDir['subband'][0], frameDir, swathDir, self._insar.amplitude)) and \ + os.path.isfile(os.path.join(ionDir['subband'][0], frameDir, swathDir, self._insar.amplitude+'.vrt')) and \ + os.path.isfile(os.path.join(ionDir['subband'][0], frameDir, swathDir, self._insar.amplitude+'.xml')) and \ + os.path.isfile(os.path.join(ionDir['subband'][1], frameDir, swathDir, self._insar.interferogram)) and \ + os.path.isfile(os.path.join(ionDir['subband'][1], frameDir, swathDir, self._insar.interferogram+'.vrt')) and \ + os.path.isfile(os.path.join(ionDir['subband'][1], frameDir, swathDir, self._insar.interferogram+'.xml')) and \ + os.path.isfile(os.path.join(ionDir['subband'][1], frameDir, swathDir, self._insar.amplitude)) and \ + os.path.isfile(os.path.join(ionDir['subband'][1], frameDir, swathDir, self._insar.amplitude+'.vrt')) and \ + os.path.isfile(os.path.join(ionDir['subband'][1], frameDir, swathDir, self._insar.amplitude+'.xml')): + print('interferogram already exists at swath {}, frame {}'.format(swathNumber, frameNumber)) + continue + #filter master and slave images for slcx in [self._insar.masterSlc, self._insar.slaveSlc]: slc = os.path.join('../', frameDir, swathDir, slcx) @@ -279,18 +296,56 @@ def runIonSubband(self): #list of input files inputInterferograms = [] inputAmplitudes = [] + phaseDiff = [None] for j, swathNumber in enumerate(range(self._insar.startingSwath, self._insar.endingSwath + 1)): swathDir = 's{}'.format(swathNumber) inputInterferograms.append(os.path.join('../', swathDir, self._insar.interferogram)) inputAmplitudes.append(os.path.join('../', swathDir, self._insar.amplitude)) + #compute phase needed to be compensated using startingRange + if j >= 1: + #phaseDiffSwath1 = -4.0 * np.pi * (masterTrack.frames[i].swaths[j-1].startingRange - slaveTrack.frames[i].swaths[j-1].startingRange)/subbandRadarWavelength[k] + #phaseDiffSwath2 = -4.0 * np.pi * (masterTrack.frames[i].swaths[j].startingRange - slaveTrack.frames[i].swaths[j].startingRange)/subbandRadarWavelength[k] + phaseDiffSwath1 = +4.0 * np.pi * masterTrack.frames[i].swaths[j-1].startingRange * (1.0/radarWavelength - 1.0/subbandRadarWavelength[k]) \ + -4.0 * np.pi * slaveTrack.frames[i].swaths[j-1].startingRange * (1.0/radarWavelength - 1.0/subbandRadarWavelength[k]) + phaseDiffSwath2 = +4.0 * np.pi * masterTrack.frames[i].swaths[j].startingRange * (1.0/radarWavelength - 1.0/subbandRadarWavelength[k]) \ + -4.0 * np.pi * slaveTrack.frames[i].swaths[j].startingRange * (1.0/radarWavelength - 1.0/subbandRadarWavelength[k]) + if masterTrack.frames[i].swaths[j-1].startingRange - slaveTrack.frames[i].swaths[j-1].startingRange == \ + masterTrack.frames[i].swaths[j].startingRange - slaveTrack.frames[i].swaths[j].startingRange: + #phaseDiff.append(phaseDiffSwath2 - phaseDiffSwath1) + #if master and slave versions are all before or after version 2.025 (starting range error < 0.5 m), + #it should be OK to do the above. + #see results in neom where it meets the above requirement, but there is still phase diff + #to be less risky, we do not input values here + phaseDiff.append(None) + else: + phaseDiff.append(None) + #note that frame parameters are updated after mosaicking, here no need to update parameters #mosaic amplitudes swathMosaic(masterTrack.frames[i], inputAmplitudes, self._insar.amplitude, rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, resamplingMethod=0) #mosaic interferograms - swathMosaic(masterTrack.frames[i], inputInterferograms, self._insar.interferogram, - rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, updateFrame=False, phaseCompensation=True, resamplingMethod=1) + #These are for ALOS-2, may need to change for ALOS-4! + phaseDiffFixed = [0.0, 0.4754024578084084, 0.9509913179406437, 1.4261648478671614, 2.179664007520499, 2.6766909968024932, 3.130810857] + + snapThreshold = 0.2 + (phaseDiffEst, phaseDiffUsed, phaseDiffSource) = swathMosaic(masterTrack.frames[i], inputInterferograms, self._insar.interferogram, + rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, updateFrame=False, + phaseCompensation=True, phaseDiff=phaseDiff, phaseDiffFixed=phaseDiffFixed, snapThreshold=snapThreshold, pcRangeLooks=1, pcAzimuthLooks=4, + filt=False, resamplingMethod=1) + + #the first item is meaningless for all the following list, so only record the following items + catalog.addItem('{} subswath phase difference input'.format(ionDir['subband'][k]), phaseDiff[1:], 'runIonSubband') + catalog.addItem('{} subswath phase difference estimated'.format(ionDir['subband'][k]), phaseDiffEst[1:], 'runIonSubband') + catalog.addItem('{} subswath phase difference used'.format(ionDir['subband'][k]), phaseDiffUsed[1:], 'runIonSubband') + catalog.addItem('{} subswath phase difference used source'.format(ionDir['subband'][k]), phaseDiffSource[1:], 'runIonSubband') + #check if there is value around 3.130810857, which may not be stable + phaseDiffUnstableExist = False + for xxx in phaseDiffUsed: + if abs(abs(xxx) - 3.130810857) < 0.2: + phaseDiffUnstableExist = True + catalog.addItem('{} subswath phase difference unstable exists'.format(ionDir['subband'][k]), phaseDiffUnstableExist, 'runIonSubband') create_xml(self._insar.amplitude, masterTrack.frames[i].numberOfSamples, masterTrack.frames[i].numberOfLines, 'amp') create_xml(self._insar.interferogram, masterTrack.frames[i].numberOfSamples, masterTrack.frames[i].numberOfLines, 'int') @@ -385,7 +440,8 @@ def runIonSubband(self): os.chdir(ionDir['subband'][k]) for i, frameNumber in enumerate(self._insar.masterFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) - shutil.rmtree(frameDir) + #keep subswath interferograms + #shutil.rmtree(frameDir) #cmd = 'rm -rf {}'.format(frameDir) #runCmd(cmd) os.chdir('../') diff --git a/components/isceobj/Alos2Proc/runSwathMosaic.py b/components/isceobj/Alos2Proc/runSwathMosaic.py index 9d6b175..3e450e6 100644 --- a/components/isceobj/Alos2Proc/runSwathMosaic.py +++ b/components/isceobj/Alos2Proc/runSwathMosaic.py @@ -162,21 +162,30 @@ def runSwathMosaic(self): self._insar.procDoc.addAllFromCatalog(catalog) -def swathMosaic(frame, inputFiles, outputfile, rangeOffsets, azimuthOffsets, numberOfRangeLooks, numberOfAzimuthLooks, updateFrame=False, phaseCompensation=False, pcRangeLooks=1, pcAzimuthLooks=4, filt=False, resamplingMethod=0): +def swathMosaic(frame, inputFiles, outputfile, rangeOffsets, azimuthOffsets, numberOfRangeLooks, numberOfAzimuthLooks, updateFrame=False, phaseCompensation=False, phaseDiff=None, phaseDiffFixed=None, snapThreshold=None, pcRangeLooks=1, pcAzimuthLooks=4, filt=False, resamplingMethod=0): ''' mosaic swaths + #PART 1. REGULAR INPUT PARAMTERS frame: frame inputFiles: input file list - output file: output mosaic file + outputfile: output mosaic file rangeOffsets: range offsets azimuthOffsets: azimuth offsets numberOfRangeLooks: number of range looks of the input files numberOfAzimuthLooks: number of azimuth looks of the input files + updateFrame: whether update frame parameters + + #PART 2. PARAMETERS FOR COMPUTING PHASE DIFFERENCE BETWEEN SUBSWATHS phaseCompensation: whether do phase compensation for each swath + phaseDiff: pre-computed compensation phase for each swath + phaseDiffFixed: if provided, the estimated value will snap to one of these values, which is nearest to the estimated one. + snapThreshold: this is used with phaseDiffFixed pcRangeLooks: number of range looks to take when compute swath phase difference pcAzimuthLooks: number of azimuth looks to take when compute swath phase difference filt: whether do filtering when compute swath phase difference + + #PART 3. RESAMPLING METHOD resamplingMethod: 0: amp resampling. 1: int resampling. ''' from contrib.alos2proc_f.alos2proc_f import rect_with_looks @@ -335,10 +344,33 @@ def swathMosaic(frame, inputFiles, outputfile, rangeOffsets, azimuthOffsets, num #compute compensation phase for each swath diffMean2 = [0.0 for i in range(numberOfSwaths)] + phaseDiffEst = [None for i in range(numberOfSwaths)] + #True if: + # (1) used diff phase from input + # (2) used estimated diff phase after snapping to a fixed diff phase provided + #False if: + # (1) used purely estimated diff phase + phaseDiffSource = ['estimated' for i in range(numberOfSwaths)] + # 1. 'estimated': estimated from subswath overlap + # 2. 'estimated+snap': estimated from subswath overlap and snap to a fixed value + # 3. 'input': pre-computed + # confidence level: 3 > 2 > 1 if phaseCompensation: #compute swath phase offset diffMean = [0.0] for i in range(1, numberOfSwaths): + + #no need to estimate diff phase if provided from input + ##################################################################### + if phaseDiff!=None: + if phaseDiff[i]!=None: + diffMean.append(phaseDiff[i]) + phaseDiffSource[i] = 'input' + print('using pre-computed phase offset given from input') + print('phase offset: subswath{} - subswath{}: {}'.format(frame.swaths[i-1].swathNumber, frame.swaths[i].swathNumber, phaseDiff[i])) + continue + ##################################################################### + #all indexes start with zero, all the computed start/end sample/line indexes are included. #no need to add edge here, as we are going to find first/last nonzero sample/lines later @@ -467,6 +499,19 @@ def swathMosaic(frame, inputFiles, outputfile, rangeOffsets, azimuthOffsets, num create_xml(filename, width7, length7, 'float') + #save purely estimated diff phase + phaseDiffEst[i] = diffMean0 + + #if fixed diff phase provided and the estimated diff phase is close enough to a fixed value, snap to it + ############################################################################################################ + if phaseDiffFixed != None: + phaseDiffTmp = np.absolute(np.absolute(np.array(phaseDiffFixed)) - np.absolute(diffMean0)) + phaseDiffTmpMinIndex = np.argmin(phaseDiffTmp) + if phaseDiffTmp[phaseDiffTmpMinIndex] < snapThreshold: + diffMean0 = np.sign(diffMean0) * np.absolute(phaseDiffFixed[phaseDiffTmpMinIndex]) + phaseDiffSource[i] = 'estimated+snap' + ############################################################################################################ + diffMean.append(diffMean0) print('phase offset: subswath{} - subswath{}: {}'.format(frame.swaths[i-1].swathNumber, frame.swaths[i].swathNumber, diffMean0)) @@ -503,6 +548,10 @@ def swathMosaic(frame, inputFiles, outputfile, rangeOffsets, azimuthOffsets, num frame.azimuthLineInterval = frame.swaths[0].azimuthLineInterval + if phaseCompensation: + # estimated phase diff, used phase diff, used phase diff source + return (phaseDiffEst, diffMean, phaseDiffSource) + def swathMosaicParameters(frame, rangeOffsets, azimuthOffsets, numberOfRangeLooks, numberOfAzimuthLooks): ''' mosaic swaths (this is simplified version of swathMosaic to update parameters only) From 33ce327fe292e9142126bd4a8da36d66a7d4d658 Mon Sep 17 00:00:00 2001 From: CunrenLiang <56097947+CunrenLiang@users.noreply.github.com> Date: Mon, 11 May 2020 18:12:01 -0700 Subject: [PATCH 3/7] update input xml of alos2App.py, alos2burstApp.py --- examples/input_files/alos2/alos2App.xml | 1 + examples/input_files/alos2/alos2burstApp.xml | 2 ++ .../alos2/example_input_files/scansar-scansar/1/alos2App.xml | 1 + .../alos2/example_input_files/scansar-scansar/2/alos2App.xml | 1 + .../alos2/example_input_files/scansar-scansar/3/alos2App.xml | 1 + .../alos2/example_input_files/scansar-scansar/4/alos2App.xml | 1 + .../alos2/example_input_files/scansar-scansar_7s/alos2App.xml | 1 + .../scansar-scansar_burst/1/alos2burstApp.xml | 2 ++ .../scansar-scansar_burst/2/alos2burstApp.xml | 2 ++ .../scansar-scansar_burst/3/alos2burstApp.xml | 2 ++ .../scansar-scansar_burst/4/alos2burstApp.xml | 2 ++ .../alos2/example_input_files/scansar-stripmap/1/alos2App.xml | 1 + .../alos2/example_input_files/scansar-stripmap/2/alos2App.xml | 1 + .../alos2/example_input_files/stripmap-stripmap/1/alos2App.xml | 1 + .../alos2/example_input_files/stripmap-stripmap/2/alos2App.xml | 1 + .../alos2/example_input_files/stripmap-stripmap/3/alos2App.xml | 1 + .../alos2/example_input_files/stripmap-stripmap/4/alos2App.xml | 1 + 17 files changed, 22 insertions(+) diff --git a/examples/input_files/alos2/alos2App.xml b/examples/input_files/alos2/alos2App.xml index 69c86af..235c28d 100644 --- a/examples/input_files/alos2/alos2App.xml +++ b/examples/input_files/alos2/alos2App.xml @@ -211,6 +211,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 diff --git a/examples/input_files/alos2/alos2burstApp.xml b/examples/input_files/alos2/alos2burstApp.xml index 18622ca..d4645d5 100644 --- a/examples/input_files/alos2/alos2burstApp.xml +++ b/examples/input_files/alos2/alos2burstApp.xml @@ -204,6 +204,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 @@ -279,6 +280,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 diff --git a/examples/input_files/alos2/example_input_files/scansar-scansar/1/alos2App.xml b/examples/input_files/alos2/example_input_files/scansar-scansar/1/alos2App.xml index c597ce2..3a3680d 100644 --- a/examples/input_files/alos2/example_input_files/scansar-scansar/1/alos2App.xml +++ b/examples/input_files/alos2/example_input_files/scansar-scansar/1/alos2App.xml @@ -198,6 +198,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 diff --git a/examples/input_files/alos2/example_input_files/scansar-scansar/2/alos2App.xml b/examples/input_files/alos2/example_input_files/scansar-scansar/2/alos2App.xml index e5257ce..7ff6a7b 100644 --- a/examples/input_files/alos2/example_input_files/scansar-scansar/2/alos2App.xml +++ b/examples/input_files/alos2/example_input_files/scansar-scansar/2/alos2App.xml @@ -198,6 +198,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 diff --git a/examples/input_files/alos2/example_input_files/scansar-scansar/3/alos2App.xml b/examples/input_files/alos2/example_input_files/scansar-scansar/3/alos2App.xml index 03fa5a7..56b240b 100644 --- a/examples/input_files/alos2/example_input_files/scansar-scansar/3/alos2App.xml +++ b/examples/input_files/alos2/example_input_files/scansar-scansar/3/alos2App.xml @@ -198,6 +198,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 diff --git a/examples/input_files/alos2/example_input_files/scansar-scansar/4/alos2App.xml b/examples/input_files/alos2/example_input_files/scansar-scansar/4/alos2App.xml index 6ddc679..ea8a3b3 100644 --- a/examples/input_files/alos2/example_input_files/scansar-scansar/4/alos2App.xml +++ b/examples/input_files/alos2/example_input_files/scansar-scansar/4/alos2App.xml @@ -198,6 +198,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 diff --git a/examples/input_files/alos2/example_input_files/scansar-scansar_7s/alos2App.xml b/examples/input_files/alos2/example_input_files/scansar-scansar_7s/alos2App.xml index b412162..e8a4fa2 100644 --- a/examples/input_files/alos2/example_input_files/scansar-scansar_7s/alos2App.xml +++ b/examples/input_files/alos2/example_input_files/scansar-scansar_7s/alos2App.xml @@ -198,6 +198,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 diff --git a/examples/input_files/alos2/example_input_files/scansar-scansar_burst/1/alos2burstApp.xml b/examples/input_files/alos2/example_input_files/scansar-scansar_burst/1/alos2burstApp.xml index 0e7facf..7797043 100644 --- a/examples/input_files/alos2/example_input_files/scansar-scansar_burst/1/alos2burstApp.xml +++ b/examples/input_files/alos2/example_input_files/scansar-scansar_burst/1/alos2burstApp.xml @@ -190,6 +190,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 @@ -265,6 +266,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 diff --git a/examples/input_files/alos2/example_input_files/scansar-scansar_burst/2/alos2burstApp.xml b/examples/input_files/alos2/example_input_files/scansar-scansar_burst/2/alos2burstApp.xml index 73e7074..5887839 100644 --- a/examples/input_files/alos2/example_input_files/scansar-scansar_burst/2/alos2burstApp.xml +++ b/examples/input_files/alos2/example_input_files/scansar-scansar_burst/2/alos2burstApp.xml @@ -190,6 +190,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 @@ -265,6 +266,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 diff --git a/examples/input_files/alos2/example_input_files/scansar-scansar_burst/3/alos2burstApp.xml b/examples/input_files/alos2/example_input_files/scansar-scansar_burst/3/alos2burstApp.xml index 39789d1..4aacb84 100644 --- a/examples/input_files/alos2/example_input_files/scansar-scansar_burst/3/alos2burstApp.xml +++ b/examples/input_files/alos2/example_input_files/scansar-scansar_burst/3/alos2burstApp.xml @@ -190,6 +190,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 @@ -265,6 +266,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 diff --git a/examples/input_files/alos2/example_input_files/scansar-scansar_burst/4/alos2burstApp.xml b/examples/input_files/alos2/example_input_files/scansar-scansar_burst/4/alos2burstApp.xml index c31747a..f6bf48b 100644 --- a/examples/input_files/alos2/example_input_files/scansar-scansar_burst/4/alos2burstApp.xml +++ b/examples/input_files/alos2/example_input_files/scansar-scansar_burst/4/alos2burstApp.xml @@ -190,6 +190,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 @@ -265,6 +266,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 diff --git a/examples/input_files/alos2/example_input_files/scansar-stripmap/1/alos2App.xml b/examples/input_files/alos2/example_input_files/scansar-stripmap/1/alos2App.xml index c483d1d..5a8efae 100644 --- a/examples/input_files/alos2/example_input_files/scansar-stripmap/1/alos2App.xml +++ b/examples/input_files/alos2/example_input_files/scansar-stripmap/1/alos2App.xml @@ -196,6 +196,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 diff --git a/examples/input_files/alos2/example_input_files/scansar-stripmap/2/alos2App.xml b/examples/input_files/alos2/example_input_files/scansar-stripmap/2/alos2App.xml index b8723d2..afc1c03 100644 --- a/examples/input_files/alos2/example_input_files/scansar-stripmap/2/alos2App.xml +++ b/examples/input_files/alos2/example_input_files/scansar-stripmap/2/alos2App.xml @@ -196,6 +196,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 diff --git a/examples/input_files/alos2/example_input_files/stripmap-stripmap/1/alos2App.xml b/examples/input_files/alos2/example_input_files/stripmap-stripmap/1/alos2App.xml index 16f7fcb..53c9682 100644 --- a/examples/input_files/alos2/example_input_files/stripmap-stripmap/1/alos2App.xml +++ b/examples/input_files/alos2/example_input_files/stripmap-stripmap/1/alos2App.xml @@ -196,6 +196,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 diff --git a/examples/input_files/alos2/example_input_files/stripmap-stripmap/2/alos2App.xml b/examples/input_files/alos2/example_input_files/stripmap-stripmap/2/alos2App.xml index 9f1f628..13db56e 100644 --- a/examples/input_files/alos2/example_input_files/stripmap-stripmap/2/alos2App.xml +++ b/examples/input_files/alos2/example_input_files/stripmap-stripmap/2/alos2App.xml @@ -198,6 +198,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 diff --git a/examples/input_files/alos2/example_input_files/stripmap-stripmap/3/alos2App.xml b/examples/input_files/alos2/example_input_files/stripmap-stripmap/3/alos2App.xml index bd4d4c9..0f0e914 100644 --- a/examples/input_files/alos2/example_input_files/stripmap-stripmap/3/alos2App.xml +++ b/examples/input_files/alos2/example_input_files/stripmap-stripmap/3/alos2App.xml @@ -196,6 +196,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 diff --git a/examples/input_files/alos2/example_input_files/stripmap-stripmap/4/alos2App.xml b/examples/input_files/alos2/example_input_files/stripmap-stripmap/4/alos2App.xml index 66ca33b..abf5407 100644 --- a/examples/input_files/alos2/example_input_files/stripmap-stripmap/4/alos2App.xml +++ b/examples/input_files/alos2/example_input_files/stripmap-stripmap/4/alos2App.xml @@ -196,6 +196,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 From f0651a311c767570a42901afe8bdfbf94b3bca13 Mon Sep 17 00:00:00 2001 From: CunrenLiang <56097947+CunrenLiang@users.noreply.github.com> Date: Tue, 12 May 2020 22:35:28 -0700 Subject: [PATCH 4/7] fixed a bug in radar dem matching --- components/isceobj/Alos2Proc/runRdrDemOffset.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/isceobj/Alos2Proc/runRdrDemOffset.py b/components/isceobj/Alos2Proc/runRdrDemOffset.py index c8dd292..c3c210d 100644 --- a/components/isceobj/Alos2Proc/runRdrDemOffset.py +++ b/components/isceobj/Alos2Proc/runRdrDemOffset.py @@ -247,6 +247,8 @@ def runRdrDemOffset(self): self._insar.radarDemAffineTransform = [1.0, 0.0, 0.0, 1.0, 0.0, 0.0] catalog.addItem('warning message', 'too few points left after culling, {} left'.format(numCullOffsets), 'runRdrDemOffset') + os.chdir('../../') + catalog.printToLog(logger, "runRdrDemOffset") self._insar.procDoc.addAllFromCatalog(catalog) From 708593b322cbed3cdcd6d47202323472dcfaa57b Mon Sep 17 00:00:00 2001 From: CunrenLiang <56097947+CunrenLiang@users.noreply.github.com> Date: Wed, 13 May 2020 09:54:54 -0700 Subject: [PATCH 5/7] fixed a bug in radar dem matching --- components/isceobj/Alos2Proc/runRdrDemOffset.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/isceobj/Alos2Proc/runRdrDemOffset.py b/components/isceobj/Alos2Proc/runRdrDemOffset.py index c3c210d..a49838f 100644 --- a/components/isceobj/Alos2Proc/runRdrDemOffset.py +++ b/components/isceobj/Alos2Proc/runRdrDemOffset.py @@ -99,6 +99,8 @@ def runRdrDemOffset(self): self._insar.radarDemAffineTransform = [1.0, 0.0, 0.0, 1.0, 0.0, 0.0] catalog.addItem('warning message', 'land area too small for estimating offsets between radar and dem', 'runRdrDemOffset') + os.chdir('../../') + catalog.printToLog(logger, "runRdrDemOffset") self._insar.procDoc.addAllFromCatalog(catalog) From 84d39786400167059198c71ec8410e7bab868113 Mon Sep 17 00:00:00 2001 From: CunrenLiang <56097947+CunrenLiang@users.noreply.github.com> Date: Wed, 13 May 2020 16:39:41 -0700 Subject: [PATCH 6/7] minor updates --- components/isceobj/Alos2burstProc/runIonSubband.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/components/isceobj/Alos2burstProc/runIonSubband.py b/components/isceobj/Alos2burstProc/runIonSubband.py index f02a781..3bcfcea 100644 --- a/components/isceobj/Alos2burstProc/runIonSubband.py +++ b/components/isceobj/Alos2burstProc/runIonSubband.py @@ -286,12 +286,22 @@ def runIonSubband(self): phaseDiffFixed = [0.0, 0.4754024578084084, 0.9509913179406437, 1.4261648478671614, 2.179664007520499, 2.6766909968024932, 3.130810857] snapThreshold = 0.2 + + #the above preparetions only applies to 'self._insar.modeCombination == 21' + #looks like it also works for 31 (scansarNominalModes-stripmapModes) + if self._insar.modeCombination != 21: + phaseDiff = None + phaseDiffFixed = None + snapThreshold = None + (phaseDiffEst, phaseDiffUsed, phaseDiffSource) = swathMosaic(masterTrack.frames[i], inputInterferograms, self._insar.interferogram, rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, updateFrame=False, phaseCompensation=True, phaseDiff=phaseDiff, phaseDiffFixed=phaseDiffFixed, snapThreshold=snapThreshold, pcRangeLooks=1, pcAzimuthLooks=3, filt=False, resamplingMethod=1) #the first item is meaningless for all the following list, so only record the following items + if phaseDiff == None: + phaseDiff = [None for iii in range(self._insar.startingSwath, self._insar.endingSwath + 1)] catalog.addItem('{} subswath phase difference input'.format(ionDir['subband'][k]), phaseDiff[1:], 'runIonSubband') catalog.addItem('{} subswath phase difference estimated'.format(ionDir['subband'][k]), phaseDiffEst[1:], 'runIonSubband') catalog.addItem('{} subswath phase difference used'.format(ionDir['subband'][k]), phaseDiffUsed[1:], 'runIonSubband') From 1afdeed3c25889aff12572510d038f955e7d2bd3 Mon Sep 17 00:00:00 2001 From: CunrenLiang <56097947+CunrenLiang@users.noreply.github.com> Date: Wed, 13 May 2020 16:40:52 -0700 Subject: [PATCH 7/7] minor updates --- components/isceobj/Alos2Proc/runIonSubband.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/components/isceobj/Alos2Proc/runIonSubband.py b/components/isceobj/Alos2Proc/runIonSubband.py index ce7d16f..71e19fe 100644 --- a/components/isceobj/Alos2Proc/runIonSubband.py +++ b/components/isceobj/Alos2Proc/runIonSubband.py @@ -330,12 +330,22 @@ def runIonSubband(self): phaseDiffFixed = [0.0, 0.4754024578084084, 0.9509913179406437, 1.4261648478671614, 2.179664007520499, 2.6766909968024932, 3.130810857] snapThreshold = 0.2 + + #the above preparetions only applies to 'self._insar.modeCombination == 21' + #looks like it also works for 31 (scansarNominalModes-stripmapModes) + if self._insar.modeCombination != 21: + phaseDiff = None + phaseDiffFixed = None + snapThreshold = None + (phaseDiffEst, phaseDiffUsed, phaseDiffSource) = swathMosaic(masterTrack.frames[i], inputInterferograms, self._insar.interferogram, rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, updateFrame=False, phaseCompensation=True, phaseDiff=phaseDiff, phaseDiffFixed=phaseDiffFixed, snapThreshold=snapThreshold, pcRangeLooks=1, pcAzimuthLooks=4, filt=False, resamplingMethod=1) #the first item is meaningless for all the following list, so only record the following items + if phaseDiff == None: + phaseDiff = [None for iii in range(self._insar.startingSwath, self._insar.endingSwath + 1)] catalog.addItem('{} subswath phase difference input'.format(ionDir['subband'][k]), phaseDiff[1:], 'runIonSubband') catalog.addItem('{} subswath phase difference estimated'.format(ionDir['subband'][k]), phaseDiffEst[1:], 'runIonSubband') catalog.addItem('{} subswath phase difference used'.format(ionDir['subband'][k]), phaseDiffUsed[1:], 'runIonSubband')